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.
73 lines
1.3 KiB
73 lines
1.3 KiB
#!/usr/bin/env bash |
|
|
|
function print_help(){ |
|
echo -e "new\t\tCreates a new project. Will prompt for a name if no argements are given" |
|
echo -e "\t<project>\tCreates a new project with the name given" |
|
echo -e "\t--dmenu\tPrompt using dmenu" |
|
echo -e "\t--rofi\tPrompt using rofi" |
|
echo -e "\t--read\tPrompt using read" |
|
} |
|
|
|
function read_prompt(){ |
|
local name |
|
echo -n "Project name: " > /dev/tty |
|
read name < /dev/tty |
|
echo "$name" |
|
} |
|
|
|
function dmenu_prompt(){ |
|
local name |
|
name=$(echo "" | dmenu -p "Project name: " ) |
|
echo "$name" |
|
} |
|
|
|
function rofi_prompt(){ |
|
local name |
|
name=$(rofi -dmenu -l 0 -p "Project name" ) |
|
echo "$name" |
|
} |
|
|
|
function create_project(){ |
|
local name="$1" |
|
local default_dirs=( bin screenshots Downloads www ) |
|
# If name empty, exit |
|
if [ -z "$name" ]; then |
|
exit 1 |
|
fi |
|
mkdir -p "$PROJECTS_PATH/$name" |
|
# Make all the directories |
|
for dir in "${default_dirs[@]}"; do |
|
mkdir "$PROJECTS_PATH/$name/$dir" |
|
done |
|
} |
|
|
|
if [ -n "$1" ]; then |
|
case "$1" in |
|
-h|--help) |
|
print_help | column -t -s" " |
|
exit 0 |
|
;; |
|
--parent-help) |
|
print_help |
|
exit 0 |
|
;; |
|
--read) |
|
read_prompt | xargs project-new |
|
exit 0 |
|
;; |
|
--dmenu) |
|
dmenu_prompt | xargs project-new |
|
exit 0 |
|
;; |
|
--rofi) |
|
rofi_prompt | xargs project-new |
|
exit 0 |
|
;; |
|
*) |
|
create_project "$1" |
|
exit 0 |
|
;; |
|
esac |
|
else |
|
read_prompt | xargs project-new |
|
fi
|
|
|