summaryrefslogtreecommitdiff
path: root/ar/.config/zsh/packages.zsh
blob: 2210ed2f1ef07482f58a0c211e98bef42bdcba36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/zsh

### --- Packages --- ###
# Value format: "<subcmd> [args...]"
# Most tools use `init` (zoxide/atuin/batman/...); some use `hook` (direnv),
# `activate` (mise), `env` (fnm), etc. — encode it per-package.
typeset -A packages
packages=(
    atuin "init --disable-up-arrow"
    batman "init --export-env"
    direnv "hook"
    zoxide "init --cmd cd --hook prompt"
    tmuxdbussync "init"
)

### --- Eval Function --- ###
eval_packages() {
    for package in ${(k)packages}; do
        if command -v "$package" >/dev/null; then
            local parts=(${(s: :)packages[$package]})
            (( ${#parts[@]} > 0 )) || continue
            local subcmd=${parts[1]}
            local args=(${parts[2,-1]})
            eval "$($package $subcmd zsh ${args[@]})"
        fi
    done
}

### --- Init --- ###
eval_packages