- reduce boilerplace necessary to implement an operation
- consolidate what an operation is in the core, which in turn pave the way for a generic cache layer mechanism
- avoid the previously complex unmarshalling process
- support operation metadata from the core
- simplified testing
* Add option to skip the AvatarURL input request
Using an empty string for the avatar cli flag e.g. `git-bug user create
-a ""` will still result in a prompt. As the avatar URL is an optional
option, it should be possible to skip asking for it entirely.
Otherwise automated user creation via a script must make use of pipe hacks.
* Add global --non-interactive cmdline option
* Replace --skipAvatar for --non-interactive option
* Cmd BugAdd: respect non-interactive option
* Cmd bridge configure: respect non-interactive opt
* Cmd CommentAdd: respect non-interactive option
* Cmd CommentEdit: respect non-interactive option
* Cmd TermUI: respect non-interactive option
* Cmd TitleEdit: respect non-interactive option
* Remove global non-interactive option
* Cmd UserCreate: Use local non-interactive option
* Cmd BugAdd: Use local non-interactive option
* Cmd BridgeConfigure: Use local non-interactive option
* Cmd CommentAdd: Use local non-interactive option
* Cmd CommentEdit: Use local non-interactive option
* Cmd TermUI: Drop non-interactive option
It should be obviouse that the termui is an interactive command.
* Cmd TitleEdit: Use local non-interactive option
* Update docs
* Bridge GitHub: respect non-interactive option
* Bridge GitLab: respect non-interactive option
* Bridge Jira: respect non-interactive and token opt
* Fix failing compilation
* Bridge launchpad: respect non-interactive option
* bridge: isNonInteractive --> interactive
Co-authored-by: Michael Muré <batolettre@gmail.com>
Retrieving events is spread across various various Gitlab APIs. This
makes importing and sorting Gitlab events by time quite complicated.
This commit replaces the old iterators with a goroutine/channel-based
iterator, which merges the individual Gitlab API streams into a single
(sorted) event stream.
- allow the creation of arbitrary Lamport clocks, freeing the way to new entities and removing Bug specific (upper layer) code.
- generalize the memory-only and persisted Lamport clocks behind a common interface
- rework the tests to provide reusable testing code for a Repo, a Clock, a Config, opening a path to add a new Repo implementation more easily
- test previously untested components with those new tests
Note: one problem found during this endeavor is that `identity.Version` also need to store one time + Lamport time for each other Entity (Bug, config, PR ...). This could possibly done without breaking change but it would be much easier to wait for https://github.com/MichaelMure/git-bug-migration to happen.