client/hack/generate-docs.go

80 lines
1.8 KiB
Go

// Copyright © 2018 The Knative Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"strconv"
"strings"
"github.com/spf13/cobra/doc"
"knative.dev/client/pkg/kn/root"
)
func main() {
rootCmd, err := root.NewRootCommand(nil)
if err != nil {
log.Panicf("can not create root command: %v", err)
}
dir := "."
if len(os.Args) > 1 {
dir = os.Args[1]
}
var withFrontMatter bool
if len(os.Args) > 2 {
withFrontMatter, err = strconv.ParseBool(os.Args[2])
if err != nil {
log.Panicf("invalid argument %s, has to be boolean to switch on/off generation of frontmatter (%v)", os.Args[2], err)
}
}
prependFunc := emptyString
if withFrontMatter {
prependFunc = addFrontMatter
}
err = doc.GenMarkdownTreeCustom(rootCmd, dir+"/docs/cmd/", prependFunc, identity)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func emptyString(filename string) string {
return ""
}
func addFrontMatter(fileName string) string {
// Convert to a title
title := filepath.Base(fileName)
title = title[0 : len(title)-len(filepath.Ext(title))]
title = strings.ReplaceAll(title, "_", " ")
ret := `
---
title: "%s"
#linkTitle: "OPTIONAL_ALTERNATE_NAV_TITLE"
weight: 5
type: "docs"
---
`
return fmt.Sprintf(ret, title)
}
func identity(s string) string {
return s
}