#!/usr/bin/env bash function print_help(){ echo -e "switch\t\tSwitches the current project" echo -e "\t--auto\tAutomatically deduce the project based on current working directory" echo -e "\t--fzf\tUses fzf to choose a project" echo -e "\t--dmenu\tUses dmenu to choose a project" echo -e "\t--rofi\tUses rofi to choose a project" echo -e "\t--unset\tUnsets the project" echo -e "\t\tSets the project" } function auto_switch(){ local switchto if echo "$PWD" | grep -q "$PROJECTS_PATH"; then switchto=$( echo "$PWD" | sed "s#$PROJECTS_PATH/##") switchto="${switchto%/*}" if [[ "$PWD" == "$PROJECTS_PATH" ]]; then switchto="--unset" fi else switchto="--unset" fi "$0" "$switchto" } function unset_project(){ if [ -L "$SYMLINC" ]; then rm "$SYMLINC" 2> /dev/null # See note about SIGWINCH below pkill -u $USER -SIGWINCH zsh project hosts hosts_file fi } function set_project(){ [ -z "$1" ] && exit 1 local switchto="$PROJECTS_PATH/$1" if [ -d "$switchto" ]; then if [ -L "$SYMLINC" ]; then rm "$SYMLINC" 2> /dev/null fi ln -s "$switchto" "$SYMLINC" pkill -u $USER -SIGWINCH zsh project hosts hosts_file else echo "No such directory $switchto" exit 1 fi } case "$1" in -h|--help) print_help | column -t -s" " exit 0 ;; --parent-help) print_help exit 0 ;; --auto) auto_switch exit 0 ;; --fzf) project-list --options | fzf --no-preview | xargs "$0" exit 0 ;; --dmenu) project-list --options | dmenu -i | xargs "$0" exit 0 ;; --rofi) project-list --options | rofi -dmenu -i | xargs "$0" exit 0 ;; --unset) unset_project exit 0 ;; --new) project_new exit 0 ;; *) set_project "$1" #list_projects "$@" exit 0 ;; esac