You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
2.8 KiB
143 lines
2.8 KiB
5 years ago
|
#!/usr/bin/env bash
|
||
|
|
||
|
# This script sets things based on my current project and will set the symlink ~/Projects/current to the correct folder
|
||
|
|
||
|
# GLOBAL VARIABLES
|
||
|
export PROJECTS_PATH="$HOME/Projects"
|
||
|
export SYMLINC="$PROJECTS_PATH/current"
|
||
|
|
||
|
function print_subcommand_details(){
|
||
|
"$1" --parent-help
|
||
|
}
|
||
|
|
||
|
# Prints help text
|
||
|
function print_help(){
|
||
|
echo "Manages projects"
|
||
|
echo ""
|
||
|
echo -e "Usage: $0 <command> [<args>]"
|
||
|
echo ""
|
||
|
echo -e "Commands"
|
||
|
echo -e "--------"
|
||
|
|
||
|
echo $PATH | tr ':' '\n' | while read line; do
|
||
|
find "$line" -maxdepth 1 -type f -executable -name project-\* -exec basename {} \; 2> /dev/null
|
||
|
done | sort | uniq | while read line; do
|
||
|
print_subcommand_details "$line"
|
||
|
done | column -t -s" "
|
||
|
|
||
|
#echo -e "copy <target> <files> [..<files>]\t\tCopies files to a target in the project"
|
||
|
#echo -e "\t--bin\t\tCopy to bin directory (inside \$PATH)"
|
||
|
#echo -e "\t--www\t\tCopy to the www directory"
|
||
|
|
||
|
exit 0
|
||
|
}
|
||
|
|
||
|
# Manipulates hosts for the project
|
||
|
function hosts(){
|
||
|
local current="$(project current --path)"
|
||
|
index="$current/index.yaml"
|
||
|
if [ -n "$1" ] ; then
|
||
|
case "$1" in
|
||
|
ip)
|
||
|
local ip
|
||
|
case "$2" in
|
||
|
--fzf)
|
||
|
ip=$(hosts list | fzf --no-preview | cut -d',' -f2)
|
||
|
;;
|
||
|
--dmenu)
|
||
|
ip=$(hosts list | dmenu | cut -d',' -f2)
|
||
|
echo "$ip" | xclip -selection primary
|
||
|
echo "$ip" | xclip -selection clipboard
|
||
|
;;
|
||
|
--rofi)
|
||
|
ip=$(hosts list | rofi -dmenu | cut -d',' -f2)
|
||
|
echo "$ip" | xclip -selection primary
|
||
|
echo "$ip" | xclip -selection clipboard
|
||
|
;;
|
||
|
esac
|
||
|
echo "$ip"
|
||
|
;;
|
||
|
add)
|
||
|
echo -n "Name: "
|
||
|
read name < /dev/tty
|
||
|
echo -n "IP: "
|
||
|
read ip < /dev/tty
|
||
|
echo -n "Description: "
|
||
|
read description < /dev/tty
|
||
|
local host='{}'
|
||
|
if [ -n "$name" ]; then
|
||
|
host="$(echo $host | jq ".name=\"$name\"" )"
|
||
|
fi
|
||
|
if [ -n "$ip" ]; then
|
||
|
host="$(echo $host | jq ".ip=\"$ip\"" )"
|
||
|
fi
|
||
|
if [ -n "$description" ]; then
|
||
|
host="$(echo $host | jq ".description=\"$description\"" )"
|
||
|
fi
|
||
|
yq --yaml-output ".hosts |= .+ [$host]" "$index" > newindex
|
||
|
rm "$index"
|
||
|
mv newindex "$index"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unknown command $1"
|
||
|
print_help
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
|
||
|
if [ -n "$1" ] ; then
|
||
|
case "$1" in
|
||
|
-h|--help)
|
||
|
print_help
|
||
|
exit 0
|
||
|
;;
|
||
|
#list)
|
||
|
# list_projects
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
#switch)
|
||
|
# switch "$2"
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
#current)
|
||
|
# get_current "$2"
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
#new)
|
||
|
# new_project "$2"
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
#copy)
|
||
|
# shift
|
||
|
# copyto "$@"
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
#serve)
|
||
|
# shift
|
||
|
# serve "$@"
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
#hosts)
|
||
|
# shift
|
||
|
# hosts "$@"
|
||
|
# exit 0
|
||
|
# ;;
|
||
|
*)
|
||
|
executable="project-${1}"
|
||
|
if command -v "$executable" > /dev/null; then
|
||
|
shift
|
||
|
"$executable" "$@"
|
||
|
exit 0
|
||
|
else
|
||
|
echo "Unknown command $1"
|
||
|
print_help
|
||
|
exit 1
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
|