engflow_auth: Migrate to CLI library #15
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change moves CLI parsing into urfave/cli/v2, so that we can easily add more subcommands without incrementally also writing our own CLI parser. The app is now split into two objects:
appState
, which contains injected dependencies that commands can use to interact with the various subsystemscli.App
, which takes care of the CLI parsing logic. Each leaf subcommand has its logic implemented as a method ofappState
.This change requires the following migrations:
rootCmd
type renamed toappState
, since the former no longer does any CLI arg parsingappState
are now integrated withcli.App
, as they can be used as Actions on subcommands:*cli.Context
as a parameter*cli.Context
, rather than those on theappState
(which are now removed)cli.App
)autherr.CodedError
implementscli.ExitCoder
(it may be possible to remove CodedError in favor ofcli.Exit()
in the future)Tested:
version
,help
,login
subcommands and did build on Kyanite using new binary