Crates.io | shim |
lib.rs | shim |
version | 0.1.4 |
source | src |
created_at | 2022-10-25 23:45:29.280562 |
updated_at | 2023-01-01 23:23:46.687134 |
description | Create shims for executables from config files |
homepage | https://github.com/adam-gaia/shim |
repository | https://github.com/adam-gaia/shim |
max_upload_size | |
id | 697397 |
size | 59,608 |
Create shims for executables from config files.
API may change wildly until while the major version number is 0.
Once this crate's version hits 1.0.0
api changes will only happen with major version bumps.
cargo install shim
shim --help
My git configuration was scattered over too many places
Git allows arbitrary commands to be named with prefix git-
and git will
My git config file defined aliases
[alias]
url = remote get-url origin
root = rev-parse --show-toplevel
commit = !cz commit
cz = !cz commit
function git() {
# Run pre-commit first for immediate feedback
pre-commit # TODO: only run on some git commands
# Override functionality based on the first argument, the subcommmand
case "$1" in
'commit')
cz commit
;;
'init'|clone)
# Run command before creating a new repo on filesystem
git-track-repos --quiet "$@"
# Unlike other commands, make sure to run the git operation still
git "$@"
;;
*)
# Fall back to actual git for everything else
git "${@}"
;;
esac
# Run these after any git operation completes
git-track-repos # This is a program I wrote to keep track of all repos I've cloned
}
I've created quite a few hooks.
I've written a tool for some of my hooks (TODO: publish that tool and link here) in rust. I plan for shim
to be able to load shims from dynamic libraries instead of forking a bunch of processes