dots-hyprland/scriptdata/options
2024-03-10 18:08:52 +08:00

64 lines
1.9 KiB
Bash

#!/usr/bin/env bash
# This is NOT a script for execution, but for loading functions, so NOT need execution permission.
# NOTE that you NOT need to `cd ..' because the `$0' is NOT this file, but the script file which will source this file.
# The script that use this file should have two lines on its top as follows:
# cd "$(dirname "$0")" export base="$(pwd)"
showhelp(){
echo -e "Syntax: $0 [Options]...
Idempotent installation script for dotfiles.
If no option is specified, run default install process.
-h, --help Print this help message and exit
-f, --force (Dangerous) Force mode without any confirm
-c, --clean Clean the build cache first
-k, --kbset <set> (Unavailable yet) Use a set of pre-defined keybindings
"
}
cleancache(){
rm -rf "$base/cache"
}
# `man getopt` to see more
para=$(getopt \
-o hfk:c \
-l help,force,kbset:,clean \
-n "$0" -- "$@")
[ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1
#####################################################################################
## getopt Phase 1
# ignore parameter's order, execute options below first
eval set -- "$para"
while true ; do
case "$1" in
-h|--help) showhelp;exit;;
-c|--clean) cleancache;shift;;
--) break ;;
*) shift ;;
esac
done
#####################################################################################
## getopt Phase 2
eval set -- "$para"
while true ; do
case "$1" in
## Already processed in phase 1, but not exited
-c|--clean) shift;;
## Ones without parameter
-f|--force) ask=false;shift;;
## Ones with parameter
-k|--kbset)
case $2 in
"normal") kbname="Normal style";;
"vim") kbname="Vim-style";;
*) echo -e "Wrong argument for $1.";exit 1;;
esac;echo "The keyboardset is ${kbname}.";shift 2;;
## Ending
--) break ;;
*) echo -e "$0: Wrong parameters.";exit 1;;
esac
done