karmada/hack/tools/gencomponentdocs/gen_component_docs.go

88 lines
2.7 KiB
Go

package main
import (
"context"
"fmt"
"os"
"github.com/spf13/cobra"
"github.com/spf13/cobra/doc"
agentapp "github.com/karmada-io/karmada/cmd/agent/app"
aaapp "github.com/karmada-io/karmada/cmd/aggregated-apiserver/app"
cmapp "github.com/karmada-io/karmada/cmd/controller-manager/app"
deschapp "github.com/karmada-io/karmada/cmd/descheduler/app"
searchapp "github.com/karmada-io/karmada/cmd/karmada-search/app"
adapterapp "github.com/karmada-io/karmada/cmd/metrics-adapter/app"
estiapp "github.com/karmada-io/karmada/cmd/scheduler-estimator/app"
schapp "github.com/karmada-io/karmada/cmd/scheduler/app"
webhookapp "github.com/karmada-io/karmada/cmd/webhook/app"
"github.com/karmada-io/karmada/pkg/util/lifted"
)
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 := lifted.OutDir(path)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err)
os.Exit(1)
}
var cmd *cobra.Command
switch module {
case "karmada-controller-manager":
// generate docs for karmada-controller-manager
cmd = cmapp.NewControllerManagerCommand(context.TODO())
case "karmada-scheduler":
// generate docs for karmada-scheduler
cmd = schapp.NewSchedulerCommand(nil)
case "karmada-agent":
// generate docs for karmada-agent
cmd = agentapp.NewAgentCommand(context.TODO())
case "karmada-aggregated-apiserver":
// generate docs for karmada-aggregated-apiserver
cmd = aaapp.NewAggregatedApiserverCommand(context.TODO())
case "karmada-descheduler":
// generate docs for karmada-descheduler
cmd = deschapp.NewDeschedulerCommand(nil)
case "karmada-search":
// generate docs for karmada-search
cmd = searchapp.NewKarmadaSearchCommand(context.TODO())
case "karmada-scheduler-estimator":
// generate docs for karmada-scheduler-estimator
cmd = estiapp.NewSchedulerEstimatorCommand(context.TODO())
case "karmada-webhook":
// generate docs for karmada-webhook
cmd = webhookapp.NewWebhookCommand(context.TODO())
case "karmada-metrics-adapter":
// generate docs for karmada-metrics-adapter
cmd = adapterapp.NewMetricsAdapterCommand(context.TODO())
default:
fmt.Fprintf(os.Stderr, "Module %s is not supported", module)
os.Exit(1)
}
cmd.DisableAutoGenTag = true
err = doc.GenMarkdownTree(cmd, outDir)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to generate docs: %v\n", err)
os.Exit(1)
}
err = MarkdownPostProcessing(cmd, outDir, cleanupForInclude)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to cleanup docs: %v\n", err)
os.Exit(1)
}
}