40 lines
1.0 KiB
Bash
Executable File
40 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
config="$HOME/.config/git/identities"
|
|
input="${1:-}"
|
|
usage="Usage
|
|
git identity [<name>|help|-]
|
|
git-identity --help
|
|
"
|
|
[ -z "$input" ] \
|
|
&& echo "$usage"\
|
|
&& echo -e "$config/current.conf … current identity:" \
|
|
&& cat "$config/current.conf" \
|
|
&& exit 0
|
|
[ "$input" = --help ] \
|
|
&& input="help"
|
|
[ "$input" = help ] \
|
|
&& echo "$usage"\
|
|
&& echo '- _empty_: shows usage and current identity' \
|
|
&& echo '- <name>: set identity' \
|
|
&& echo '- -: show path to identities directory' \
|
|
&& echo '- help: shows this help' \
|
|
&& echo -e '\n\nExamples' \
|
|
&& echo '- git identity' \
|
|
&& echo '- git identity user' \
|
|
&& echo '- ls $(git identity -)' \
|
|
&& echo -e '\n\nGit config' \
|
|
&& echo "- git config --global include.path '$config/current.conf'" \
|
|
&& exit 0
|
|
[ "$input" = - ] \
|
|
&& echo "$config" \
|
|
&& exit 0
|
|
|
|
identity="$config/$input.conf"
|
|
[ ! -e "$identity" ] \
|
|
&& echo "No such identity: $input" >&2 \
|
|
&& echo "$identity" >&2 \
|
|
&& exit 1
|
|
|
|
ln --verbose --force "$identity" "$config/current.conf"
|