mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-04-21 10:18:21 -05:00
Merge pull request #5903 from kobergj/AutomateMDCreation
Automate Creation of `_index.md` Files
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: {{ .ServiceName }}
|
||||
date: {{ .CreationTime }}
|
||||
weight: 20
|
||||
geekdocRepo: https://github.com/owncloud/ocis
|
||||
geekdocEditPath: edit/master/docs/services/{{ .service }}
|
||||
geekdocFilePath: _index.md
|
||||
geekdocCollapseSection: true
|
||||
---
|
||||
|
||||
## Abstract
|
||||
|
||||
{{ .Abstract }}
|
||||
## Table of Contents
|
||||
|
||||
{{ .TocTree }}
|
||||
{{ .Content }}
|
||||
@@ -4,4 +4,5 @@ func main() {
|
||||
RenderTemplates()
|
||||
GetRogueEnvs()
|
||||
RenderGlobalVarsTemplate()
|
||||
GenerateServiceIndexMarkdowns()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"text/template"
|
||||
"time"
|
||||
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/markdown"
|
||||
)
|
||||
|
||||
var _configMarkdown = `{{< include file="services/_includes/%s-config-example.yaml" language="yaml" >}}
|
||||
|
||||
{{< include file="services/_includes/%s_configvars.md" >}}
|
||||
`
|
||||
|
||||
// GenerateServiceIndexMarkdowns generates the _index.md files for the dev docu
|
||||
func GenerateServiceIndexMarkdowns() {
|
||||
paths, err := filepath.Glob("../../services/*/README.md")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, p := range paths {
|
||||
service := filepath.Base(filepath.Dir(p))
|
||||
if err := generateMarkdown(p, service); err != nil {
|
||||
fmt.Printf("error generating markdown for %s: %s\n", service, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func generateMarkdown(filepath string, servicename string) error {
|
||||
f, err := os.ReadFile(filepath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
md := markdown.NewMD(f)
|
||||
if len(md.Headings) == 0 || md.Headings[0].Level != 1 {
|
||||
return errors.New("readme has invalid format")
|
||||
}
|
||||
|
||||
// we don't need the main title, we add in our template
|
||||
head := md.Headings[0]
|
||||
md.Headings = md.Headings[1:]
|
||||
md.Headings = append(md.Headings, markdown.Heading{
|
||||
Level: 2,
|
||||
Header: "Example Yaml Config",
|
||||
Content: fmt.Sprintf(_configMarkdown, servicename, servicename),
|
||||
})
|
||||
|
||||
tpl := template.Must(template.ParseFiles("index.tmpl"))
|
||||
b := bytes.NewBuffer(nil)
|
||||
if err := tpl.Execute(b, map[string]interface{}{
|
||||
"ServiceName": head.Header,
|
||||
"CreationTime": time.Now().Format(time.RFC3339Nano),
|
||||
"service": servicename,
|
||||
"Abstract": head.Content,
|
||||
"TocTree": md.TocString(),
|
||||
"Content": md.String(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
targetFile := fmt.Sprintf("../../docs/services/%s/_index.md", servicename)
|
||||
return os.WriteFile(targetFile, b.Bytes(), os.ModePerm)
|
||||
}
|
||||
Reference in New Issue
Block a user