# Creates an archive (*.tar.gz) from given directory.
function maketar() { tar cvzf "${1%%/}.tar.gz"  "${1%%/}/"; }

# Create a ZIP archive of a file or folder.
function makezip() { zip -r "${1%%/}.zip" "$1" ; }

function extract() {
 if [ -z "$1" ]; then
    # display usage if no parameters given
    echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
 else
    if [ -f "$1" ] ; then
        case "$1" in
          *.tar.bz2)   tar xvjf "$1"    ;;
          *.tar.gz)    tar xvzf "$1"    ;;
          *.tar.xz)    tar xvJf "$1"    ;;
          *.lzma)      unlzma "$1"      ;;
          *.bz2)       bunzip2 "$1"     ;;
          *.rar)       unrar x -ad "$1" ;;
          *.gz)        gunzip "$1"      ;;
          *.tar)       tar xvf "$1"     ;;
          *.tbz2)      tar xvjf "$1"    ;;
          *.tgz)       tar xvzf "$1"    ;;
          *.zip)       unzip "$1"       ;;
          *.Z)         uncompress "$1"  ;;
          *.7z)        7z x "$1"        ;;
          *.xz)        unxz "$1"        ;;
          *.exe)       cabextract "$1"  ;;
          *)           echo "extract: '$1' - unknown archive method" ;;
        esac
    else
        echo "$1 - file does not exist"
    fi
fi
}

# jump directorys upwards until it hits a directory with multiple folders
function up() {
  local d=""
  limit="$1"
  for ((i=1 ; i <= limit ; i++))
    do
      d="$d/.."
    done
  d=$(echo "$d" | sed 's/^\///')
  if [ -z "$d" ]; then
    d=..
  fi
  cd "$d"
}

# create an directory and directly cd into it
function mcd() {
  mkdir -p "$1"
  cd "$1"
}

# Weather in your terminal, optionally take the city in argument (e.g: VPN)
function meteo() {
    curl "http://wttr.in/$1" # Bonus: try to see the weather on 'moon'
}

# Use Vim as an Info reader with a plug-in
function vinfo() {
    page="$1"
    shift
    node="${*// /\ }"
    echo vim "+Info $page $node" "+only"
    vim "+Info $page $node" "+only"
}