This took a fair amount of fiddeling with attempts at a more elegant
solution before I just accepted that it wasn't gonna be that fancy and
went with what is in this commit.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
The formatting was kinda broken because I was using multi line strings
like I was writing nix :S
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This does not implement no emoji, althugh it should be easier with the
strings consts in place.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This puts the emoji for success/failure of a git operation into the
strings module of utils.
This might be handy down the line for implementing the disable emotes
flag.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Created the actual flag, but didn't implement.
I had underestimated the amount of global state and abstracting for
output it would take.
This will probably be essentially free after a refactor that I don't
wanna do right now, given how I spend most my energy on the
architectural overhaul.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Idk why I even included this, but then again, it is probably not bad to
be very explicit about what is a pledge.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This was done with the help of:
`cargo clippy -- -W clippy::pedantic -W clippy::nursery -W clippy::unwrap_used`
Also fixed some warns that might have turned into errors in the future.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Decided to lower scope of required changes, as there is actually already
a mvp here, the amount of excuses for not abiding my semver are
decreasing too fast.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This is nice because it sets us up for the future, when we eventually
implement link categories, so we can share categories for both repos,
links, neither or either.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Quick and Fast are shortcut flags that essentially give all flags
nescesarry for Quick and Fast subcommand.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Of major notice is:
- Categories
- Repo flags
- Architectural overhaul
- Increased documentation
- Improved UX
- Changed config.yaml location
- Increased scope of push field
- Remove potentially destructive operation
- Fixed mini-license typos
- Fixed testing with hashmap arch
- Spinner on all repoactions
- Fixed commit in quick
- [**breaking**] Fixed quick, fast messages
- Fixed commit with editor regression
- Architectural Overview
- Moved charts to doc/img
- Update image locations
- Moved ARCHITECTURE.md to doc/
- Added some documentation
- Added roadmap
- Started flakification
- Added nix flake #5
- [**breaking**] Add push field
- [**breaking**] Add repo flags
- [**breaking**] Implemented naive categories
- Started work on using spinners
- Added pull flag
- React to exit code of git
- Started adding multi instruction logic
- Added fast subcommand
- Version bump to v0.0.3
- Moved install scripts to ./bin
- Fixed various clippy errors
- Removed unused code from flake
- Improved GitRepo assoc. function debug
- Removed redundant line in Cargo.toml
- Created on_all for config struct
- Naive nested hashmap
- Generic refactor
- Removed atty dependency
- Removed unused ./test dir
- Mvp flake working
<!-- generated by git-cliff -->
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Of major notice is:
- Categories
- Repo flags
- Architectural overhaul
- Increased documentation
- Improved UX
- Changed config.yaml location
- Increased scope of push field
- Remove potentially destructive operation
- Fixed mini-license typos
- Fixed testing with hashmap arch
- Spinner on all repoactions
- Fixed commit in quick
- [**breaking**] Fixed quick, fast messages
- Fixed commit with editor regression
- Architectural Overview
- Moved charts to doc/img
- Update image locations
- Moved ARCHITECTURE.md to doc/
- Added some documentation
- Added roadmap
- Started flakification
- Added nix flake #5
- [**breaking**] Add push field
- [**breaking**] Add repo flags
- [**breaking**] Implemented naive categories
- Started work on using spinners
- Added pull flag
- React to exit code of git
- Started adding multi instruction logic
- Added fast subcommand
- Version bump to v0.0.3
- Moved install scripts to ./bin
- Fixed various clippy errors
- Removed unused code from flake
- Improved GitRepo assoc. function debug
- Removed redundant line in Cargo.toml
- Created on_all for config struct
- Naive nested hashmap
- Generic refactor
- Removed atty dependency
- Removed unused ./test dir
- Mvp flake working
<!-- generated by git-cliff -->
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This allows committing with the users set editor, which is very handy if
you don't want to actually make meaningful commits.
This existed before, but implementing the instruction architecture for
composite actions broke it, because the status code refactor used
output() instead of status().
Thankfully, this does support exit codes still, but it does create some
cluttered output which is not terrible great UX, but this is not
extremely important, as this associated function isn't even currently
used by any user facing commands (except its explicit subcommand).
:D
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Fixed quick fast messages by "leaking" the memory for the input
effectively makiing it static.
This feel extremely hacky, and should never be used in a loop.
Consider this temporary until I find a better way, and or smart enough
people to tell me it's not as bad as I feel it is.
...Sorry Djikstra.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Fixed problem introduced by error handling.
This does not fix fast or fix lack of message input.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Cherry-picked from dev branch.
Updated pretty-env-logger to 0.5.0, as it was pulling atty which has a
potential security vulnerability, and further has been unmaintained and
unresponsive for 3 years.
https://github.com/advisories/GHSA-g98v-hv3f-hcfr
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Updated pretty-env-logger to 0.5.0, as it was pulling atty which has a
potential security vulnerability, and further has been unmaintained and
unresponsive for 3 years.
https://github.com/advisories/GHSA-g98v-hv3f-hcfr
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Added a tentative roadmap for release 0.1.0 as well as a future planned
roadmap.
This is mostly to help myself not trying to add too many features in
between releases as dev is already far ahead of main.
Ideally, I'd like to iterate more rapidly on main. Given the basic
structure of the config is slowly stabilizing, this will be less painful
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
As described in preceding commits.
Also added documentation changes that I forgot to add before amending to
previous commit :(
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This follows up on previous commits message, but with a completely
different implementation that is a lot tighter.
It doesn't handle commit messages, but quick is now implemented.
This has also shown that the previous fall-through behaviour of quick
wasn't a bug but a feature, as it would try to pull, not fail if it
couldn't.
This means it would be a good idea to implement an alternative version
of quick that keeps this old behaviour, or probably more likely,
creating a new command that does what the quick in this commit does, and
then finding a way to recreate the old behaviour of quick.
This is dev branch thou, so I don't have to do that before pushing :D
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Started thinking about a new problem relating to how to deal with a
series of operations, as quick has been doing so far.
Now that we are trying to react to errors, it would be cool if we could
stop early, but this require maintaining a list of things that have
failed to avoid running them, and so we need to perform that logic
inside of the function (at least it's the more reasonable approach imo)
One way I can sketch rn might be to copy the hashmap structure of repos
as a reference, and then delete the references from our cloned map as
they fail. This is not ideal in any specific way, but it's a good first
approximation.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Propagates the git exit code up through the layers, making the config
handle the actual errors at the output layer.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Following up on previous commit, added spinner to all repo actions.
Also introduced on_all_spinner helper function, which is a version of
on_all, but intended for a single repo action (not a composed one like
quick), that takes care of managing the spinner.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Spinners are a blinking lights UX component. Ideally, a flag will be
added to run silently.
This only implements a sketch for using spinners when doing a quick
sync.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Fixed tests to work with the new hashmap based architecture.
Introduced some handy helper functions in main.rs testing that I might
wanna move to the impl block of config later.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This is an implementation of the nested hashmap architecture, outlined
in architecture.md, however, with a hashmap instead of a btreemap.
This is ultimately just a sketch.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This commit introduces on_all() on the config struct.
This unifies behaviour for iterating over all repos
in the config.
I'm introducing this to make testing various architectural
choices a breeze.
NOTE: Ideally, GitRepo should also be made generic, allowing
other types of repos at some point.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
I've started to document parts of the design process, mostly for my own
sake.
Having this around later will be helpful, and it also means I can point
smarter people here to quickly explain more complicated issues.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Naive category implementation.
Works somewhat, including part of tests.
However, I realize now that perhaps, having unique category names in
nescesarry for subcommands.
On the other hand, allowing them to be non unique would allow splitting
up category definitions.
But finding the category in a vec would be slow...
...and I want a lot of categories probably...
I'm still working on this... here is one way to do it ᕕ( ᐛ )ᕗ
Saved in the git log for posterity.
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Flags indicate what operations should be masked on a repo.
This is done in a way that is relatively more pleasurable to configure,
and should reduce the amount of breaking changes long term.
Overally, a very nice commit :D
Signed-off-by: Christina Sørensen <christina@cafkafk.com>