-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add verbose flag #1
base: master
Are you sure you want to change the base?
Conversation
type cli struct { | ||
Executor *taskrunner.Executor | ||
} | ||
|
||
func init() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we instead pass verbose in as an argument to clireporter?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had talked to @stephen to get to this solution, there's no straightforward way to pass it into clireporter, as the New function is indirectly called through the RunOption system, and passed in from main.go in backend/app/taskrunner
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we could alternatively have the clireporter.Option
take an argument that sets verbosity, so we'd have to handle the flag in the actual binary's main function. that seems annoying, so i opted for this path. this might matter more for binaries that run multiple taskrunner instance with varying verbosities, but I didn't feel like it was worth it atm.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't love the idea of having distributed binary flags / plugins that have binary interfaces. Having a verbosity flag as a global run option seems nice - and like something you'd use in other potential extensions.
@stephen what makes it annoying to do this in the main binary function?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@berfarah main doesn't call clireporter directly, but rather passes in options that don't provide a way to use the interface directly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIK you have access to the executor via the options function, which has a config object tied to it. What if we put verbose
on config
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we could also do something like:
func Option(verbose bool) taskrunner.RunOption {
return func(r *taskrunner.RunOptions) {
r.ReporterFns = append(r.ReporterFns, func(ctx context.Context, executor *taskrunner.Executor) error {
New(executor).Run(ctx)
return nil
})
}
}
haven't really thought through how to unify the config file vs. the code configuration
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
^ totally makes sense. I think in this case, verbosity seems like something everyone should be able to access. Though I'm open to it not being the case ofc.
@jsm there's now an API to do this 😄 |
@berfarah cool! deets? Should I close this? |
@jsm You can add it to func (r *Runtime) {
var configObj somestruct
r.WithFlag(f flags) {
f.BoolVar(&configObj.Verbose, "verbose", false, "...")
}
} |
What was changed?
Adds
-v
flag to taskrunner