@@ -17,6 +17,8 @@ package librarian
1717import (
1818 "context"
1919 "fmt"
20+ "log/slog"
21+ "os"
2022
2123 "github.com/googleapis/librarian/internal/cli"
2224)
@@ -27,6 +29,16 @@ func Run(ctx context.Context, arg ...string) error {
2729 return cmd .Run (ctx , arg )
2830}
2931
32+ func setupLogger (verbose bool ) {
33+ level := slog .LevelInfo
34+ if verbose {
35+ level = slog .LevelDebug
36+ }
37+ opts := & slog.HandlerOptions {Level : level }
38+ handler := slog .NewTextHandler (os .Stderr , opts )
39+ slog .SetDefault (slog .New (handler ))
40+ }
41+
3042func newLibrarianCommand () * cli.Command {
3143 cmdVersion := & cli.Command {
3244 Short : "version prints the version information" ,
@@ -65,11 +77,14 @@ func newLibrarianCommand() *cli.Command {
6577}
6678
6779func newCmdGenerate () * cli.Command {
80+ var verbose bool
6881 cmdGenerate := & cli.Command {
6982 Short : "generate onboards and generates client library code" ,
7083 UsageLine : "librarian generate [flags]" ,
7184 Long : generateLongHelp ,
7285 Action : func (ctx context.Context , cmd * cli.Command ) error {
86+ setupLogger (verbose )
87+ slog .Debug ("generate command verbose logging" )
7388 if err := cmd .Config .SetDefaults (); err != nil {
7489 return fmt .Errorf ("failed to initialize config: %w" , err )
7590 }
@@ -94,15 +109,19 @@ func newCmdGenerate() *cli.Command {
94109 addFlagBranch (cmdGenerate .Flags , cmdGenerate .Config )
95110 addFlagWorkRoot (cmdGenerate .Flags , cmdGenerate .Config )
96111 addFlagPush (cmdGenerate .Flags , cmdGenerate .Config )
112+ addFlagVerbose (cmdGenerate .Flags , & verbose )
97113 return cmdGenerate
98114}
99115
100116func newCmdTagAndRelease () * cli.Command {
117+ var verbose bool
101118 cmdTagAndRelease := & cli.Command {
102119 Short : "tag-and-release tags and creates a GitHub release for a merged pull request." ,
103120 UsageLine : "librarian release tag-and-release [arguments]" ,
104121 Long : tagAndReleaseLongHelp ,
105122 Action : func (ctx context.Context , cmd * cli.Command ) error {
123+ setupLogger (verbose )
124+ slog .Debug ("tag-and-release command verbose logging" )
106125 if err := cmd .Config .SetDefaults (); err != nil {
107126 return fmt .Errorf ("failed to initialize config: %w" , err )
108127 }
@@ -120,15 +139,19 @@ func newCmdTagAndRelease() *cli.Command {
120139 addFlagRepo (cmdTagAndRelease .Flags , cmdTagAndRelease .Config )
121140 addFlagPR (cmdTagAndRelease .Flags , cmdTagAndRelease .Config )
122141 addFlagGitHubAPIEndpoint (cmdTagAndRelease .Flags , cmdTagAndRelease .Config )
142+ addFlagVerbose (cmdTagAndRelease .Flags , & verbose )
123143 return cmdTagAndRelease
124144}
125145
126146func newCmdInit () * cli.Command {
147+ var verbose bool
127148 cmdInit := & cli.Command {
128149 Short : "init initiates a release by creating a release pull request." ,
129150 UsageLine : "librarian release init [flags]" ,
130151 Long : releaseInitLongHelp ,
131152 Action : func (ctx context.Context , cmd * cli.Command ) error {
153+ setupLogger (verbose )
154+ slog .Debug ("init command verbose logging" )
132155 if err := cmd .Config .SetDefaults (); err != nil {
133156 return fmt .Errorf ("failed to initialize config: %w" , err )
134157 }
@@ -151,5 +174,6 @@ func newCmdInit() *cli.Command {
151174 addFlagRepo (cmdInit .Flags , cmdInit .Config )
152175 addFlagBranch (cmdInit .Flags , cmdInit .Config )
153176 addFlagWorkRoot (cmdInit .Flags , cmdInit .Config )
177+ addFlagVerbose (cmdInit .Flags , & verbose )
154178 return cmdInit
155179}
0 commit comments