Skip to content

Commit

Permalink
control logging via flag
Browse files Browse the repository at this point in the history
Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
  • Loading branch information
katexochen committed Apr 3, 2023
1 parent 1d08e58 commit a2219aa
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 14 deletions.
5 changes: 3 additions & 2 deletions clientv4.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@ import (

type GithubV4Client struct {
client *githubv4.Client
logger *Logger
logger Logger
}

func NewGithubV4Client(ctx context.Context, token string) *GithubV4Client {
func NewGithubV4Client(ctx context.Context, token string, logger Logger) *GithubV4Client {
ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})
tc := oauth2.NewClient(ctx, ts)
client := githubv4.NewClient(tc)
return &GithubV4Client{
client: client,
logger: logger,
}
}

Expand Down
42 changes: 32 additions & 10 deletions logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,63 @@ import (
"os"
)

type Logger struct{}
type Logger interface {
Infof(format string, args ...any)
Infoln(args ...any)
Warnf(format string, args ...any)
Warnln(args ...any)
Errorf(format string, args ...any)
Errorln(args ...any)
Debugf(format string, args ...any)
Debugln(args ...any)
PrintJSON(msg string, v any)
}

type DefaultLogger struct{}

func (l *Logger) Infof(format string, args ...any) {
func (l *DefaultLogger) Infof(format string, args ...any) {
log.Printf(fmt.Sprintf("INFO: %s", format), args...)
}

func (l *Logger) Infoln(args ...any) {
func (l *DefaultLogger) Infoln(args ...any) {
l.Infof("%s\n", args...)
}

func (l *Logger) Warnf(format string, args ...any) {
func (l *DefaultLogger) Warnf(format string, args ...any) {
log.Printf(fmt.Sprintf("WARN: %s", format), args...)
}

func (l *Logger) Warnln(args ...any) {
func (l *DefaultLogger) Warnln(args ...any) {
l.Warnf("%s\n", args...)
}

func (l *Logger) Errorf(format string, args ...any) {
func (l *DefaultLogger) Errorf(format string, args ...any) {
log.Printf(fmt.Sprintf("ERROR: %s", format), args...)
}

func (l *Logger) Errorln(args ...any) {
func (l *DefaultLogger) Errorln(args ...any) {
l.Errorf("%s\n", args...)
}

func (l *Logger) Debugf(format string, args ...any) {
func (l *DefaultLogger) Debugf(format string, args ...any) {}

func (l *DefaultLogger) Debugln(args ...any) {}

func (l *DefaultLogger) PrintJSON(msg string, v any) {}

type VerboseLogger struct {
DefaultLogger
}

func (l *VerboseLogger) Debugf(format string, args ...any) {
log.Printf(fmt.Sprintf("DEBUG: %s", format), args...)
}

func (l *Logger) Debugln(args ...any) {
func (l *VerboseLogger) Debugln(args ...any) {
l.Debugf("%s\n", args...)
}

func (l *Logger) PrintJSON(msg string, v any) {
func (l *VerboseLogger) PrintJSON(msg string, v any) {
l.Infoln(msg + ":")
w := json.NewEncoder(os.Stdout)
w.SetIndent("", " ")
Expand Down
3 changes: 2 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@ func newRootCmd() *cobra.Command {
Use: "ghh",
Short: "GitHub Helper CLI",
}
cmd.SetOut(os.Stdout)

cmd.SetOut(os.Stdout)
cmd.AddCommand(
newDeleteAllRunsCmd(),
newCreateProjectIssueCmd(),
newSetAuthCmd(),
)
cmd.PersistentFlags().BoolP("verbose", "v", false, "Enable verbose output")

return cmd
}
Expand Down
16 changes: 15 additions & 1 deletion projectissue.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,19 @@ func CreateProjectIssue(cmd *cobra.Command, _ []string) error {
return err
}

var logger Logger
if flags.verbose {
logger = &VerboseLogger{}
} else {
logger = &DefaultLogger{}
}

token, err := GetToken()
if err != nil {
return err
}

c := NewGithubV4Client(cmd.Context(), token)
c := NewGithubV4Client(cmd.Context(), token, logger)

project, err := c.QueryProject(cmd.Context(), flags.Metadata.Organization, flags.Metadata.ProjectNumber)
if err != nil {
Expand Down Expand Up @@ -82,6 +89,7 @@ func CreateProjectIssue(cmd *cobra.Command, _ []string) error {
type CreateProjectIssueFlags struct {
Metadata Metadata
Body string
verbose bool
}

func parseCreateProjectIssueFlags(cmd *cobra.Command) (CreateProjectIssueFlags, error) {
Expand All @@ -107,9 +115,15 @@ func parseCreateProjectIssueFlags(cmd *cobra.Command) (CreateProjectIssueFlags,
return CreateProjectIssueFlags{}, err
}

verbose, err := cmd.Flags().GetBool("verbose")
if err != nil {
return CreateProjectIssueFlags{}, err
}

return CreateProjectIssueFlags{
Metadata: metadata,
Body: string(bodyBytes),
verbose: verbose,
}, nil
}

Expand Down

0 comments on commit a2219aa

Please sign in to comment.