Add build tools to generate SIGME docs
This commit is contained in:
parent
2192dbd930
commit
ff667b8609
|
@ -0,0 +1 @@
|
||||||
|
FROM golang:1.6-onbuild
|
|
@ -0,0 +1,19 @@
|
||||||
|
# SIG Doc builder
|
||||||
|
|
||||||
|
This script will generate the following documentation files:
|
||||||
|
|
||||||
|
```
|
||||||
|
sig-*/README.md
|
||||||
|
sig-list.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Based off the `sigs.yaml` metadata file.
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
|
||||||
|
To (re)build documentation for all the SIGs, run these commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t sigdocs -f build/Dockerfile build
|
||||||
|
docker run -v $(pwd):/go/src/app sigdocs
|
||||||
|
```
|
|
@ -0,0 +1,139 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/cbroglie/mustache"
|
||||||
|
"gopkg.in/yaml.v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
sigsYamlFile = "sigs.yaml"
|
||||||
|
templateDir = "build"
|
||||||
|
indexTemplate = fmt.Sprintf("%s/sig_index.mustache", templateDir)
|
||||||
|
listTemplate = fmt.Sprintf("%s/sig_list.mustache", templateDir)
|
||||||
|
sigListOutput = "sig-list.md"
|
||||||
|
sigIndexOutput = "README.md"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Lead struct {
|
||||||
|
Name string
|
||||||
|
Company string
|
||||||
|
GitHub string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Meeting struct {
|
||||||
|
Day string
|
||||||
|
UTC string
|
||||||
|
PST string
|
||||||
|
Frequency string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Contact struct {
|
||||||
|
Slack string
|
||||||
|
MailingList string `yaml:"mailing_list"`
|
||||||
|
GitHubTeam string `yaml:"github_team"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sig struct {
|
||||||
|
Name string
|
||||||
|
Dir string
|
||||||
|
MissionStatement string `yaml:"mission_statement"`
|
||||||
|
Leads []Lead
|
||||||
|
Meetings []Meeting
|
||||||
|
MeetingURL string `yaml:"meeting_url"`
|
||||||
|
MeetingArchiveURL string `yaml:"meeting_archive_url"`
|
||||||
|
Contact Contact
|
||||||
|
}
|
||||||
|
|
||||||
|
type SigEntries struct {
|
||||||
|
Sigs []Sig
|
||||||
|
}
|
||||||
|
|
||||||
|
func dirExists(path string) (bool, error) {
|
||||||
|
_, err := os.Stat(path)
|
||||||
|
if err == nil {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return true, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func createReadmeFiles(ctx SigEntries) error {
|
||||||
|
template, err := mustache.ParseFile(indexTemplate)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sig := range ctx.Sigs {
|
||||||
|
data, err := template.Render(sig)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
exists, err := dirExists(sig.Dir)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
err = os.Mkdir(sig.Dir, 0755)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ioutil.WriteFile(fmt.Sprintf("%s/%s", sig.Dir, sigIndexOutput), []byte(data), 0644)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func createListFile(ctx SigEntries) error {
|
||||||
|
template, err := mustache.ParseFile(listTemplate)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := template.Render(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ioutil.WriteFile(sigListOutput, []byte(data), 0644)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
yamlData, err := ioutil.ReadFile(sigsYamlFile)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var ctx SigEntries
|
||||||
|
err = yaml.Unmarshal(yamlData, &ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = createReadmeFiles(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = createListFile(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
# {{Name}} SIG
|
||||||
|
|
||||||
|
{{MissionStatement}}
|
||||||
|
## Meetings
|
||||||
|
{{#Meetings}}
|
||||||
|
- [{{Day}}s at {{UTC}} UTC]({{MeetingURL}}) ({{Frequency}})
|
||||||
|
{{/Meetings}}
|
||||||
|
Meeting notes and Agenda can be found [here]({{MeetingArchiveURL}}).
|
||||||
|
|
||||||
|
## Leads
|
||||||
|
{{#Leads}}
|
||||||
|
- [{{Name}}](https://github.com/{{GitHub}}){{#Company}}, {{Company}}{{/Company}}
|
||||||
|
{{/Leads}}
|
||||||
|
## Contact
|
||||||
|
{{#Contact}}
|
||||||
|
Slack: https://kubernetes.slack.com/messages/{{Slack}}
|
||||||
|
Mailing list: {{MailingList}}
|
||||||
|
{{#GitHubTeam}}GitHub Team: https://github.com/kubernetes/teams/{{GitHubTeam}}{{/GitHubTeam}}
|
||||||
|
{{/Contact}}
|
|
@ -0,0 +1,19 @@
|
||||||
|
# SIGs and Working Groups
|
||||||
|
|
||||||
|
Most community activity is organized into Special Interest Groups (SIGs),
|
||||||
|
time bounded Working Groups, and the [community meeting](communication.md#Meeting).
|
||||||
|
|
||||||
|
SIGs follow these [guidelines](governance.md) although each of these groups may operate a little differently
|
||||||
|
depending on their needs and workflow.
|
||||||
|
|
||||||
|
Each group's material is in its subdirectory in this project.
|
||||||
|
|
||||||
|
When the need arises, a [new SIG can be created](sig-creation-procedure.md)
|
||||||
|
|
||||||
|
### Master SIG List
|
||||||
|
|
||||||
|
| Name | Leads | Contact | Meetings |
|
||||||
|
|------|-------|---------|----------|
|
||||||
|
{{#Sigs}}
|
||||||
|
|[{{ Name }}]({{ Dir }}/README.md)|{{#Leads}}- [{{Name}}](https://github.com/{{GitHub}}){{#Company}}, {{Company}}{{/Company}}<br>{{/Leads}}|{{#Contact}}- [Slack](https://kubernetes.slack.com/messages/{{Slack}})<br>- [Mailing List]({{MailingList}}){{/Contact}}|{{#Meetings}}- [{{Day}}s at {{UTC}} UTC ({{Frequency}})]({{MeetingURL}})<br>{{/Meetings}}
|
||||||
|
{{/Sigs}}
|
Loading…
Reference in New Issue