Mon, 08 May 2023 02:36:32 -0500
add basic nix alternative for stubs
932 | 1 | realpath() { |
2 | local dir="$(dirname -- "$1")" | |
3 | local file="$(basename -- "$1")" | |
4 | (cd "$dir" 2>/dev/null && printf '%s/%s\n' "$(pwd -P)" "$file") | |
5 | } | |
6 | ||
958
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
7 | shim_filter() { |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
8 | local binpath='' |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
9 | while read binpath; do |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
10 | case "$binpath" in |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
11 | */.plenv/shims/*) |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
12 | plenv which $1 >/dev/null 2>&1 || continue |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
13 | ;; |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
14 | */.asdf/shims/*) |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
15 | asdf which $1 >/dev/null 2>&1 || continue |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
16 | ;; |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
17 | esac |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
18 | echo "$binpath" |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
19 | done |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
20 | } |
b883fb5c4792
filter out shims that wont work
Meredith Howard <mhoward@roomag.org>
parents:
957
diff
changeset
|
21 | |
1002
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
22 | age_check() { |
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
23 | local subject='' |
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
24 | read subject |
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
25 | find "$subject" -mtime -${age_limit:-90} -print |
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
26 | } |
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
27 | |
957 | 28 | realbin() { |
960 | 29 | local bn="$(basename $1)" |
30 | which -a "$bn" | | |
957 | 31 | grep -v "$(realpath $1)" | |
960 | 32 | shim_filter "$bn" | |
957 | 33 | head -n 1 |
34 | } | |
35 | ||
915 | 36 | stubexec() { |
1002
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
37 | local real_bin="$(realbin "$0" | age_check)" |
915 | 38 | if [ -x "$real_bin" ]; then |
995 | 39 | exec "$real_bin" "$@" |
915 | 40 | fi |
1112
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
41 | try_nix_run "$@" |
957 | 42 | install_it |
1002
8284b9cac608
Add age limit reinstall check
Meredith Howard <mhoward@roomag.org>
parents:
995
diff
changeset
|
43 | touch "$(realbin "$0")" # In case of no updates |
995 | 44 | stubexec "$@" |
915 | 45 | } |
992
4e3e37ce84bc
Switch stubexec to self-invoke
Meredith Howard <mhoward@roomag.org>
parents:
960
diff
changeset
|
46 | |
1112
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
47 | has() { |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
48 | type "$1" >/dev/null 2>&1 |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
49 | } |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
50 | |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
51 | try_nix_run() { |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
52 | if [ "${nix_ref:-}" ] && has nix; then |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
53 | # FIXME: this can be GC'd and doesn't allow running alternate commands |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
54 | exec nix run "$nix_ref" -- "$@" |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
55 | fi |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
56 | } |
0ae7864c4ad8
add basic nix alternative for stubs
Meredith Howard <mhoward@roomag.org>
parents:
1110
diff
changeset
|
57 | |
1110
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
58 | bina_install() { |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
59 | local github_repo="$1" |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
60 | mkdir -p ~/.local/bin |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
61 | cd ~/.local/bin |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
62 | curl -fsSL "https://bina.egoist.dev/${github_repo}?dir=." | sh |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
63 | cd - |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
64 | } |
e4edb1419e3f
factor out bina install
Meredith Howard <mhoward@roomag.org>
parents:
1002
diff
changeset
|
65 | |
992
4e3e37ce84bc
Switch stubexec to self-invoke
Meredith Howard <mhoward@roomag.org>
parents:
960
diff
changeset
|
66 | stubexec "$@" |