scripts/generate-docs/main.go (66 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.
package main
import (
"flag"
"log"
"os"
"strings"
"github.com/pkg/errors"
)
type generateOptions struct {
docTemplatesDir string
packages string
packagesSourceDir string
customDocDir string
}
func (o *generateOptions) validate() error {
_, err := os.Stat(o.packagesSourceDir)
if err != nil {
return errors.Wrapf(err, "stat file failed for packages directory (path: %s)", o.packagesSourceDir)
}
_, err = os.Stat(o.docTemplatesDir)
if err != nil {
return errors.Wrapf(err, "stat file failed for doc templates (path: %s)", o.docTemplatesDir)
}
return nil
}
func (o *generateOptions) selectedPackages() []string {
var selected []string
p := strings.TrimSpace(o.packages)
if len(p) > 0 {
selected = strings.Split(p, ",")
}
return selected
}
func main() {
var options generateOptions
flag.StringVar(&options.docTemplatesDir, "templates", "./doc_templates", "Path to the README templates directory")
flag.StringVar(&options.packages, "packages", "endpoint", "Packages selected for generating docs")
flag.StringVar(&options.packagesSourceDir, "sourceDir", "./package", "Path to the packages directory")
flag.StringVar(&options.customDocDir, "customDocDir", "./custom_documentation", "Path to the custom_documentation directory")
flag.Parse()
err := options.validate()
if err != nil {
log.Fatal(errors.Wrap(err, "command options validation failed"))
}
err = generateDocs(options)
if err != nil {
log.Fatal(errors.Wrap(err, "generating docs failed"))
}
}
func generateDocs(options generateOptions) error {
packages, err := listPackages(options)
if err != nil {
return errors.Wrap(err, "listing packages failed")
}
for _, packageName := range packages {
err = renderCustomDocumentation(options, packageName)
if err != nil {
return errors.Wrapf(err, "rendering custom documentation failed (packageName: %s)", packageName)
}
err = renderReadme(options, packageName)
if err != nil {
return errors.Wrapf(err, "rendering README file failed (packageName: %s)", packageName)
}
}
return nil
}