mirror of
https://github.com/DictXiong/dotfiles.git
synced 2025-07-07 01:10:29 +08:00
common.sh: parse args automatically
This commit is contained in:
parent
b1c2041f60
commit
be3f999a5d
@ -209,7 +209,7 @@ install_update()
|
|||||||
DFS_UPDATED_RET=85 ${DOTFILES}/update.sh
|
DFS_UPDATED_RET=85 ${DOTFILES}/update.sh
|
||||||
if [[ $? == 85 ]]; then
|
if [[ $? == 85 ]]; then
|
||||||
fmt_note "dfs updated. re-running install.sh ..."
|
fmt_note "dfs updated. re-running install.sh ..."
|
||||||
"${DOTFILES}/install.sh" "$ORIGIN_ARGS" && exit
|
"${DOTFILES}/install.sh" "$@" && exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,19 +249,16 @@ uninstall()
|
|||||||
fmt_note "done uninstalling!"
|
fmt_note "done uninstalling!"
|
||||||
}
|
}
|
||||||
|
|
||||||
ORIGIN_ARGS="$@"
|
|
||||||
parse_arg "$@"
|
|
||||||
FUNC=install
|
FUNC=install
|
||||||
INSTALL_DEP=0
|
INSTALL_DEP=0
|
||||||
for i in ${PARSE_ARG_RET[@]}; do
|
for i in ${GOT_OPTS[@]}; do
|
||||||
case $i in
|
case $i in
|
||||||
-i ) FUNC=install ;;
|
-i ) FUNC=install ;;
|
||||||
-r ) FUNC=uninstall ;;
|
-r ) FUNC=uninstall ;;
|
||||||
-d|--dev ) export DFS_DEV=1 ;;
|
-d|--dev ) export DFS_DEV=1 ;;
|
||||||
-l|--lite ) export DFS_LITE=1 ;;
|
|
||||||
-a|--auto ) INSTALL_DEP=1 ;;
|
-a|--auto ) INSTALL_DEP=1 ;;
|
||||||
-s|--secure ) export DFS_DEV=0 ;;
|
-s|--secure ) export DFS_DEV=0 ;;
|
||||||
* ) fmt_fatal "unknown option \"$i\". available: -i, -r, -q, -d, -l, -a, -s" ;;
|
* ) fmt_fatal "unknown option \"$i\"" ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
$FUNC
|
$FUNC
|
||||||
|
@ -34,8 +34,8 @@ router()
|
|||||||
apk-add ) apk_add ;;
|
apk-add ) apk_add ;;
|
||||||
set-timezone | set-tz ) set_timezone ;;
|
set-timezone | set-tz ) set_timezone ;;
|
||||||
set-mirror ) set_mirror $2 ;;
|
set-mirror ) set_mirror $2 ;;
|
||||||
* ) echo unknown command "$1". available: apk-add, set-timezone;;
|
* ) echo unknown command \"$1\". available: apk-add, set-timezone;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
router $@
|
router "${GOT_OPTS[@]}"
|
||||||
|
@ -4,6 +4,33 @@ THIS_DIR_COMMON_SH=$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" && pwd )
|
|||||||
export DOTFILES=$( cd "$THIS_DIR_COMMON_SH/.." && pwd )
|
export DOTFILES=$( cd "$THIS_DIR_COMMON_SH/.." && pwd )
|
||||||
if [[ -f ~/.config/dotfiles/env ]]; then set -a; source ~/.config/dotfiles/env; set +a; fi
|
if [[ -f ~/.config/dotfiles/env ]]; then set -a; source ~/.config/dotfiles/env; set +a; fi
|
||||||
|
|
||||||
|
# parse args and set env, when it is sourced
|
||||||
|
if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
|
||||||
|
ORIGIN_ARGS="$@"
|
||||||
|
ARG=""
|
||||||
|
GOT_OPTS=()
|
||||||
|
while [[ $# > 0 || -n "$ARG" ]]; do
|
||||||
|
if [[ -z "$ARG" ]]; then ARG=$1; shift; fi
|
||||||
|
case $ARG in
|
||||||
|
-q*|--quite ) export DFS_QUIET=1 ;;
|
||||||
|
-l*|--lite ) export DFS_LITE=1 ;;
|
||||||
|
--color ) export DFS_COLOR=1 ;;
|
||||||
|
--*=* ) GOT_OPTS+=("${ARG%%=*}" "${ARG#*=}") ;;
|
||||||
|
--* ) GOT_OPTS+=("$ARG") ;;
|
||||||
|
-* ) GOT_OPTS+=("${ARG:0:2}") ;;
|
||||||
|
* ) GOT_OPTS+=("$ARG") ;;
|
||||||
|
esac
|
||||||
|
if [[ "$ARG" == "--"* || ! "$ARG" == "-"* || ${#ARG} -le 2 ]]; then
|
||||||
|
ARG=""
|
||||||
|
else
|
||||||
|
ARG=-${ARG:2}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
set -- "$ORIGIN_ARGS"
|
||||||
|
unset ARG
|
||||||
|
unset ORIGIN_ARGS
|
||||||
|
fi
|
||||||
|
|
||||||
# Color settings
|
# Color settings
|
||||||
# Source: https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
|
# Source: https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
|
||||||
if [[ -t 1 || "$DFS_COLOR" == "1" ]]; then
|
if [[ -t 1 || "$DFS_COLOR" == "1" ]]; then
|
||||||
@ -102,28 +129,6 @@ if [[ "$EUID" != "0" && -x $(command -v sudo) ]]; then
|
|||||||
SUDO='sudo'
|
SUDO='sudo'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
parse_arg()
|
|
||||||
{
|
|
||||||
local ARG=""
|
|
||||||
PARSE_ARG_RET=()
|
|
||||||
while [[ $# > 0 || -n "$ARG" ]]; do
|
|
||||||
if [[ -z "$ARG" ]]; then ARG=$1; shift; fi
|
|
||||||
case $ARG in
|
|
||||||
-q*|--quite ) export DFS_QUIET=1 ;;
|
|
||||||
-l*|--lite ) export DFS_LITE=1 ;;
|
|
||||||
--color ) export DFS_COLOR=1; is_tty() { true }; setup_color ;;
|
|
||||||
--* ) PARSE_ARG_RET+=("$ARG") ;;
|
|
||||||
-* ) PARSE_ARG_RET+=("${ARG:0:2}") ;;
|
|
||||||
* ) PARSE_ARG_RET+=("$ARG") ;;
|
|
||||||
esac
|
|
||||||
if [[ "$ARG" == "--"* || ! "$ARG" == "-"* || ${#ARG} -le 2 ]]; then
|
|
||||||
ARG=""
|
|
||||||
else
|
|
||||||
ARG=-${ARG:2}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_yN()
|
ask_for_yN()
|
||||||
{
|
{
|
||||||
while [[ -z "$DFS_QUIET" || "$DFS_QUIET" == "0" ]]; do
|
while [[ -z "$DFS_QUIET" || "$DFS_QUIET" == "0" ]]; do
|
||||||
|
@ -13,8 +13,8 @@ router()
|
|||||||
{
|
{
|
||||||
case $1 in
|
case $1 in
|
||||||
brew-install ) brew_install ;;
|
brew-install ) brew_install ;;
|
||||||
* ) echo unknown command "$1". available: brew-install;;
|
* ) echo unknown command \"$1\". available: brew-install;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
router $@
|
router "${GOT_OPTS[@]}"
|
||||||
|
@ -27,8 +27,8 @@ router()
|
|||||||
case $1 in
|
case $1 in
|
||||||
pacman-S ) pacman_S ;;
|
pacman-S ) pacman_S ;;
|
||||||
set-mirror ) set_mirror $2 ;;
|
set-mirror ) set_mirror $2 ;;
|
||||||
* ) echo unknown command "$1". available: pacman-S, set-mirror ;;
|
* ) echo unknown command \"$1\". available: pacman-S, set-mirror ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
router $@
|
router "${GOT_OPTS[@]}"
|
||||||
|
@ -35,8 +35,8 @@ router()
|
|||||||
set-mirror ) set_mirror $2 ;;
|
set-mirror ) set_mirror $2 ;;
|
||||||
set-timezone\
|
set-timezone\
|
||||||
| set-tz ) set_timezone $2 ;;
|
| set-tz ) set_timezone $2 ;;
|
||||||
* ) echo unknown command "$1". available: apt-install, set-mirror, set-timezone;;
|
* ) echo unknown command \"$1\". available: apt-install, set-mirror, set-timezone;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
router $@
|
router "${GOT_OPTS[@]}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user