141 Commits

Author SHA1 Message Date
fefba801ec fix(deps): update all dependencies 2025-07-10 00:28:42 +00:00
322bd4c9e7 fix(deps): update rust crate console to v0.15.11
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-03-02 01:38:14 +00:00
63462ce252 fix(deps): update rust crate clap to v4.5.31
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-02-25 01:40:54 +00:00
44e720ff50 fix(deps): update rust crate clap to v4.5.30
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-02-18 01:41:34 +00:00
4381b9c160 fix(deps): update rust crate clap to v4.5.29
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-12 01:43:26 +00:00
ea74c41d74 fix(deps): update rust crate clap to v4.5.28
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2025-02-04 01:41:17 +00:00
ec34a47faf fix(deps): update rust crate clap to v4.5.27
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-21 01:38:22 +00:00
85d80db364 fix(deps): update rust crate dirs to v6
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-13 01:37:07 +00:00
4f44862160 fix(deps): update rust crate clap to v4.5.26
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-10 01:33:59 +00:00
25d43765d9 fix(deps): update rust crate clap to v4.5.24
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-08 01:32:29 +00:00
88680da7d5 feat: empty empty
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-27 16:28:43 +01:00
2a46b7b170 feat: can handle empty struct
Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-27 16:28:21 +01:00
f9513fe051 feat: trigger commit
Some checks failed
continuous-integration/drone/push Build is failing
2024-12-27 16:26:02 +01:00
09cfa5b88f feat: add publish
Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-27 16:25:03 +01:00
88b602a124 chore: override release for smaller binaries
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 15:13:02 +01:00
674266664d chore(release): v0.4.0 (#90)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.4.0

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/90
2024-12-22 14:53:58 +01:00
39dc4ae15c chore: make variant for the other shell commands
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 14:52:05 +01:00
55a5a9a1e1 feat: make init zsh
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 13:33:46 +01:00
92a0e3b1b3 chore(release): v0.3.0 (#89)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.3.0

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/89
2024-12-22 13:01:48 +01:00
b167b3ebfa feat: make cli look nice
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 13:00:58 +01:00
b78631d6ac chore(release): v0.2.4 (#88)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.2.4

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/88
2024-12-22 12:44:31 +01:00
00a249978e chore: trigger commit
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-22 12:43:57 +01:00
a86a4197f7 chore(release): v0.2.3 (#87)
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is failing
chore(release): 0.2.3

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/87
2024-12-22 12:37:08 +01:00
0397b64e28 chore: trigger commit
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-22 12:36:39 +01:00
77901c6ac9 chore(release): v0.2.2 (#86)
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is failing
chore(release): 0.2.2

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/86
2024-12-22 12:34:09 +01:00
a1eadd67e1 feat: trigger commit
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-22 12:33:24 +01:00
d5271807f7 chore(release): v0.2.1 (#85)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.2.1

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/85
2024-12-22 12:03:58 +01:00
947e05e573 chore: fix cargo toml
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:55:17 +01:00
a720dedcf5 chore(release): v0.2.0 (#84)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.2.0

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/84
2024-12-22 11:54:23 +01:00
446c957a97 feat: transform to binary
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:53:43 +01:00
fa7041187f feat: redo project structure
Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:51:36 +01:00
f5ff75bfbe chore: update lock
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:47:12 +01:00
a34118b5e8 chore(release): v0.1.3 (#83)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.1.3

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/83
2024-12-22 11:44:28 +01:00
6e4fa67778 chore: update cargo
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:43:37 +01:00
0a8d1105e5 chore(release): v0.1.2 (#82)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.1.2

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/82
2024-12-22 11:42:52 +01:00
e370e4d282 feat: trigger commit
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-22 11:42:12 +01:00
aeab954230 chore(release): v0.1.1
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2024-12-22 11:42:04 +01:00
253b4d5c38 feat: trigger commit
All checks were successful
continuous-integration/drone/push Build is passing
2024-12-22 11:41:55 +01:00
532506ca0a chore(release): v0.1.2
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-12-22 11:40:57 +01:00
cd5b8645ff fix: ignore cuddle
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:40:31 +01:00
acb6673978 feat: use kignore
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:38:10 +01:00
960682a45b feat: add force and cuddle
Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:36:25 +01:00
819bcc68c6 feat: add force
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-22 11:33:14 +01:00
79903524aa Update Rust crate console to v0.15.10
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-17 01:31:42 +00:00
6771a8a6b7 Update Rust crate clap to v4.5.23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-06 01:42:19 +00:00
9f7a322e51 Update Rust crate clap to v4.5.22
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-04 01:43:35 +00:00
d728b2f4d7 Update Rust crate tracing-subscriber to v0.3.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-30 02:13:39 +00:00
961b039779 Update Rust crate tracing to v0.1.41
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-28 01:38:19 +00:00
b97f261cfd Update Rust crate clap to v4.5.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-14 01:32:05 +00:00
2085408670 Update Rust crate clap to v4.5.20
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-09 00:34:22 +00:00
56490da09b Update Rust crate clap to v4.5.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-02 00:34:17 +00:00
a2103271b3 Update Rust crate clap to v4.5.16
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-21 21:01:47 +00:00
8003a98d83 Update Rust crate clap to 4.5.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-25 21:52:10 +00:00
de481ddb28 Update Rust crate clap to 4.5.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-15 13:38:05 +00:00
cb409fe153 Update Rust crate clap to 4.5.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-06 17:25:26 +00:00
382612bdb0 Update Rust crate eyre to 0.6.12
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-31 16:55:09 +00:00
bda5a4e1c3 Update Rust crate clap to 4.4.18
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-16 20:48:00 +00:00
767b48bbe4 Update Rust crate clap to 4.4.17
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-15 17:15:47 +00:00
5b34eaf6ed Update Rust crate clap to 4.4.16
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-12 03:20:41 +00:00
170438211b Update Rust crate clap to 4.4.15
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-11 17:11:43 +00:00
79fc45b5dd Update Rust crate console to 0.15.8
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-09 16:57:55 +00:00
c7ca0932eb Update Rust crate clap to 4.4.14
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-08 17:09:20 +00:00
1f215596b3 Update Rust crate clap to 4.4.13
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-04 19:36:57 +00:00
ea96ddfe56 Update Rust crate clap to 4.4.12
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-28 18:28:16 +00:00
5c226e9dd8 Update Rust crate eyre to 0.6.11
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-13 22:15:02 +00:00
7576ade7cb Update Rust crate eyre to 0.6.10
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-08 07:06:37 +00:00
4420465f41 Update Rust crate clap to 4.4.11
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-04 18:43:09 +00:00
8dc0d1fc25 Update Rust crate clap to 4.4.10
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-28 04:01:57 +00:00
8067c265e5 Update Rust crate clap to 4.4.9
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-27 18:24:26 +00:00
da1e47cbe3 Update Rust crate eyre to 0.6.9
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-17 17:43:45 +00:00
06181043db Update Rust crate tracing-subscriber to 0.3.18
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-13 17:42:55 +00:00
07899fcb44 Update Rust crate clap to 4.4.8
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-10 22:39:43 +00:00
bbe415b803 Update Rust crate clap to 4.4.7
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-24 19:00:50 +00:00
99fa1900d4 Update Rust crate tracing to 0.1.40
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-19 01:41:10 +00:00
8d5a524d7d Update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-13 22:44:54 +00:00
84302de6ba Update Rust crate clap to 4.4.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-09-25 21:10:41 +00:00
c6561a12cc Update Rust crate clap to 4.4.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-09-18 16:09:16 +00:00
466c16bc28 Update Rust crate clap to 4.4.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-09-12 18:53:18 +00:00
b60e464942 Update Rust crate clap to 4.4.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-31 19:02:31 +00:00
6db3576f63 Update Rust crate clap to 4.4.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-28 17:31:00 +00:00
01b5ea1bfd Update Rust crate clap to 4.4.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-24 16:40:22 +00:00
5a4a94591a Update Rust crate clap to 4.3.24
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-23 14:57:50 +00:00
286508a432 Update Rust crate clap to 4.3.23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-18 21:39:13 +00:00
5fc473040e Update Rust crate clap to 4.3.22
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-17 14:38:55 +00:00
9687c67cf6 Update Rust crate clap to 4.3.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-08 02:04:50 +00:00
7f86f27930 Merge pull request 'Update Rust crate clap to 4.3.10' (#39) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-30 02:36:20 +00:00
de13281e81 Merge pull request 'Update Rust crate clap to 4.3.9' (#38) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-28 14:26:54 +00:00
ad16745b72 Merge pull request 'Update Rust crate clap to 4.3.8' (#37) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-23 22:29:22 +00:00
331e5a6825 Merge pull request 'Update Rust crate clap to 4.3.6' (#36) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-23 18:21:57 +00:00
c68d6400b7 Merge pull request 'Update all dependencies' (#35) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-20 16:42:12 +00:00
69d4d9f5f8 Update Rust crate clap to 4.3.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-05-19 17:40:51 +00:00
f7ea903d86 Update Rust crate console to 0.15.6
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-05-18 11:10:05 +00:00
1827d57f9f Update Rust crate clap to 4.2.7
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-05-02 19:38:03 +00:00
b5b6278d51 Update Rust crate tracing-subscriber to 0.3.17
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-04-22 08:10:25 +00:00
f61b5c0020 Update Rust crate clap to 4.2.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-04-19 18:35:41 +00:00
cbc4a72efb Update Rust crate clap to 4.2.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-04-18 21:13:15 +00:00
a1db5d795b Update Rust crate clap to 4.2.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-04-13 16:33:44 +00:00
de59bdb931 Update Rust crate clap to 4.2.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-29 19:39:40 +00:00
c32e19ae10 Update Rust crate clap to 4.2.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-28 18:13:41 +00:00
c16b9e8b47 Update Rust crate clap to 4.1.14
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-28 06:24:31 +00:00
a4c40c10cc Update Rust crate clap to 4.1.13
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-24 22:15:42 +00:00
078e5a6f3d Update Rust crate clap to 4.1.12
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-23 17:34:12 +00:00
f61efa29bd Update Rust crate clap to 4.1.11
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-19 11:12:50 +00:00
7eea96cd28 Update Rust crate clap to 4.1.10
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-18 09:58:59 +00:00
431cdc876c Update Rust crate clap to 4.1.9
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-16 21:23:27 +00:00
63c4bd036e Update Rust crate clap to 4.1.8
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-02-28 14:27:39 +00:00
0168288fbb Update Rust crate clap to 4.1.6
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-02-15 18:03:28 +00:00
40321a000d Update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-02-15 17:03:22 +00:00
796534862e Update Rust crate console to 0.15.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-01-02 22:44:34 +00:00
e722772dfa Update Rust crate console to 0.15.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-12-27 19:50:54 +00:00
d4027ad5fe Update Rust crate clap to 4.0.32
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-12-22 19:55:23 +00:00
fbb999262a Update Rust crate clap to 4.0.31
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-12-22 19:03:39 +00:00
067d5e68ed Update Rust crate clap to 4.0.30
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-12-22 10:41:24 +00:00
9bd948cc9d Update Rust crate clap to 4.0.27
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-24 17:56:24 +00:00
01ce6b6953 Update Rust crate clap to 4.0.26
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-16 17:09:14 +00:00
068a331816 Update Rust crate clap to 4.0.23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-12 12:10:56 +00:00
226fcb5ffd Update Rust crate clap to 4.0.22
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-07 17:16:04 +00:00
06849b9edb Update Rust crate clap to 4.0.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-07 16:10:03 +00:00
c8933f27c8 Update Rust crate clap to 4.0.20
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-07 12:57:50 +00:00
524397acae Update Rust crate clap to 4.0.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-11-04 19:36:43 +00:00
3a6c0aca05 Update Rust crate clap to 4.0.18
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-10-26 14:42:41 +00:00
4aeca04c65 Add .drone.yml 2022-10-26 16:16:03 +02:00
d1d1353c74 Add .drone.yml
All checks were successful
continuous-integration/drone Build is passing
2022-10-26 11:29:39 +02:00
01ad3dbb82 Merge pull request 'Configure Renovate' (#2) from renovate/configure into main
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitignore/pulls/2
2022-10-25 20:57:25 +00:00
bfb8142522 Add renovate.json 2022-10-25 20:50:32 +00:00
8209a15d42 trying without alias 2022-10-21 12:08:23 +02:00
ce7f2f5206 trying again 2022-10-21 12:06:42 +02:00
0ed449c27d updated formula 2022-10-21 12:03:17 +02:00
7e51d6cca2 add completion script to homebrew 2022-10-21 11:55:37 +02:00
5d5155d452 install via. homebrew 2022-10-21 02:48:58 +02:00
13f8335cd2 cask works 2022-10-21 02:44:23 +02:00
0aadeec095 updated name 2022-10-21 02:41:32 +02:00
c07d023b5f with sha 2022-10-21 02:39:57 +02:00
e52e32a2c0 trying again 2022-10-21 02:22:04 +02:00
6a999ef25d removed win 2022-10-21 02:19:05 +02:00
7918006315 without man pages 2022-10-21 02:11:17 +02:00
61f4423d47 fix space 2022-10-21 02:05:27 +02:00
df2cae393c with license 2022-10-21 02:00:19 +02:00
0a0d05c048 Added homebrew 2022-10-21 01:50:06 +02:00
807611ffce With executable rights 2022-10-21 01:47:18 +02:00
def18273f4 ... 2022-10-21 01:42:18 +02:00
22 changed files with 787 additions and 695 deletions

2
.drone.yml Executable file
View File

@@ -0,0 +1,2 @@
kind: template
load: cuddle-rust-cli-plan.yaml

View File

@@ -1,176 +0,0 @@
# The way this works is the following:
#
# The create-release job runs purely to initialize the GitHub release itself
# and to output upload_url for the following job.
#
# The build-release job runs only once create-release is finished. It gets the
# release upload URL from create-release job outputs, then builds the release
# executables for each supported platform and attaches them as release assets
# to the previously created release.
#
# The key here is that we create the release only once.
#
# Reference:
# https://eugene-babichenko.github.io/blog/2020/05/09/github-actions-cross-platform-auto-releases/
name: release
on:
push:
# Enable when testing release infrastructure on a branch.
branches:
- kjuulh/tests
tags:
- "[0-9]+.[0-9]+.[0-9]+"
jobs:
create-release:
name: create-release
runs-on: ubuntu-22.04
# env:
# Set to force version number, e.g., when no tag exists.
# KIGNORE_VERSION: TEST-0.0.0
outputs:
upload_url: ${{ steps.release.outputs.upload_url }}
kignore_version: ${{ env.KIGNORE_VERSION }}
steps:
- name: Get the release version from the tag
shell: bash
if: env.KIGNORE_VERSION == ''
run: |
# Apparently, this is the right way to get a tag name. Really?
#
# See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027
echo "KIGNORE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "version is: ${{ env.KIGNORE_VERSION }}"
- name: Create GitHub release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.KIGNORE_VERSION }}
release_name: ${{ env.KIGNORE_VERSION }}
build-release:
name: build-release
needs: ["create-release"]
runs-on: ${{ matrix.os }}
env:
# For some builds, we use cross to test on 32-bit and big-endian
# systems.
CARGO: cargo
# When CARGO is set to CROSS, this is set to `--target matrix.target`.
TARGET_FLAGS: ""
# When CARGO is set to CROSS, TARGET_DIR includes matrix.target.
TARGET_DIR: ./target
# Emit backtraces on panics.
RUST_BACKTRACE: 1
# Build static releases with PCRE2.
PCRE2_SYS_STATIC: 1
strategy:
matrix:
build: [linux, linux-arm, macos, win-msvc, win-gnu, win32-msvc]
include:
- build: linux
os: ubuntu-22.04
rust: nightly
target: x86_64-unknown-linux-musl
- build: linux-arm
os: ubuntu-22.04
rust: nightly
target: arm-unknown-linux-gnueabihf
- build: macos
os: macos-12
rust: nightly
target: x86_64-apple-darwin
- build: win-msvc
os: windows-2022
rust: nightly
target: x86_64-pc-windows-msvc
- build: win-gnu
os: windows-2022
rust: nightly-x86_64-gnu
target: x86_64-pc-windows-gnu
- build: win32-msvc
os: windows-2022
rust: nightly
target: i686-pc-windows-msvc
steps:
- name: Checkout repository
uses:
actions/checkout@v3
#- name: Install packages (Ubuntu)
# if: matrix.os == 'ubuntu-22.04'
# run: |
# ci/ubuntu-install-packages
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
- name: Use Cross
shell: bash
run: |
cargo install cross
echo "CARGO=cross" >> $GITHUB_ENV
echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV
echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV
- name: Show command used for Cargo
run: |
echo "cargo command is: ${{ env.CARGO }}"
echo "target flag is: ${{ env.TARGET_FLAGS }}"
echo "target dir is: ${{ env.TARGET_DIR }}"
- name: Build release binary
run: ${{ env.CARGO }} build --verbose --release ${{ env.TARGET_FLAGS }}
- name: Strip release binary (linux and macos)
if: matrix.build == 'linux' || matrix.build == 'macos'
run: strip "target/${{ matrix.target }}/release/kignore"
- name: Strip release binary (arm)
if: matrix.build == 'linux-arm'
run: |
docker run --rm -v \
"$PWD/target:/target:Z" \
rustembedded/cross:arm-unknown-linux-gnueabihf \
arm-linux-gnueabihf-strip \
/target/arm-unknown-linux-gnueabihf/release/kignore
- name: Build archive
shell: bash
run: |
outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")"
staging="kignore-${{ needs.create-release.outputs.kignore_version }}-${{ matrix.target }}"
mkdir -p "$staging"/{complete,doc}
cp {README.md,COPYING,UNLICENSE,LICENSE-MIT} "$staging/"
cp {CHANGELOG.md,FAQ.md,GUIDE.md} "$staging/doc/"
#cp "$outdir"/{rg.bash,rg.fish,_rg.ps1} "$staging/complete/"
#cp complete/_rg "$staging/complete/"
if [ "${{ matrix.os }}" = "windows-2022" ]; then
cp "target/${{ matrix.target }}/release/kignore.exe" "$staging/"
7z a "$staging.zip" "$staging"
echo "ASSET=$staging.zip" >> $GITHUB_ENV
else
# The man page is only generated on Unix systems.
cp "$outdir"/kignore.1 "$staging/doc/"
cp "target/${{ matrix.target }}/release/kignore" "$staging/"
tar czf "$staging.tar.gz" "$staging"
echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV
fi
- name: Upload release archive
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{ env.ASSET }}
asset_name: ${{ env.ASSET }}
asset_content_type: application/octet-stream

1
.gitignore vendored
View File

@@ -1 +1,2 @@
target/
.cuddle/

59
CHANGELOG.md Normal file
View File

@@ -0,0 +1,59 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.4.0] - 2024-12-22
### Added
- make init zsh
### Other
- make variant for the other shell commands
## [0.3.0] - 2024-12-22
### Added
- make cli look nice
## [0.2.4] - 2024-12-22
### Other
- trigger commit
## [0.2.3] - 2024-12-22
### Other
- trigger commit
## [0.2.2] - 2024-12-22
### Added
- trigger commit
## [0.2.1] - 2024-12-22
### Other
- fix cargo toml
## [0.2.0] - 2024-12-22
### Added
- transform to binary
- redo project structure
### Other
- update lock
## [0.1.3] - 2024-12-22
### Other
- update cargo
## [0.1.2] - 2024-12-22
### Added
- trigger commit

603
Cargo.lock generated
View File

@@ -1,23 +1,70 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "atty"
version = "0.2.14"
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"hermit-abi",
"libc",
"winapi",
"memchr",
]
[[package]]
name = "anstream"
version = "0.6.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
"is_terminal_polyfill",
"utf8parse",
]
[[package]]
name = "anstyle"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
[[package]]
name = "anstyle-parse"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "anstyle-wincon"
version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
dependencies = [
"anstyle",
"windows-sys 0.59.0",
]
[[package]]
name = "bitflags"
version = "1.3.2"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "cfg-if"
@@ -27,84 +74,107 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "4.0.17"
version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06badb543e734a2d6568e19a40af66ed5364360b9226184926f89d229b4b4267"
checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
dependencies = [
"atty",
"bitflags",
"clap_builder",
]
[[package]]
name = "clap_builder"
version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
dependencies = [
"anstream",
"anstyle",
"clap_lex",
"strsim",
"termcolor",
"unicase",
"unicode-width",
]
[[package]]
name = "clap_lex"
version = "0.3.0"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
dependencies = [
"os_str_bytes",
]
checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
[[package]]
name = "colorchoice"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
[[package]]
name = "console"
version = "0.15.2"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c"
checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d"
dependencies = [
"encode_unicode",
"lazy_static",
"libc",
"terminal_size",
"once_cell",
"unicode-width",
"winapi",
"windows-sys 0.60.2",
]
[[package]]
name = "deranged"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
]
[[package]]
name = "dirs"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
dependencies = [
"dirs-sys",
]
[[package]]
name = "dirs-sys"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [
"libc",
"option-ext",
"redox_users",
"windows-sys 0.60.2",
]
[[package]]
name = "encode_unicode"
version = "0.3.6"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
[[package]]
name = "eyre"
version = "0.6.8"
version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb"
checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
dependencies = [
"indenter",
"once_cell",
]
[[package]]
name = "gitignore"
version = "0.1.0"
dependencies = [
"eyre",
"gitignore_inner",
]
[[package]]
name = "gitignore_inner"
version = "0.1.0"
dependencies = [
"clap",
"console",
"eyre",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "hermit-abi"
version = "0.1.19"
name = "getrandom"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
@@ -114,31 +184,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
[[package]]
name = "itoa"
version = "1.0.4"
name = "is_terminal_polyfill"
version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itoa"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "kignore"
version = "0.4.0"
dependencies = [
"clap",
"console",
"dirs",
"eyre",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.135"
version = "0.2.169"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
[[package]]
name = "libredox"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [
"bitflags",
"libc",
]
[[package]]
name = "log"
version = "0.4.17"
version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if",
]
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "matchers"
@@ -146,9 +241,15 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
dependencies = [
"regex-automata",
"regex-automata 0.1.10",
]
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -160,25 +261,31 @@ dependencies = [
]
[[package]]
name = "num_threads"
version = "0.1.6"
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num_threads"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
dependencies = [
"libc",
]
[[package]]
name = "once_cell"
version = "1.15.0"
version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "os_str_bytes"
version = "6.3.0"
name = "option-ext"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "overload"
@@ -188,35 +295,55 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "pin-project-lite"
version = "0.2.9"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "proc-macro2"
version = "1.0.47"
version = "1.0.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.21"
version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.6.0"
name = "redox_users"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
dependencies = [
"regex-syntax",
"getrandom",
"libredox",
"thiserror",
]
[[package]]
name = "regex"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata 0.4.9",
"regex-syntax 0.8.5",
]
[[package]]
@@ -225,41 +352,78 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
dependencies = [
"regex-syntax",
"regex-syntax 0.6.29",
]
[[package]]
name = "regex-automata"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax 0.8.5",
]
[[package]]
name = "regex-syntax"
version = "0.6.27"
version = "0.6.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "serde"
version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "sharded-slab"
version = "0.1.4"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
dependencies = [
"lazy_static",
]
[[package]]
name = "smallvec"
version = "1.10.0"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "strsim"
version = "0.10.0"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "1.0.102"
version = "2.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035"
dependencies = [
"proc-macro2",
"quote",
@@ -267,51 +431,74 @@ dependencies = [
]
[[package]]
name = "termcolor"
version = "1.1.3"
name = "thiserror"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
dependencies = [
"winapi-util",
"thiserror-impl",
]
[[package]]
name = "terminal_size"
version = "0.1.17"
name = "thiserror-impl"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
dependencies = [
"libc",
"winapi",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "thread_local"
version = "1.1.4"
version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
dependencies = [
"cfg-if",
"once_cell",
]
[[package]]
name = "time"
version = "0.3.15"
version = "0.3.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c"
checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
dependencies = [
"deranged",
"itoa",
"libc",
"num-conv",
"num_threads",
"powerfmt",
"serde",
"time-core",
"time-macros",
]
[[package]]
name = "time-core"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de"
dependencies = [
"num-conv",
"time-core",
]
[[package]]
name = "tracing"
version = "0.1.37"
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"cfg-if",
"log",
"pin-project-lite",
"tracing-attributes",
@@ -320,9 +507,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
version = "0.1.23"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [
"proc-macro2",
"quote",
@@ -331,9 +518,9 @@ dependencies = [
[[package]]
name = "tracing-core"
version = "0.1.30"
version = "0.1.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
dependencies = [
"once_cell",
"valuable",
@@ -341,20 +528,20 @@ dependencies = [
[[package]]
name = "tracing-log"
version = "0.1.3"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
"lazy_static",
"log",
"once_cell",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.16"
version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
dependencies = [
"matchers",
"nu-ansi-term",
@@ -371,24 +558,27 @@ dependencies = [
[[package]]
name = "unicase"
version = "2.6.0"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
dependencies = [
"version_check",
]
checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df"
[[package]]
name = "unicode-ident"
version = "1.0.5"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
[[package]]
name = "unicode-width"
version = "0.1.10"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
[[package]]
name = "utf8parse"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "valuable"
@@ -397,10 +587,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "version_check"
version = "0.9.4"
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "winapi"
@@ -418,17 +608,154 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
dependencies = [
"windows-targets 0.53.2",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
"windows_i686_gnullvm 0.52.6",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
"windows_x86_64_msvc 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.53.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
dependencies = [
"windows_aarch64_gnullvm 0.53.0",
"windows_aarch64_msvc 0.53.0",
"windows_i686_gnu 0.53.0",
"windows_i686_gnullvm 0.53.0",
"windows_i686_msvc 0.53.0",
"windows_x86_64_gnu 0.53.0",
"windows_x86_64_gnullvm 0.53.0",
"windows_x86_64_msvc 0.53.0",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"

View File

@@ -1,23 +1,15 @@
[package]
name = "kignore"
version = "0.1.1"
authors = ["Kasper J. Hermansen <contact@kjuulh.io>"]
license = "MIT"
readme = "README.md"
keywords = ["git", "ignore", "clap", "interactive"]
repository = "https://github.com/kjuulh/gitignore"
documentation = "https://docs.rs/gitignore"
description = """
kignore is a tool for easily adding patterns to .gitignore and cleaning up afterwards
"""
categories = ["command-line-interface"]
edition = "2021"
[workspace]
members = [
"crates/gitignore_inner"
]
members = ["crates/*"]
resolver = "2"
[dependencies]
eyre = "0.6.8"
gitignore_inner = {path = "crates/gitignore_inner", version = "0.1.0"}
[workspace.package]
version = "0.4.0"
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
debug = false
panic = "abort"
overflow-checks = false
strip = true

View File

@@ -1 +0,0 @@
pkg/brew/

7
LICENSE-MIT Normal file
View File

@@ -0,0 +1,7 @@
Copyright 2022 Kasper Juul Hermansen
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -27,19 +27,22 @@ Cargo will only pull the `kignore` command and won't add a subcommand to `git.
```bash
$ cargo install kignore
$ cargo binstall kignore # binstall will warn that git.front.kjuulh.io isn't a valid repo, it is still installable though
```
#### Post install
To get the `git ignore` subcommand working you will need to have the file
git-ignore available on your path, either add it yourself using
`git-alias/git-ignore` as a template or:
git-ignore available on your path
```
git clone https://github.com/kjuulh/gitignore
./scripts/install-git-alias.sh # only tested on mac and linux
# zsh
eval "kignore init zsh"
# shell
eval "kignore init sh"
# bash
eval "kignore init bash"
```
### Homebrew
TBA

View File

@@ -1,33 +0,0 @@
#!/bin/bash
set -e
D="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
# This script builds a binary dpkg for Debian based distros. It does not
# currently run in CI, and is instead run manually and the resulting dpkg is
# uploaded to GitHub via the web UI.
#
# Note that this requires 'cargo deb', which can be installed with
# 'cargo install cargo-deb'.
#
# This should be run from the root of the ripgrep repo.
if ! command -V cargo-deb > /dev/null 2>&1; then
echo "cargo-deb command missing" >&2
exit 1
fi
# 'cargo deb' does not seem to provide a way to specify an asset that is
# created at build time, such as ripgrep's man page. To work around this,
# we force a debug build, copy out the man page (and shell completions)
# produced from that build, put it into a predictable location and then build
# the deb, which knows where to look.
cargo build
DEPLOY_DIR=deployment/deb
OUT_DIR="$("$D"/cargo-out-dir target/debug/)"
mkdir -p "$DEPLOY_DIR"
# Since we're distributing the dpkg, we don't know whether the user will have
# PCRE2 installed, so just do a static build.
PCRE2_SYS_STATIC=1 cargo deb --target x86_64-unknown-linux-musl

View File

@@ -1,14 +0,0 @@
#!/bin/bash
if [ $# != 1 ]; then
echo "Usage: $(basename "$0") <target-dir>" >&2
exit 2
fi
# This works by finding the most recent stamp file, which is produced by
# every ripgrep build.
target_dir="$1"
find "$target_dir" -name kignore-stamp -print0 \
| xargs -0 ls -t \
| head -n1 \
| xargs dirname

View File

@@ -1,10 +0,0 @@
#!/bin/sh
if ! command -V sudo; then
apt-get update
apt-get install -y --no-install-recommends sudo
fi
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
zsh xz-utils liblz4-tool musl-tools \
brotli zstd

View File

@@ -1,23 +0,0 @@
[package]
name = "gitignore_inner"
version = "0.1.0"
edition = "2021"
authors = ["Kasper J. Hermansen <contact@kjuulh.io>"]
license = "MIT"
readme = "../../README.md"
keywords = ["git", "ignore", "clap", "interactive"]
repository = "https://github.com/kjuulh/gitignore"
documentation = "https://docs.rs/gitignore"
description = """
gitignore_inner is the internal module for cargo
"""
categories = ["command-line-interface"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = { version = "4.0.17", features = ["env", "unicode", "string"] }
console = "0.15.2"
eyre = "0.6.8"
tracing = { version = "0.1.37", features = ["log"] }
tracing-subscriber = { version = "0.3.16", features = ["local-time", "env-filter"] }

View File

@@ -1,191 +0,0 @@
use clap::{Arg, Command};
use eyre::{Context, ContextCompat};
use std::io::prelude::*;
use std::{env::current_dir, io::Read, path::PathBuf};
fn main() -> eyre::Result<()> {
let matches = Command::new("gitignore")
.version("0.1")
.author("Kasper J. Hermansen <contact@kjuulh.io>")
.about("Easily ignore items and remove from git state")
.long_about("git ignore is a utility tool for easily adding patterns to your .gitignore file.
Easily add patterns using `git ignore <pattern>` this will by default also help you remove committed code violating these patterns
")
.propagate_version(true)
.arg(
Arg::new("pattern")
.help("the pattern you want to ignore")
.long_help("the pattern you want to ignore in the nearest .gitignore file")
.required(true),
).arg(
Arg::new("log-level").long("log-level").help("choose a log level and get more messages").long_help("Choose a log level and get more message, defaults to [INFO]"))
.get_matches();
let pattern = matches
.get_one::<String>("pattern")
.context("missing [pattern]")?;
add_gitignore_pattern(pattern)
}
enum GitActions {
AddPattern {
git_path: PathBuf,
gitignore_path: PathBuf,
},
CreateIgnoreAndAddPattern {
git_path: PathBuf,
},
}
fn add_gitignore_pattern(pattern: &String) -> eyre::Result<()> {
let curdir = current_dir().context(
"could not find current_dir, you may not have permission to access that directory",
)?;
let actions = match search_for_dotgitignore(&curdir)? {
// If we have an ignore path, make sure it is in a git repo as well
GitSearchResult::GitIgnore(ignorepath) => match search_for_git_root(&curdir)? {
GitSearchResult::Git(gitpath) => GitActions::AddPattern {
git_path: gitpath,
gitignore_path: ignorepath,
},
_ => return Err(eyre::anyhow!("could not find parent git directory")),
},
// Find the nearest git repo
GitSearchResult::Git(gitpath) => {
GitActions::CreateIgnoreAndAddPattern { git_path: gitpath }
} // We will always have either above, or an error so we have no default arm
};
match actions {
GitActions::AddPattern {
git_path,
gitignore_path,
} => {
let mut gitignore_file = open_gitignore_file(&gitignore_path)?;
// TODO: search for pattern in file
let mut gitignore_content = String::new();
gitignore_file
.read_to_string(&mut gitignore_content)
.context(format!(
"could not read file: {}",
gitignore_path.to_string_lossy()
))?;
if gitignore_content.contains(pattern) {
return Ok(());
}
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
gitignore_file
.sync_all()
.context("failed to write data to disk")?;
}
GitActions::CreateIgnoreAndAddPattern { git_path } => {
// TODO: Create gitignore file in root
let mut gitignore_file = create_gitignore_file(&git_path)?;
// TODO: do same as above
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
gitignore_file
.sync_all()
.context("failed to write data to disk")?;
}
}
// TODO: Run git rm -r --cached on the .git root
Ok(())
}
fn create_gitignore_file(gitroot: &PathBuf) -> eyre::Result<std::fs::File> {
let mut ignore_path = gitroot.clone();
if !ignore_path.pop() {
return Err(eyre::anyhow!("could not open parent dir"));
}
ignore_path.push(".gitignore");
let file = std::fs::File::create(ignore_path.clone()).context(format!(
"could not create file at path: {}",
ignore_path.to_string_lossy()
))?;
Ok(file)
}
fn open_gitignore_file(gitignore: &PathBuf) -> eyre::Result<std::fs::File> {
let file = std::fs::OpenOptions::new()
.read(true)
.write(true)
.open(gitignore)
.context(format!(
"could not create file at path: {}",
gitignore.to_string_lossy()
))?;
return Ok(file);
}
enum GitSearchResult {
GitIgnore(PathBuf),
Git(PathBuf),
}
fn search_for_git_root(path: &PathBuf) -> eyre::Result<GitSearchResult> {
if !path.is_dir() {
return Err(eyre::anyhow!(
"path is not a dir: {}",
path.to_string_lossy()
));
}
let direntries = std::fs::read_dir(path)
.context(format!("could not open dir: {}", path.to_string_lossy()))?;
for direntry in direntries {
let entry = direntry.context("could not access file")?;
let file_name = entry.file_name().to_os_string();
match file_name.to_str().context("could not convert to str")? {
".git" => return Ok(GitSearchResult::Git(entry.path())),
_ => {}
}
}
let mut upwards_par = path.clone();
if !upwards_par.pop() {
return Err(eyre::anyhow!(
"no parent exists, cannot check further, you may not be in a git repository"
));
}
search_for_git_root(&upwards_par)
}
fn search_for_dotgitignore(path: &PathBuf) -> eyre::Result<GitSearchResult> {
if !path.is_dir() {
return Err(eyre::anyhow!(
"path is not a dir: {}",
path.to_string_lossy()
));
}
let direntries = std::fs::read_dir(path)
.context(format!("could not open dir: {}", path.to_string_lossy()))?;
for direntry in direntries {
let entry = direntry.context("could not access file")?;
let file_name = entry.file_name().to_os_string();
match file_name.to_str().context("could not convert to str")? {
".gitignore" => return Ok(GitSearchResult::GitIgnore(entry.path())),
".git" => return Ok(GitSearchResult::Git(entry.path())),
_ => {}
}
}
let mut upwards_par = path.clone();
if !upwards_par.pop() {
return Err(eyre::anyhow!(
"no parent exists, cannot check further, you may not be in a git repository"
));
}
search_for_dotgitignore(&upwards_par)
}

28
crates/kignore/Cargo.toml Normal file
View File

@@ -0,0 +1,28 @@
[package]
name = "kignore"
version.workspace = true
authors = ["Kasper J. Hermansen <contact@kjuulh.io>"]
license = "MIT"
readme = "../../README.md"
keywords = ["git", "ignore", "clap", "interactive"]
repository = "https://git.front.kjuulh.io/kjuulh/gitignore"
documentation = "https://docs.rs/kignore"
description = """
kignore is a tool for easily adding patterns to .gitignore and cleaning up afterwards
"""
categories = ["command-line-interface"]
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = { version = "4.5.4", features = ["env", "unicode", "string"] }
console = "0.16.0"
dirs = "6.0.0"
eyre = "0.6.12"
tracing = { version = "0.1.40", features = ["log"] }
tracing-subscriber = { version = "0.3.18", features = [
"local-time",
"env-filter",
] }

View File

@@ -1,28 +1,76 @@
use clap::{Arg, Command};
use eyre::{Context, ContextCompat};
use console::style;
use eyre::{Context, ContextCompat, OptionExt};
use std::io::prelude::*;
use std::os::unix::fs::PermissionsExt;
use std::{env::current_dir, io::Read, path::PathBuf};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
const ZSH_FILE_CONTENTS: &[u8] = b"#!/usr/bin/env zsh
set -e
kignore $@
";
const SH_FILE_CONTENTS: &[u8] = b"#!/usr/bin/env sh
set -e
kignore $@
";
const BASH_FILE_CONTENTS: &[u8] = b"#!/usr/bin/env bash
set -e
kignore $@
";
pub fn main() -> eyre::Result<()> {
let matches = Command::new("gitignore")
.version("0.1")
.author("Kasper J. Hermansen <contact@kjuulh.io>")
.about("Easily ignore items and remove from git state")
.long_about("git ignore is a utility tool for easily adding patterns to your .gitignore file.
Easily add patterns using `git ignore <pattern>` this will by default also help you remove committed code violating these patterns
")
.long_about(
"git ignore is a utility tool for easily adding patterns to your .gitignore file.
Easily add patterns using `git ignore <pattern>` this will by default
also help you remove committed code violating these patterns
",
)
.propagate_version(true)
.arg(
Arg::new("pattern")
.help("the pattern you want to ignore")
.long_help("the pattern you want to ignore in the nearest .gitignore file")
.required(true),
).arg(
Arg::new("log-level").long("log-level").help("choose a log level and get more messages").long_help("Choose a log level and get more message, defaults to [fatal]"))
.long_help("the pattern you want to ignore in the nearest .gitignore file"),
)
.arg(
Arg::new("log-level")
.long("log-level")
.default_value("warn")
.help("choose a log level and get more messages")
.long_help("Choose a log level and get more message, defaults to [warn]"),
)
.subcommand(
clap::Command::new("init")
.subcommand_required(true)
.subcommand(Command::new("zsh"))
.subcommand(Command::new("sh"))
.subcommand(Command::new("bash")),
)
.get_matches();
match matches.subcommand() {
Some(("init", args)) => match args
.subcommand()
.expect("should never be able to call on init")
{
("zsh", _) => init_script(ShellType::Zsh),
("bash", _) => init_script(ShellType::Bash),
("sh", _) => init_script(ShellType::Shell),
(subcommand, _) => {
panic!("cannot call on subcommand: {}", subcommand);
}
},
_ => {
let log_level = match matches.get_one::<String>("log-level").map(|f| f.as_str()) {
Some("off") => "off",
Some("info") => "info",
@@ -47,6 +95,8 @@ Easily add patterns using `git ignore <pattern>` this will by default also help
.context("missing [pattern]")?;
add_gitignore_pattern(term, pattern)
}
}
}
enum GitActions {
@@ -55,7 +105,7 @@ enum GitActions {
}
fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<()> {
term.write_line("git ignore: Add pattern")?;
println!("git ignore: Add pattern");
let curdir = current_dir().context(
"could not find current_dir, you may not have permission to access that directory",
)?;
@@ -75,7 +125,7 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
match actions {
GitActions::AddPattern { gitignore_path } => {
term.write_line("Found existing .gitignore")?;
println!("Found existing {}", style(".gitignore").green());
let mut gitignore_file = open_gitignore_file(&gitignore_path)?;
let mut gitignore_content = String::new();
gitignore_file
@@ -85,22 +135,26 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
gitignore_path.to_string_lossy()
))?;
if gitignore_content.contains(pattern) {
term.write_line(".gitignore already contains pattern, skipping")?;
println!(
".gitignore already contains pattern, {}",
style("skipping...").blue()
);
return Ok(());
}
term.write_line("adding pattern to file")?;
println!("adding pattern to file");
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
gitignore_file
.sync_all()
.context("failed to write data to disk")?;
}
GitActions::CreateIgnoreAndAddPattern { git_path } => {
term.write_line(
"could not find .gitignore file, creating one in the root of the git repository",
)?;
let mut gitignore_file = create_gitignore_file(&git_path)?;
term.write_line("adding pattern to file")?;
println!(
"could not find {} file, creating one in the root of the git repository",
style(".gitignore").yellow()
);
let mut gitignore_file = create_gitignore_file(git_path)?;
println!("adding pattern to file");
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
gitignore_file
.sync_all()
@@ -113,6 +167,7 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
.arg("rm")
.arg("-r")
.arg("--cached")
.arg("-f")
.arg("--ignore-unmatch")
.arg(pattern)
.output()
@@ -120,8 +175,19 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
String::from_utf8(output.stdout)?
.lines()
.chain(String::from_utf8(output.stderr)?.lines())
.try_for_each(|l| term.write_line(l))
.context("could not print all output to terminal")?;
.map(|l| {
// make rm 'path' look nice
if l.contains("rm") {
if let Some((_, pruned_first)) = l.split_once("'") {
if let Some((content, _)) = pruned_first.rsplit_once("'") {
return content;
}
}
}
l
})
.for_each(|l| println!("removed from git history: {}", style(l).yellow()));
if !output.status.success() {
return Err(eyre::anyhow!("failed to run git index command"));
@@ -132,7 +198,7 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
Ok(())
}
fn create_gitignore_file(gitroot: &PathBuf) -> eyre::Result<std::fs::File> {
fn create_gitignore_file(gitroot: PathBuf) -> eyre::Result<std::fs::File> {
let mut ignore_path = gitroot.clone();
if !ignore_path.pop() {
return Err(eyre::anyhow!("could not open parent dir"));
@@ -156,7 +222,7 @@ fn open_gitignore_file(gitignore: &PathBuf) -> eyre::Result<std::fs::File> {
gitignore.to_string_lossy()
))?;
return Ok(file);
Ok(file)
}
enum GitSearchResult {
@@ -178,9 +244,8 @@ fn search_for_git_root(path: &PathBuf) -> eyre::Result<GitSearchResult> {
let entry = direntry.context("could not access file")?;
let file_name = entry.file_name().to_os_string();
match file_name.to_str().context("could not convert to str")? {
".git" => return Ok(GitSearchResult::Git(entry.path())),
_ => {}
if file_name.to_str().context("could not convert to str")? == ".git" {
return Ok(GitSearchResult::Git(entry.path()));
}
}
@@ -209,10 +274,20 @@ fn search_for_dotgitignore(path: &PathBuf) -> eyre::Result<GitSearchResult> {
let file_name = entry.file_name().to_os_string();
match file_name.to_str().context("could not convert to str")? {
".gitignore" => return Ok(GitSearchResult::GitIgnore(entry.path())),
".git" => return Ok(GitSearchResult::Git(entry.path())),
_ => {}
if file_name.to_str().context("could not convert to str")? == ".gitignore" {
return Ok(GitSearchResult::GitIgnore(entry.path()));
}
}
let direntries = std::fs::read_dir(path)
.context(format!("could not open dir: {}", path.to_string_lossy()))?;
for direntry in direntries {
let entry = direntry.context("could not access file")?;
let file_name = entry.file_name().to_os_string();
if file_name.to_str().context("could not convert to str")? == ".git" {
return Ok(GitSearchResult::Git(entry.path()));
}
}
@@ -225,3 +300,50 @@ fn search_for_dotgitignore(path: &PathBuf) -> eyre::Result<GitSearchResult> {
search_for_dotgitignore(&upwards_par)
}
enum ShellType {
Bash,
Shell,
Zsh,
}
fn init_script(shell: ShellType) -> eyre::Result<()> {
let bin_dir = dirs::executable_dir().ok_or_eyre("failed to find executable dir")?;
let script = match shell {
ShellType::Bash => BASH_FILE_CONTENTS,
ShellType::Shell => SH_FILE_CONTENTS,
ShellType::Zsh => ZSH_FILE_CONTENTS,
};
let alias_script = bin_dir.join("git-ignore");
if let Ok(existing_file) = std::fs::read(&alias_script) {
if existing_file == script {
return Ok(());
}
} else {
std::fs::create_dir_all(&bin_dir).context("failed to create bin dir")?;
}
let mut file = std::fs::OpenOptions::new()
.write(true)
.create(true)
.truncate(true)
.open(&alias_script)?;
file.write_all(script)?;
file.flush()?;
// Set the file to be executable
let metadata = file.metadata()?;
let mut permissions = metadata.permissions();
permissions.set_mode(0o755); // rwxr-xr-x
file.set_permissions(permissions)?;
println!(
"successfully wrote alias to {}",
style(alias_script.display()).green()
);
Ok(())
}

28
cuddle.yaml Normal file
View File

@@ -0,0 +1,28 @@
# yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json
base: "git@git.front.kjuulh.io:kjuulh/cuddle-rust-cli-plan.git"
vars:
service: "kignore"
registry: kasperhermansen
rust:
publish: {}
please:
project:
owner: kjuulh
repository: gitignore
branch: main
settings:
api_url: https://git.front.kjuulh.io
actions:
rust:
components:
packages:
debian:
dev:
- git
release:
- git

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env sh
set -e
gitignore $@

View File

@@ -1,16 +0,0 @@
class Kignore < Formula
desc "Easily add items to .gitignore and cleanup afterwards"
homepage "https://github.com/kjuulh/gitignore"
version '0.1.1'
license "MIT"
if OS.mac?
url "https://github.com/kjuulh/kignore/releases/download/#{version}/kignore-#{version}-x86_64-apple-darwin.tar.gz"
sha256 ""
end
def install
bin.install "kignore"
end
end

3
renovate.json Normal file
View File

@@ -0,0 +1,3 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}

View File

@@ -1,8 +0,0 @@
#!/usr/bin/env bash
set -e
mkdir ~/.git-bins
cp git-alias/git-ignore ~/.git-bins/git-ignore
echo "Make sure to add ~/.git-bins to your PATH"

View File

@@ -1,3 +0,0 @@
fn main() -> eyre::Result<()> {
gitignore_inner::main()
}