diff options
Diffstat (limited to '.zsh/func')
-rwxr-xr-x | .zsh/func/baseconv | 20 | ||||
-rwxr-xr-x | .zsh/func/vcsh | 48 |
2 files changed, 68 insertions, 0 deletions
diff --git a/.zsh/func/baseconv b/.zsh/func/baseconv new file mode 100755 index 0000000..05e7d8d --- /dev/null +++ b/.zsh/func/baseconv @@ -0,0 +1,20 @@ +#!/bin/zsh +# +# func/baseconv +# +# zsh-based conversion between numeric bases +# +# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net> +# Released under the terms of the Artistic Licence 2.0 +# +# Source repository: git://git.madduck.net/etc/zsh.git +# + +if [ $# -ne 3 ]; then + echo Usage: ${0##*/} ibase obase number + return 1 +fi + +typeset -li $2 var +eval ((var=${1}#${3})) +echo ${var#*\#} diff --git a/.zsh/func/vcsh b/.zsh/func/vcsh new file mode 100755 index 0000000..31da22d --- /dev/null +++ b/.zsh/func/vcsh @@ -0,0 +1,48 @@ +#!/bin/zsh +# +# func/vcsh +# +# set the context for vcs-home operations +# +# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net> +# Released under the terms of the Artistic Licence 2.0 +# +# Source repository: git://git.madduck.net/etc/zsh.git +# +# Adapted by Tobias Klauser <tklauser@distanz.ch> +# +# Source repository: git://git.distanz.ch/dotfiles/zsh.git + +local FGIT_BASE="$HOME/src/dotfiles" + +if [ "${1:---help}" = '--help' ] || [ $# -gt 1 ]; then + echo "usage: ${0##*/} reponame" >&2 + echo "usage: ${0##*/} -l" >&2 + [ "$1" = '--help' ] + return $? + +elif [ "$1" = '-l' ]; then + for i in $FGIT_BASE/*.git; do + i="${i#$FGIT_BASE/}" + echo "${i%.git}" + done + return 0 +fi + +if [ ! -d "$FGIT_BASE/${1}.git" ]; then + echo E: no repository found for "$1" >&2 + return 2 +fi + +old_GIT_DIR="${GIT_DIR:-}" +old_GIT_WORK_TREE="${GIT_WORK_TREE:-}" + +export GIT_DIR="$FGIT_BASE/${1}.git" +export GIT_WORK_TREE="$GIT_DIR/$(git config --get core.worktree)" + +$SHELL -i || : + +GIT_DIR="$old_GIT_DIR" +[ -z "$GIT_DIR" ] && unset GIT_DIR +GIT_WORK_TREE="$old_GIT_WORK_TREE" +[ -z "$GIT_WORK_TREE" ] && unset GIT_WORK_TREE |