Browse Source

feat(take): add support to `take' for taking remote urls (#2029)

Download, extract, and cd into the resulting directory.

Co-authored-by: Mitchel Humpherys <mitchelh@codeaurora.org>
Mitchel Humpherys 3 years ago
parent
commit
f68d65d32a
1 changed files with 25 additions and 1 deletions
  1. 25 1
      lib/functions.zsh

+ 25 - 1
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.
 #