func main() { // use os.Args instead of "flags" because "flags" will mess up the man pages! path := "" module := "" if len(os.Args) == 3 { path = os.Args[1] module = os.Args[2] } else { fmt.Fprintf(os.Stderr, "usage: %s [output directory] [module] \n", os.Args[0]) os.Exit(1) } outDir, err := genutils.OutDir(path) if err != nil { fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err) os.Exit(1) } switch module { case "kube-apiserver": // generate docs for kube-apiserver apiserver := apiservapp.NewAPIServerCommand() cobra.GenMarkdownTree(apiserver, outDir) case "kube-controller-manager": // generate docs for kube-controller-manager controllermanager := cmapp.NewControllerManagerCommand() cobra.GenMarkdownTree(controllermanager, outDir) case "kube-proxy": // generate docs for kube-proxy proxy := proxyapp.NewProxyCommand() cobra.GenMarkdownTree(proxy, outDir) case "kube-scheduler": // generate docs for kube-scheduler scheduler := schapp.NewSchedulerCommand() cobra.GenMarkdownTree(scheduler, outDir) case "kubelet": // generate docs for kubelet kubelet := klapp.NewKubeletCommand() cobra.GenMarkdownTree(kubelet, outDir) default: fmt.Fprintf(os.Stderr, "Module %s is not supported", module) os.Exit(1) } }
func generateDocs(c *cobra.Command, args []string) { if len(args) != 1 { if err := c.Usage(); err != nil { logger.WithField(`error`, err).Fatalln(`Failed to print usage`) } fmt.Println() logger.Fatalln(`Missing output path`) } path := args[0] if path[len(path)-1] != os.PathSeparator { path += string(os.PathSeparator) } cobra.GenMarkdownTree(app, path) }
func main() { // use os.Args instead of "flags" because "flags" will mess up the man pages! path := "docs/" if len(os.Args) == 2 { path = os.Args[1] } else if len(os.Args) > 2 { fmt.Fprintf(os.Stderr, "usage: %s [output directory]\n", os.Args[0]) os.Exit(1) } outDir, err := genutils.OutDir(path) if err != nil { fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err) os.Exit(1) } // Set environment variables used by qingctl so the output is consistent, // regardless of where we run. os.Setenv("HOME", "/home/username") //TODO os.Stdin should really be something like ioutil.Discard, but a Reader qingctl := cmd.NewQingctlCommand(cmdutil.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard) cobra.GenMarkdownTree(qingctl, outDir) }