mirror of
https://github.com/keanuplayz/dotfiles.git
synced 2024-08-15 02:33:12 +00:00
[zsh] add more error reporting to zplg
This commit is contained in:
parent
0e201ba4ea
commit
59fc6fee46
1 changed files with 58 additions and 50 deletions
108
zsh/zplg.zsh
108
zsh/zplg.zsh
|
@ -229,56 +229,56 @@ plugin() {
|
|||
|
||||
# parse basic arguments {{{
|
||||
|
||||
if (( $# < 2 )); then
|
||||
_zplg_error "usage: $0 <id> <url> [option...]"
|
||||
return 1
|
||||
fi
|
||||
if (( $# < 2 )); then
|
||||
_zplg_error "usage: $0 <id> <url> [option...]"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local plugin_id="$1"
|
||||
local plugin_url="$2"
|
||||
if [[ ! "$plugin_id" =~ '^[a-zA-Z0-9_\-][a-zA-Z0-9._\-]*$' ]]; then
|
||||
_zplg_error "invalid plugin ID"
|
||||
return 1
|
||||
fi
|
||||
if [[ -z "$plugin_url" ]]; then
|
||||
_zplg_error "invalid plugin URL"
|
||||
return 1
|
||||
fi
|
||||
local plugin_id="$1"
|
||||
local plugin_url="$2"
|
||||
if [[ ! "$plugin_id" =~ '^[a-zA-Z0-9_\-][a-zA-Z0-9._\-]*$' ]]; then
|
||||
_zplg_error "invalid plugin ID"
|
||||
return 1
|
||||
fi
|
||||
if [[ -z "$plugin_url" ]]; then
|
||||
_zplg_error "invalid plugin URL"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Don't even try to continue if the plugin has already been loaded. This is
|
||||
# not or problem. Plugin manager loads plugins and shouldn't bother
|
||||
# unloading them.
|
||||
if _zplg_is_plugin_loaded "$plugin_id"; then
|
||||
_zplg_error "plugin $plugin_id has already been loaded"
|
||||
return 1
|
||||
fi
|
||||
# Don't even try to continue if the plugin has already been loaded. This is
|
||||
# not or problem. Plugin manager loads plugins and shouldn't bother
|
||||
# unloading them.
|
||||
if _zplg_is_plugin_loaded "$plugin_id"; then
|
||||
_zplg_error "plugin $plugin_id has already been loaded"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# }}}
|
||||
|
||||
# parse options {{{
|
||||
|
||||
local plugin_from="$ZPLG_DEFAULT_SOURCE"
|
||||
local -a plugin_build plugin_before_load plugin_after_load plugin_load plugin_ignore
|
||||
local plugin_from="$ZPLG_DEFAULT_SOURCE"
|
||||
local -a plugin_build plugin_before_load plugin_after_load plugin_load plugin_ignore
|
||||
|
||||
local option key value; shift 2; for option in "$@"; do
|
||||
# globs are faster than regular expressions
|
||||
if [[ "$option" != *?=?* ]]; then
|
||||
_zplg_error "options must have the following format: <key>=<value>"
|
||||
return 1
|
||||
fi
|
||||
local option key value; shift 2; for option in "$@"; do
|
||||
# globs are faster than regular expressions
|
||||
if [[ "$option" != *?=?* ]]; then
|
||||
_zplg_error "options must have the following format: <key>=<value>"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# split 'option' at the first occurence of '='
|
||||
key="${option%%=*}" value="${option#*=}"
|
||||
case "$key" in
|
||||
from)
|
||||
eval "plugin_$key=\"\$value\"" ;;
|
||||
build|before_load|after_load|load|ignore)
|
||||
eval "plugin_$key+=(\"\$value\")" ;;
|
||||
*)
|
||||
_zplg_error "unknown option: $key"
|
||||
return 1 ;;
|
||||
esac
|
||||
done; unset option key value
|
||||
# split 'option' at the first occurence of '='
|
||||
key="${option%%=*}" value="${option#*=}"
|
||||
case "$key" in
|
||||
from)
|
||||
eval "plugin_$key=\"\$value\"" ;;
|
||||
build|before_load|after_load|load|ignore)
|
||||
eval "plugin_$key+=(\"\$value\")" ;;
|
||||
*)
|
||||
_zplg_error "unknown option: $key"
|
||||
return 1 ;;
|
||||
esac
|
||||
done; unset option key value
|
||||
|
||||
# }}}
|
||||
|
||||
|
@ -293,22 +293,24 @@ plugin() {
|
|||
|
||||
# download plugin {{{
|
||||
|
||||
local plugin_dir="$_ZPLG_PLUGINS_DIR/$plugin_id"
|
||||
# simple check whether the plugin directory exists is enough for me
|
||||
if [[ ! -d "$plugin_dir" ]]; then
|
||||
_zplg_log "downloading $plugin_id"
|
||||
_zplg_source_"$plugin_from"_download "$plugin_url" "$plugin_dir" || return "$?"
|
||||
local plugin_dir="$_ZPLG_PLUGINS_DIR/$plugin_id"
|
||||
# simple check whether the plugin directory exists is enough for me
|
||||
if [[ ! -d "$plugin_dir" ]]; then
|
||||
_zplg_log "downloading $plugin_id"
|
||||
_zplg_source_"$plugin_from"_download "$plugin_url" "$plugin_dir" || return "$?"
|
||||
|
||||
if (( ${#plugin_build} > 0 )); then
|
||||
_zplg_log "building $plugin_id"
|
||||
( cd "$plugin_dir" && _zplg_run_commands plugin_build ) || return "$?"
|
||||
fi
|
||||
if (( ${#plugin_build} > 0 )); then
|
||||
_zplg_log "building $plugin_id"
|
||||
( cd "$plugin_dir" && _zplg_run_commands plugin_build ) || return "$?"
|
||||
fi
|
||||
fi
|
||||
|
||||
# }}}
|
||||
|
||||
# load plugin {{{
|
||||
|
||||
{
|
||||
|
||||
_zplg_run_commands plugin_before_load || return "$?"
|
||||
|
||||
local load_pattern ignore_pattern script_path; local -a script_paths
|
||||
|
@ -346,6 +348,12 @@ plugin() {
|
|||
unset plugin_build_quoted
|
||||
fi
|
||||
|
||||
} always {
|
||||
if [[ "$?" != 0 ]]; then
|
||||
_zplg_error "an error occured while loading $plugin_id"
|
||||
fi
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue