From f68d65d32a4fce41f08ac229614b7e46baf5e916 Mon Sep 17 00:00:00 2001 From: Mitchel Humpherys Date: Fri, 11 Jun 2021 21:09:08 -0700 Subject: [PATCH] feat(take): add support to `take' for taking remote urls (#2029) Download, extract, and cd into the resulting directory. Co-authored-by: Mitchel Humpherys --- lib/functions.zsh | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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. #