Commit graph

77 commits

Author SHA1 Message Date
Christina Sørensen
8de0fa8eae
doc(git): documented run_series macro
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-20 17:09:15 +02:00
Christina Sørensen
66de3fc7f3
refactor(git): started implementing validity check for repo kinds
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-20 16:57:30 +02:00
Christina Sørensen
ff837c9a64
refactor(git): removed series_on_all
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-20 16:41:07 +02:00
Christina Sørensen
8c186b17d3
refactor: remove duplicate code on Config
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-20 16:38:02 +02:00
Christina Sørensen
19a7acf284
tests: added kinds to test config
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 11:19:08 +02:00
Christina Sørensen
0d6afbc772
feat: added repo kinds
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 11:16:12 +02:00
Christina Sørensen
b345ab7e4e
refactor: renamed GitRepo to Repo
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 11:08:12 +02:00
Christina Sørensen
ccf20d7363
refactor: added kind field to GitRepo
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 11:04:26 +02:00
Christina Sørensen
674edc240e
refactor: added RepoKinds enum
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 11:01:46 +02:00
Christina Sørensen
36ac077fe7
refactor: made RepoFlags non exhaustive
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 11:00:14 +02:00
Christina Sørensen
579d9ea972
refactor: started work on generic macro
This is to help make series operations more generic.

This refactor has been needed for a while, and I'm very excited to
finally start working on it, but this is just the bare minimum, we
still need to handle on a repo type basis.

But also, yes, this starts the slow crawl towards generic repos intead
of hardcoded functions for each repo type (links, gitrepo) etc

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-17 10:45:13 +02:00
Christina Sørensen
5cc54e23f5
feat: -m flag (untested)
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-13 08:01:08 +02:00
Christina Sørensen
7c6fa896e7
fix(main,cli): naming was confusing
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-13 07:23:01 +02:00
Christina Sørensen
3217e27d4b
feat(wip): repo and category selecting for subcmd
This starts to implement repo and category selecting for subcommands
that make use of these (push, pull, quick, fast... most of them!)

Still, this is proof of concept, now it needs to actually be made robust
and generalized, as well as implemented on all the commands.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-11 19:54:05 +02:00
Christina Sørensen
e3617956fe
doc: cleaned up comments
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-11 16:58:51 +02:00
Christina Sørensen
7a31030aca
fix(git): removed ugly comments
Feels like a code smell to use this ugly and non-idiomatic style.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-11 16:56:23 +02:00
Christina Sørensen
63688b0d6e
feat(jump): done, but not great
Of course, the calling process is different from us, and we can't
actually change their PWD >_<

*sigh*

But, this can be put in e.g. an alias, which seems to be what most
jump/cd expanding types of programs do. We are not those, so, going
beyond what most of those do with ptrace and hackery is not really in
scope...

But ugh, I hate this. But I still want this feature for myself
so ¯\_(ツ)_/¯

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-08 07:53:45 +02:00
Christina Sørensen
ea3f3e6bb2
feat(cli): added jump command
Still not implemented!

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-08 07:03:01 +02:00
Christina Sørensen
8b20c2a490
feat(benches): added benchmarking
Setup only for loading config file for now, probably not a lot of code
here that is super intensive, but having the structure set up to bench
is pretty nice when it's needed suddenly.

Two steps ahead as always, still haven't capitalized on the architecture
rewrite, yet here I am adding this.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 06:38:17 +02:00
Christina Sørensen
1768cd93a8
test(git): fixed doc tests for git.rs
Adding git to the library file makes the doctests run.

Turns out they were very broken.

This commit sets us up for a refactor, with setter and getters.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 06:37:09 +02:00
Christina Sørensen
c36000e7a0 chore: fixed up code, roadmap for bump
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 04:13:59 +00:00
Christina Sørensen
a4e3527973 fix(git): made categories with only links possible
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 04:13:59 +00:00
Christina Sørensen
f1fc08ab2c test: refactored testing, added tests dir
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 04:13:59 +00:00
Christina Sørensen
7e6b9312b5 refactor: simple code quality changes
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 04:13:59 +00:00
Christina Sørensen
512d696b39 chore(git): added test.yaml to gitignore
This is usually regenereated with a different ordering every time tests
are run. This is annoying.

It's because the underlying hashmap doesn't have ordering.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 04:13:59 +00:00
Christina Sørensen
d5b845508a feat!: put links in categories
This required a lot of refatoring, and added a lot of codedepth that
have to be repaid soon by a large refactor.

Also, it is becoming painfully obvious that testing should be expanded
significantly.

This, after the refactor, nonetheless.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-07 04:13:59 +00:00
Christina Sørensen
c62a0a720f chore(version): bump to v0.1.2
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-03 16:22:48 +00:00
Christina Sørensen
f958739863 feat: implemented quiet flag
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>
2023-07-03 16:22:48 +00:00
Christina Sørensen
6d39190f69 feat(no-emoji): added no-emoji flag
Using atomics! In case we need threading in the future.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-03 16:22:48 +00:00
Christina Sørensen
abddcd98d5 fix: fixed help formatting
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>
2023-07-03 16:22:48 +00:00
Christina Sørensen
1e22d3bf5a
feat(cli): added flag no-emoji
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>
2023-07-03 11:36:20 +02:00
Christina Sørensen
97d8ee52fc
feat(git): made SUCCESS/FAILURE emoji const
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>
2023-07-03 11:34:22 +02:00
Christina Sørensen
0660801014
feat(cli): quiet flag
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>
2023-07-03 11:16:43 +02:00
Christina Sørensen
2872f56aac
feat(cli): implemented CoC flag
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>
2023-07-03 11:04:18 +02:00
Christina Sørensen
414334009a
refactor: made code more idiomatic
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>
2023-07-02 16:42:12 +02:00
Christina Sørensen
ee8e546b22
feat(git): made repo flags optional
This finalizes the roadmap item of making certain fields optional.

Very nice!

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-02 11:37:23 +02:00
Christina Sørensen
1c6793f8e4
feat(git): made categories.repo optional
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>
2023-07-02 11:29:16 +02:00
Christina Sørensen
a000d37b72
feat(git): made category flags optional
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-02 11:23:00 +02:00
Christina Sørensen
ec49c90a0e
feat(git)!: added Quick, Fast flags
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>
2023-07-02 11:06:51 +02:00
Christina Sørensen
e6f597e08b
feat(git): add Commit, Add flags
This also fixes behaviour of all flags.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-02 10:52:23 +02:00
Christina Sørensen
6595bd5148
fix: fixed commit with editor regression
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>
2023-07-02 10:20:42 +02:00
Christina Sørensen
25fe576052
fix!: fixed quick, fast messages
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>
2023-07-02 09:52:56 +02:00
Christina Sørensen
df08a1ca2f
fix(main): fixed commit in quick
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>
2023-07-02 09:25:00 +02:00
Christina Sørensen
c6db4d5a3b
sec: removed atty dependency
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>
2023-07-02 07:25:11 +02:00
Christina Sørensen
be0cbc8849
feat: added fast subcommand
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>
2023-07-01 14:57:41 +02:00
Christina Sørensen
a52cc15f8e
doc: added some documentation
Not very much, just enough to not be literally nothing.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2023-07-01 14:45:23 +02:00
Christina Sørensen
3f05ae827a
feat(git): started adding multi instruction logic
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>
2023-07-01 07:36:00 +02:00
Christina Sørensen
6d83d278e1
refactor(git): generic refactor
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>
2023-07-01 06:18:02 +02:00
Christina Sørensen
e11efb3229
feat(git): react to exit code of git
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>
2023-07-01 06:02:01 +02:00
Christina Sørensen
301c604f37
feat(git): added pull flag
Added the pull flag to the repo logic.

Now you can pull only some repos.
2023-07-01 05:45:03 +02:00