|
|
|
@@ -22,27 +22,18 @@ var CloudOutputByServiceID = map[int]types.CloudOutputSnapshot{}
|
|
|
|
|
func ResourceDocs(docsDir string, spec types.ServiceSpec, version string, apiEndpoint string, providerSource string) {
|
|
|
|
|
base := spec.Name
|
|
|
|
|
|
|
|
|
|
navManual := fmt.Sprintf("**Manual** · [Create params](%s_params_create.md) · [Modify params](%s_params_modify.md) · [Output params](%s_outputs.md) · [Operations](%s_ops.md) · [Example](%s_example.md)", base, base, base, base, base)
|
|
|
|
|
navCreate := fmt.Sprintf("[Manual](%s.md) · **Create params** · [Modify params](%s_params_modify.md) · [Output params](%s_outputs.md) · [Operations](%s_ops.md) · [Example](%s_example.md)", base, base, base, base, base)
|
|
|
|
|
navModify := fmt.Sprintf("[Manual](%s.md) · [Create params](%s_params_create.md) · **Modify params** · [Output params](%s_outputs.md) · [Operations](%s_ops.md) · [Example](%s_example.md)", base, base, base, base, base)
|
|
|
|
|
navOutputs := fmt.Sprintf("[Manual](%s.md) · [Create params](%s_params_create.md) · [Modify params](%s_params_modify.md) · **Output params** · [Operations](%s_ops.md) · [Example](%s_example.md)", base, base, base, base, base)
|
|
|
|
|
navOps := fmt.Sprintf("[Manual](%s.md) · [Create params](%s_params_create.md) · [Modify params](%s_params_modify.md) · [Output params](%s_outputs.md) · **Operations** · [Example](%s_example.md)", base, base, base, base, base)
|
|
|
|
|
navExample := fmt.Sprintf("[Manual](%s.md) · [Create params](%s_params_create.md) · [Modify params](%s_params_modify.md) · [Output params](%s_outputs.md) · [Operations](%s_ops.md) · **Example**", base, base, base, base, base)
|
|
|
|
|
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+".md"), buildManualPage(spec, navManual))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_example.md"), buildExamplePage(spec, navExample, version, apiEndpoint, providerSource))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_params_create.md"), buildCreateParamsPage(spec, navCreate))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_params_modify.md"), buildModifyParamsPage(spec, navModify))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_outputs.md"), buildOutputsPage(spec, navOutputs))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_ops.md"), buildOpsPage(spec, navOps, docsDir))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_params.md"), buildParamsLandingPage(spec, navManual))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+".md"), buildManualPage(spec))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_example.md"), buildExamplePage(spec, version, apiEndpoint, providerSource))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_params_create.md"), buildCreateParamsPage(spec))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_params_modify.md"), buildModifyParamsPage(spec))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_outputs.md"), buildOutputsPage(spec))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_ops.md"), buildOpsPage(spec, docsDir))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, base+"_params.md"), buildParamsLandingPage(spec))
|
|
|
|
|
|
|
|
|
|
for _, srName := range CollectSubresources(spec) {
|
|
|
|
|
srBase := fmt.Sprintf("%s_%s", base, Slug(srName))
|
|
|
|
|
srNav := fmt.Sprintf("[%s (основной)](%s.md) | [Operations](%s_ops.md) | [%s](%s.md) | [Example](%s_example.md)",
|
|
|
|
|
spec.ServiceDisplayName, base, base, Capitalize(srName), srBase, srBase)
|
|
|
|
|
WriteFile(filepath.Join(docsDir, srBase+".md"), buildSubresourcePage(spec, srName, srNav))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, srBase+"_example.md"), buildSubresourceExamplePage(spec, srName, srNav, version, apiEndpoint, providerSource))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, srBase+".md"), buildSubresourcePage(spec, srName))
|
|
|
|
|
WriteFile(filepath.Join(docsDir, srBase+"_example.md"), buildSubresourceExamplePage(spec, srName, version, apiEndpoint, providerSource))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -123,17 +114,17 @@ func FindSubresourceParams(ops []types.OperationSpec, srName, action string) []t
|
|
|
|
|
|
|
|
|
|
// ===== internal helpers =====
|
|
|
|
|
|
|
|
|
|
func buildHeader(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
func buildHeader(spec types.ServiceSpec) string {
|
|
|
|
|
name := spec.ServiceDisplayName
|
|
|
|
|
if name == "" {
|
|
|
|
|
name = spec.Name
|
|
|
|
|
}
|
|
|
|
|
return fmt.Sprintf("# Resource nubes_%s · Service ID: %d · Service Name: %s\n\n%s\n\n", spec.Name, spec.ServiceID, name, nav)
|
|
|
|
|
return fmt.Sprintf("# Resource nubes_%s · Service ID: %d · Service Name: %s\n\n", spec.Name, spec.ServiceID, name)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildManualPage(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
func buildManualPage(spec types.ServiceSpec) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString("## MAN\n\n")
|
|
|
|
|
man := strings.TrimSpace(spec.ServiceMan)
|
|
|
|
|
if man == "" {
|
|
|
|
@@ -184,9 +175,9 @@ func htmlToMarkdown(s string) string {
|
|
|
|
|
return strings.TrimSpace(s)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildExamplePage(spec types.ServiceSpec, nav, version string, apiEndpoint string, providerSource string) string {
|
|
|
|
|
func buildExamplePage(spec types.ServiceSpec, version string, apiEndpoint string, providerSource string) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString(fmt.Sprintf("## Minimal example — only required parameters\n\n"))
|
|
|
|
|
b.WriteString("```hcl\n")
|
|
|
|
|
b.WriteString(minimalExampleBlock(spec, version, apiEndpoint, providerSource))
|
|
|
|
@@ -281,9 +272,9 @@ func minimalExampleBlock(spec types.ServiceSpec, version string, apiEndpoint str
|
|
|
|
|
return b.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildCreateParamsPage(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
func buildCreateParamsPage(spec types.ServiceSpec) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString("## Create params\n\n")
|
|
|
|
|
createParams := FindParams(spec.Operations, "create")
|
|
|
|
|
requiredParams, defaultParams := SplitParams(createParams)
|
|
|
|
@@ -322,18 +313,18 @@ func buildCreateParamsPage(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
return b.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildModifyParamsPage(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
func buildModifyParamsPage(spec types.ServiceSpec) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString("## Modify params\n\n")
|
|
|
|
|
modifyParams := FindParams(spec.Operations, "modify")
|
|
|
|
|
b.WriteString(renderModifyTable(modifyParams))
|
|
|
|
|
return b.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildOutputsPage(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
func buildOutputsPage(spec types.ServiceSpec) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString("## Output params\n\n")
|
|
|
|
|
if len(spec.Outputs.Params) == 0 {
|
|
|
|
|
b.WriteString("None.\n")
|
|
|
|
@@ -406,9 +397,9 @@ func containsString(values []string, target string) bool {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildOpsPage(spec types.ServiceSpec, nav, docsDir string) string {
|
|
|
|
|
func buildOpsPage(spec types.ServiceSpec, docsDir string) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString("## Operations\n\n")
|
|
|
|
|
for _, op := range spec.Operations {
|
|
|
|
|
name := op.Name
|
|
|
|
@@ -454,21 +445,20 @@ func buildOpsPage(spec types.ServiceSpec, nav, docsDir string) string {
|
|
|
|
|
return b.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildParamsLandingPage(spec types.ServiceSpec, nav string) string {
|
|
|
|
|
func buildParamsLandingPage(spec types.ServiceSpec) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
b.WriteString(buildHeader(spec, nav))
|
|
|
|
|
b.WriteString(buildHeader(spec))
|
|
|
|
|
b.WriteString("## Parameters\n\n")
|
|
|
|
|
b.WriteString(fmt.Sprintf("- [Create params](%s_params_create.md)\n", spec.Name))
|
|
|
|
|
b.WriteString(fmt.Sprintf("- [Modify params](%s_params_modify.md)\n", spec.Name))
|
|
|
|
|
return b.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildSubresourcePage(spec types.ServiceSpec, srName string, nav string) string {
|
|
|
|
|
func buildSubresourcePage(spec types.ServiceSpec, srName string) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
srResourceName := fmt.Sprintf("nubes_%s_%s", spec.Name, Slug(srName))
|
|
|
|
|
b.WriteString(fmt.Sprintf("# Resource %s\n\n", srResourceName))
|
|
|
|
|
b.WriteString(fmt.Sprintf("Service: `nubes_%s` (ID: %d)\n\n", spec.Name, spec.ServiceID))
|
|
|
|
|
b.WriteString(nav + "\n\n")
|
|
|
|
|
|
|
|
|
|
createParams := FindSubresourceParams(spec.Operations, srName, "create")
|
|
|
|
|
b.WriteString("## Create params\n\n")
|
|
|
|
@@ -501,12 +491,11 @@ func buildSubresourcePage(spec types.ServiceSpec, srName string, nav string) str
|
|
|
|
|
return b.String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildSubresourceExamplePage(spec types.ServiceSpec, srName string, nav string, version string, apiEndpoint string, providerSource string) string {
|
|
|
|
|
func buildSubresourceExamplePage(spec types.ServiceSpec, srName string, version string, apiEndpoint string, providerSource string) string {
|
|
|
|
|
var b strings.Builder
|
|
|
|
|
srResourceName := fmt.Sprintf("nubes_%s_%s", spec.Name, Slug(srName))
|
|
|
|
|
b.WriteString(fmt.Sprintf("# Resource %s — Example\n\n", srResourceName))
|
|
|
|
|
b.WriteString(fmt.Sprintf("Service: `nubes_%s` (ID: %d)\n\n", spec.Name, spec.ServiceID))
|
|
|
|
|
b.WriteString(nav + "\n\n")
|
|
|
|
|
b.WriteString(fmt.Sprintf("## Copy-ready manifest (`%s_%s_main.tf`)\n\n", spec.Name, Slug(srName)))
|
|
|
|
|
b.WriteString("```hcl\n")
|
|
|
|
|
|
|
|
|
|