tooling/pipeline-documentation/main.go (56 lines of code) (raw):

// Copyright 2025 Microsoft Corporation // // 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 ( "context" "log/slog" "os" "os/signal" "syscall" "github.com/go-logr/logr" "github.com/spf13/cobra" "github.com/dusted-go/logging/prettylog" "github.com/Azure/ARO-HCP/tooling/pipeline-documentation/cmd/overview" ) func main() { logger := createLogger(0) // Create a root context with the logger and signal handling ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer stop() var logVerbosity int cmd := &cobra.Command{ Use: "document", Short: "document", Long: "document", SilenceUsage: true, TraverseChildren: true, PersistentPreRun: func(cmd *cobra.Command, args []string) { ctx = logr.NewContext(ctx, createLogger(logVerbosity)) cmd.SetContext(ctx) }, CompletionOptions: cobra.CompletionOptions{ HiddenDefaultCmd: true, }, } cmd.PersistentFlags().IntVarP(&logVerbosity, "verbosity", "v", 0, "set the verbosity level") commands := []func() (*cobra.Command, error){ overview.NewCommand, } for _, newCmd := range commands { c, err := newCmd() if err != nil { logger.Error(err, "failed to create command", "command", newCmd) } cmd.AddCommand(c) } cmd.SetHelpCommand(&cobra.Command{Hidden: true}) if err := cmd.Execute(); err != nil { logger.Error(err, "command failed") os.Exit(1) } } func createLogger(verbosity int) logr.Logger { prettyHandler := prettylog.NewHandler(&slog.HandlerOptions{ Level: slog.Level(verbosity * -1), AddSource: false, ReplaceAttr: nil, }) return logr.FromSlogHandler(prettyHandler) }