diff options
author | Cody Hiar <codyfh@gmail.com> | 2017-02-13 09:54:26 -0700 |
---|---|---|
committer | Cody Hiar <codyfh@gmail.com> | 2017-02-13 09:54:26 -0700 |
commit | 783ab79ab721593b0ac85ab4d8ea9b74fa5fe72e (patch) | |
tree | 03ac1d680ab401874ed95a78887c56d6eb268a61 /plugins/tpm/scripts/update_plugin.sh | |
parent | 2eede125238144e9d37cf856aaaeda3c5de5aab3 (diff) |
Adding tpm
Diffstat (limited to 'plugins/tpm/scripts/update_plugin.sh')
-rwxr-xr-x | plugins/tpm/scripts/update_plugin.sh | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/plugins/tpm/scripts/update_plugin.sh b/plugins/tpm/scripts/update_plugin.sh new file mode 100755 index 0000000..7d856ee --- /dev/null +++ b/plugins/tpm/scripts/update_plugin.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +# this script handles core logic of updating plugins + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +fi + +# from now on ignore first script argument +shift + +pull_changes() { + local plugin="$1" + local plugin_path="$(plugin_path_helper "$plugin")" + cd "$plugin_path" && + GIT_TERMINAL_PROMPT=0 git pull && + GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive +} + +update() { + local plugin="$1" + $(pull_changes "$plugin" > /dev/null 2>&1) && + echo_ok " \"$plugin\" update success" || + echo_err " \"$plugin\" update fail" +} + +update_all() { + echo_ok "Updating all plugins!" + echo_ok "" + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + local plugin_name="$(plugin_name_helper "$plugin")" + # updating only installed plugins + if plugin_already_installed "$plugin_name"; then + update "$plugin_name" & + fi + done + wait +} + +update_plugins() { + local plugins="$*" + for plugin in $plugins; do + local plugin_name="$(plugin_name_helper "$plugin")" + if plugin_already_installed "$plugin_name"; then + update "$plugin_name" & + else + echo_err "$plugin_name not installed!" & + fi + done + wait +} + +main() { + ensure_tpm_path_exists + if [ "$1" == "all" ]; then + update_all + else + update_plugins "$*" + fi + exit_value_helper +} +main "$*" |