fix: restore inline navigation in docs-generator writers.go
This commit is contained in:
@@ -22,18 +22,27 @@ var CloudOutputByServiceID = map[int]types.CloudOutputSnapshot{}
|
|||||||
func ResourceDocs(docsDir string, spec types.ServiceSpec, version string, apiEndpoint string, providerSource string) {
|
func ResourceDocs(docsDir string, spec types.ServiceSpec, version string, apiEndpoint string, providerSource string) {
|
||||||
base := spec.Name
|
base := spec.Name
|
||||||
|
|
||||||
WriteFile(filepath.Join(docsDir, base+".md"), buildManualPage(spec))
|
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)
|
||||||
WriteFile(filepath.Join(docsDir, base+"_example.md"), buildExamplePage(spec, version, apiEndpoint, providerSource))
|
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)
|
||||||
WriteFile(filepath.Join(docsDir, base+"_params_create.md"), buildCreateParamsPage(spec))
|
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)
|
||||||
WriteFile(filepath.Join(docsDir, base+"_params_modify.md"), buildModifyParamsPage(spec))
|
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)
|
||||||
WriteFile(filepath.Join(docsDir, base+"_outputs.md"), buildOutputsPage(spec))
|
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)
|
||||||
WriteFile(filepath.Join(docsDir, base+"_ops.md"), buildOpsPage(spec, docsDir))
|
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+"_params.md"), buildParamsLandingPage(spec))
|
|
||||||
|
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))
|
||||||
|
|
||||||
for _, srName := range CollectSubresources(spec) {
|
for _, srName := range CollectSubresources(spec) {
|
||||||
srBase := fmt.Sprintf("%s_%s", base, Slug(srName))
|
srBase := fmt.Sprintf("%s_%s", base, Slug(srName))
|
||||||
WriteFile(filepath.Join(docsDir, srBase+".md"), buildSubresourcePage(spec, srName))
|
srNav := fmt.Sprintf("[%s (основной)](%s.md) | [Operations](%s_ops.md) | [%s](%s.md) | [Example](%s_example.md)",
|
||||||
WriteFile(filepath.Join(docsDir, srBase+"_example.md"), buildSubresourceExamplePage(spec, srName, version, apiEndpoint, providerSource))
|
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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,17 +123,17 @@ func FindSubresourceParams(ops []types.OperationSpec, srName, action string) []t
|
|||||||
|
|
||||||
// ===== internal helpers =====
|
// ===== internal helpers =====
|
||||||
|
|
||||||
func buildHeader(spec types.ServiceSpec) string {
|
func buildHeader(spec types.ServiceSpec, nav string) string {
|
||||||
name := spec.ServiceDisplayName
|
name := spec.ServiceDisplayName
|
||||||
if name == "" {
|
if name == "" {
|
||||||
name = spec.Name
|
name = spec.Name
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("# Resource nubes_%s · Service ID: %d · Service Name: %s\n\n", spec.Name, spec.ServiceID, name)
|
return fmt.Sprintf("# Resource nubes_%s · Service ID: %d · Service Name: %s\n\n%s\n\n", spec.Name, spec.ServiceID, name, nav)
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildManualPage(spec types.ServiceSpec) string {
|
func buildManualPage(spec types.ServiceSpec, nav string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString("## MAN\n\n")
|
b.WriteString("## MAN\n\n")
|
||||||
man := strings.TrimSpace(spec.ServiceMan)
|
man := strings.TrimSpace(spec.ServiceMan)
|
||||||
if man == "" {
|
if man == "" {
|
||||||
@@ -175,9 +184,9 @@ func htmlToMarkdown(s string) string {
|
|||||||
return strings.TrimSpace(s)
|
return strings.TrimSpace(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildExamplePage(spec types.ServiceSpec, version string, apiEndpoint string, providerSource string) string {
|
func buildExamplePage(spec types.ServiceSpec, nav string, version string, apiEndpoint string, providerSource string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString(fmt.Sprintf("## Minimal example — only required parameters\n\n"))
|
b.WriteString(fmt.Sprintf("## Minimal example — only required parameters\n\n"))
|
||||||
b.WriteString("```hcl\n")
|
b.WriteString("```hcl\n")
|
||||||
b.WriteString(minimalExampleBlock(spec, version, apiEndpoint, providerSource))
|
b.WriteString(minimalExampleBlock(spec, version, apiEndpoint, providerSource))
|
||||||
@@ -272,9 +281,9 @@ func minimalExampleBlock(spec types.ServiceSpec, version string, apiEndpoint str
|
|||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildCreateParamsPage(spec types.ServiceSpec) string {
|
func buildCreateParamsPage(spec types.ServiceSpec, nav string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString("## Create params\n\n")
|
b.WriteString("## Create params\n\n")
|
||||||
createParams := FindParams(spec.Operations, "create")
|
createParams := FindParams(spec.Operations, "create")
|
||||||
requiredParams, defaultParams := SplitParams(createParams)
|
requiredParams, defaultParams := SplitParams(createParams)
|
||||||
@@ -313,18 +322,18 @@ func buildCreateParamsPage(spec types.ServiceSpec) string {
|
|||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildModifyParamsPage(spec types.ServiceSpec) string {
|
func buildModifyParamsPage(spec types.ServiceSpec, nav string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString("## Modify params\n\n")
|
b.WriteString("## Modify params\n\n")
|
||||||
modifyParams := FindParams(spec.Operations, "modify")
|
modifyParams := FindParams(spec.Operations, "modify")
|
||||||
b.WriteString(renderModifyTable(modifyParams))
|
b.WriteString(renderModifyTable(modifyParams))
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildOutputsPage(spec types.ServiceSpec) string {
|
func buildOutputsPage(spec types.ServiceSpec, nav string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString("## Output params\n\n")
|
b.WriteString("## Output params\n\n")
|
||||||
if len(spec.Outputs.Params) == 0 {
|
if len(spec.Outputs.Params) == 0 {
|
||||||
b.WriteString("None.\n")
|
b.WriteString("None.\n")
|
||||||
@@ -397,9 +406,9 @@ func containsString(values []string, target string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildOpsPage(spec types.ServiceSpec, docsDir string) string {
|
func buildOpsPage(spec types.ServiceSpec, nav string, docsDir string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString("## Operations\n\n")
|
b.WriteString("## Operations\n\n")
|
||||||
for _, op := range spec.Operations {
|
for _, op := range spec.Operations {
|
||||||
name := op.Name
|
name := op.Name
|
||||||
@@ -445,16 +454,16 @@ func buildOpsPage(spec types.ServiceSpec, docsDir string) string {
|
|||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildParamsLandingPage(spec types.ServiceSpec) string {
|
func buildParamsLandingPage(spec types.ServiceSpec, nav string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
b.WriteString(buildHeader(spec))
|
b.WriteString(buildHeader(spec, nav))
|
||||||
b.WriteString("## Parameters\n\n")
|
b.WriteString("## Parameters\n\n")
|
||||||
b.WriteString(fmt.Sprintf("- [Create params](%s_params_create.md)\n", spec.Name))
|
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))
|
b.WriteString(fmt.Sprintf("- [Modify params](%s_params_modify.md)\n", spec.Name))
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildSubresourcePage(spec types.ServiceSpec, srName string) string {
|
func buildSubresourcePage(spec types.ServiceSpec, srName string, nav string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
srResourceName := fmt.Sprintf("nubes_%s_%s", spec.Name, Slug(srName))
|
srResourceName := fmt.Sprintf("nubes_%s_%s", spec.Name, Slug(srName))
|
||||||
b.WriteString(fmt.Sprintf("# Resource %s\n\n", srResourceName))
|
b.WriteString(fmt.Sprintf("# Resource %s\n\n", srResourceName))
|
||||||
@@ -491,7 +500,7 @@ func buildSubresourcePage(spec types.ServiceSpec, srName string) string {
|
|||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildSubresourceExamplePage(spec types.ServiceSpec, srName string, version string, apiEndpoint string, providerSource string) string {
|
func buildSubresourceExamplePage(spec types.ServiceSpec, srName string, nav string, version string, apiEndpoint string, providerSource string) string {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
srResourceName := fmt.Sprintf("nubes_%s_%s", spec.Name, Slug(srName))
|
srResourceName := fmt.Sprintf("nubes_%s_%s", spec.Name, Slug(srName))
|
||||||
b.WriteString(fmt.Sprintf("# Resource %s — Example\n\n", srResourceName))
|
b.WriteString(fmt.Sprintf("# Resource %s — Example\n\n", srResourceName))
|
||||||
|
|||||||
Reference in New Issue
Block a user