The old `args.After("echo", ...)` approach won't cut it on Windows since
there is no `echo` executable. Thus, nothing was printed on Windows.
Instead, expand Args type with extra functionality that allows Go
callbacks after all commands in the chain have been run.
Also, the new `args.NoForward()` is now preferred to `os.Exit()` since
it's more descriptive and allows `defer` in the calling function.
The `create` and `remote` commands needs to infer the current project
name from the project's directory. Instead of using the current working
directory, which doesn't necessarily match the project's toplevel
directory, use `git rev-parse --show-toplevel` which also respects the
`-C` global flag setting.
Fixes#1105, closes#1114
Introduce a `console` package which encapsulates logic of printing out
to console. This provides flexibility of discarding output in tests.
It also allows us to unify format of printing to console (if we want to).
This fixes#801.
`configService` can save and load `Config` using a strategy of `configEncoder` and `configDecoder`. This pave the path for swapping out `tomlConfigEncoder` and `tomlConfigDecoder` with `yamlConfigEncoder` and `yamlConfigDecoder`.
`Configs` also has been renamed to `Config`.
This'll make sure we propagate error to the caller where we can reformat
the error message within the context.
This fixes `features/authentication.feature:85`