diff --git a/lib/functions.zsh b/lib/functions.zsh index c4340f16c..9cc735196 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -13,7 +13,7 @@ function upgrade_oh_my_zsh() { omz update } -function take() { +function takedir() { mkdir -p $@ && cd ${@:$#} } @@ -37,6 +37,30 @@ function open_command() { ${=open_cmd} "$@" &>/dev/null } +function takeurl() { + data=$(mktemp) + curl -L $1 > $data + tar xf $data + thedir=$(tar tf $data | head -1) + rm $data + cd $thedir +} + +function takegit() { + git clone $1 + cd $(basename ${1%%.git}) +} + +function take() { + if [[ $1 =~ ^(https?|ftp).*\.tar\.(gz|bz2|xz)$ ]]; then + takeurl $1 + elif [[ $1 =~ ^([A-Za-z0-9]\+@|https?|git|ssh|ftps?|rsync).*\.git/?$ ]]; then + takegit $1 + else + takedir $1 + fi +} + # # Get the value of an alias. #