update update scripts to recognize new handlers
This commit is contained in:
parent
6fb66d6e26
commit
fae4543c22
5 changed files with 198 additions and 24 deletions
|
@ -5,7 +5,7 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
source "$CURRENT_DIR/shared_functions.sh"
|
source "$CURRENT_DIR/shared_functions.sh"
|
||||||
|
|
||||||
clone() {
|
clone() {
|
||||||
local plugin=$1
|
local plugin; plugin="$1"
|
||||||
cd $SHARED_TPM_PATH &&
|
cd $SHARED_TPM_PATH &&
|
||||||
GIT_TERMINAL_PROMPT=0 git clone --recursive $plugin
|
GIT_TERMINAL_PROMPT=0 git clone --recursive $plugin
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ install_plugin_github() {
|
||||||
|
|
||||||
install_plugin_web() {
|
install_plugin_web() {
|
||||||
local plugin; plugin="$1"
|
local plugin; plugin="$1"
|
||||||
local plugin_name="$(shared_plugin_name "$plugin")"
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
(cd "$SHARED_TPM_PATH" && mkdir "${plugin_name}" &&
|
(cd "$SHARED_TPM_PATH" && mkdir "${plugin_name}" &&
|
||||||
cd "${plugin_name}" && (wget --no-check-certificate "${plugin}" ||
|
cd "${plugin_name}" && (wget --no-check-certificate "${plugin}" ||
|
||||||
curl -k -s -O "${plugin}"))
|
curl -k -s -O "${plugin}"))
|
||||||
|
@ -47,15 +47,15 @@ install_plugin_web() {
|
||||||
|
|
||||||
install_plugin_local() {
|
install_plugin_local() {
|
||||||
local plugin; plugin="$1"
|
local plugin; plugin="$1"
|
||||||
local plugin_name="$(shared_plugin_name "$plugin")"
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
(cd "$SHARED_TPM_PATH" && mkdir "${plugin_name}" &&
|
(cd "$SHARED_TPM_PATH" && mkdir "${plugin_name}" &&
|
||||||
cd "${plugin_name}" && cp -r "${plugin}" .)
|
cd "${plugin_name}" && cp -r "${plugin}" .)
|
||||||
}
|
}
|
||||||
|
|
||||||
# pull new changes or clone plugin
|
# pull new changes or clone plugin
|
||||||
install_plugin() {
|
install_plugin() {
|
||||||
local plugin="$1"
|
local plugin; plugin="$1"
|
||||||
local plugin_name="$(shared_plugin_name "$plugin")"
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
|
|
||||||
if plugin_already_installed "$plugin"; then
|
if plugin_already_installed "$plugin"; then
|
||||||
# plugin is already installed
|
# plugin is already installed
|
||||||
|
@ -90,7 +90,7 @@ install_plugin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
install_plugins() {
|
install_plugins() {
|
||||||
local plugins=$(shared_get_tpm_plugins_list)
|
local plugins plugin; plugins=$(shared_get_tpm_plugins_list)
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
install_plugin "$plugin"
|
install_plugin "$plugin"
|
||||||
done
|
done
|
||||||
|
|
|
@ -16,36 +16,82 @@ cancel() {
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
pull_changes() {
|
update_plugin_git() {
|
||||||
local plugin="$1"
|
local plugin; plugin="$1"
|
||||||
local plugin_path=$(shared_plugin_path "$plugin")
|
local branch; branch=":${1##*:}"
|
||||||
cd $plugin_path &&
|
local plugin_path; plugin_path=$(shared_plugin_path "$plugin")
|
||||||
GIT_TERMINAL_PROMPT=0 git pull &&
|
plugin="${1%$branch}"
|
||||||
GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive
|
#update only makes sense when no specific branch/revision is set
|
||||||
|
if [ "${branch}" = ":${1}" ]; then
|
||||||
|
cd "$plugin_path" &&
|
||||||
|
GIT_TERMINAL_PROMPT="0" git pull &&
|
||||||
|
GIT_TERMINAL_PROMPT="0" git submodule update --init --recursive
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
update_plugin_web() {
|
||||||
|
local plugin; plugin="$1"
|
||||||
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
|
local plugin_path; plugin_path=$(shared_plugin_path "$plugin")
|
||||||
|
(cd "$plugin_path" && rm -rf "${plugin_name}" &&
|
||||||
|
(wget --no-check-certificate "${plugin}" || curl -k -s -O "${plugin}"))
|
||||||
|
}
|
||||||
|
|
||||||
|
update_plugin_local() {
|
||||||
|
local plugin; plugin="$1"
|
||||||
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
|
local plugin_path; plugin_path=$(shared_plugin_path "$plugin")
|
||||||
|
cd "$plugin_path" && rm -rf "${plugin_name}" && cp -r "${plugin}" .
|
||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
local plugin="$1"
|
local plugin; plugin="$1"
|
||||||
echo_message "Updating \"$plugin\""
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
$(pull_changes "$plugin" > /dev/null 2>&1) &&
|
echo_message "Updating \"$plugin_name\""
|
||||||
echo_message " \"$plugin\" update success" ||
|
|
||||||
echo_message " \"$plugin\" update fail"
|
local handler; handler="${1%%:*}:"
|
||||||
|
plugin="${1#$handler}"
|
||||||
|
|
||||||
|
case "${handler}" in
|
||||||
|
''|*/*) case "${1}" in
|
||||||
|
/*|~*|\$*) update_plugin_local "${1}" ;;
|
||||||
|
*) update_plugin_git "${1}" ;;
|
||||||
|
esac ;;
|
||||||
|
gh*|github*|git@github.com*) update_plugin_git "${plugin}" ;;
|
||||||
|
git:) update_plugin_git "${plugin}" ;;
|
||||||
|
file:) update_plugin_local "${plugin#//}" ;;
|
||||||
|
http:|ftp:) update_plugin_web "${1}" ;;
|
||||||
|
https:)
|
||||||
|
case "${1}" in
|
||||||
|
*github.com/*) update_plugin_git "${plugin#//github.com/}";;
|
||||||
|
*) update_plugin_web "${1}";;
|
||||||
|
esac ;;
|
||||||
|
*) set_false ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ X"${?}" = X"0" ] &&
|
||||||
|
echo_message " \"$plugin_name\" update success" ||
|
||||||
|
echo_message " \"$plugin_name\" update fail"
|
||||||
|
|
||||||
|
#$(pull_changes "$plugin" > /dev/null 2>&1) &&
|
||||||
|
#echo_message " \"$plugin\" update success" ||
|
||||||
|
#echo_message " \"$plugin\" update fail"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
update_all() {
|
update_all() {
|
||||||
local plugins="$(shared_get_tpm_plugins_list)"
|
local plugins plugin; plugins="$(shared_get_tpm_plugins_list)"
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
local plugin_name="$(shared_plugin_name "$plugin")"
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
# updating only installed plugins
|
# updating only installed plugins
|
||||||
if plugin_already_installed "$plugin_name"; then
|
if plugin_already_installed "$plugin_name"; then
|
||||||
update "$plugin_name"
|
update "$plugin"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_plugin_update() {
|
handle_plugin_update() {
|
||||||
local arg="$1"
|
local arg; arg="$1"
|
||||||
|
|
||||||
if empty "$arg"; then
|
if empty "$arg"; then
|
||||||
cancel
|
cancel
|
||||||
|
@ -65,7 +111,7 @@ handle_plugin_update() {
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
local arg="$1"
|
local arg; arg="$1"
|
||||||
shared_set_tpm_path_constant
|
shared_set_tpm_path_constant
|
||||||
handle_plugin_update "$arg"
|
handle_plugin_update "$arg"
|
||||||
reload_tmux_environment
|
reload_tmux_environment
|
||||||
|
|
|
@ -9,14 +9,14 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
source "$CURRENT_DIR/shared_functions.sh"
|
source "$CURRENT_DIR/shared_functions.sh"
|
||||||
|
|
||||||
display_plugin_update_list() {
|
display_plugin_update_list() {
|
||||||
local plugins="$(shared_get_tpm_plugins_list)"
|
local plugins plugin; plugins="$(shared_get_tpm_plugins_list)"
|
||||||
echo_message "Installed plugins:"
|
echo_message "Installed plugins:"
|
||||||
echo_message ""
|
echo_message ""
|
||||||
|
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
# displaying only installed plugins
|
# displaying only installed plugins
|
||||||
if plugin_already_installed "$plugin"; then
|
if plugin_already_installed "$plugin"; then
|
||||||
local plugin_name="$(shared_plugin_name "$plugin")"
|
local plugin_name; plugin_name="$(shared_plugin_name "$plugin")"
|
||||||
echo_message " $plugin_name"
|
echo_message " $plugin_name"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
91
tests/expect_successful_bundle_update_of_all_plugins
Executable file
91
tests/expect_successful_bundle_update_of_all_plugins
Executable file
|
@ -0,0 +1,91 @@
|
||||||
|
#!/usr/bin/env expect
|
||||||
|
|
||||||
|
# disables script output
|
||||||
|
log_user 0
|
||||||
|
|
||||||
|
spawn tmux
|
||||||
|
|
||||||
|
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
||||||
|
# not work properly.
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# this is tmux prefix + U
|
||||||
|
send "U"
|
||||||
|
|
||||||
|
set timeout 15
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Installed plugins" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-example-plugin\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-online-status\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-battery\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-sidebar\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-sensible\"" {
|
||||||
|
expect {
|
||||||
|
"\"sha1sum.txt\"" {
|
||||||
|
expect {
|
||||||
|
"\"meta-micro\"" {
|
||||||
|
expect {
|
||||||
|
"\"readme.txt\"" {
|
||||||
|
expect {
|
||||||
|
"\"run-tests-within-vm\"" {
|
||||||
|
expect {
|
||||||
|
"\"all\" - updates all plugins" {
|
||||||
|
expect { "ENTER - cancels" }
|
||||||
|
}}}}}}}}}}}}}}}}}}}}}
|
||||||
|
|
||||||
|
timeout {
|
||||||
|
puts "Plugin update prompt timeout";
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
send "all\r"
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Updating all plugins!" {
|
||||||
|
expect {
|
||||||
|
"Updating \"tmux-example-plugin\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-example-plugin\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"tmux-online-status\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-online-status\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"tmux-battery\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-battery\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"tmux-sidebar\"" {
|
||||||
|
expect {
|
||||||
|
"\"tmux-sidebar\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"sha1sum.txt\"" {
|
||||||
|
expect {
|
||||||
|
"\"sha1sum.txt\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"meta-micro\"" {
|
||||||
|
expect {
|
||||||
|
"\"meta-micro\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"readme.txt\"" {
|
||||||
|
expect {
|
||||||
|
"\"readme.txt\" update success" {
|
||||||
|
expect {
|
||||||
|
"Updating \"run-tests-within-vm\"" {
|
||||||
|
expect {
|
||||||
|
"\"run-tests-within-vm\" update success" {
|
||||||
|
expect { "Done, press ENTER to continue." { exit 0 } }
|
||||||
|
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
|
||||||
|
|
||||||
|
timeout {
|
||||||
|
puts "Update all plugins timeout";
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
37
tests/test_plugin_update_extended.sh
Executable file
37
tests/test_plugin_update_extended.sh
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
source $CURRENT_DIR/helpers.sh
|
||||||
|
|
||||||
|
test_plugin_installation() {
|
||||||
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g @tpm_plugins " \
|
||||||
|
tmux-plugins/tmux-example-plugin \
|
||||||
|
gh:tmux-plugins/tmux-online-status \
|
||||||
|
github:tmux-plugins/tmux-battery \
|
||||||
|
github:tmux-plugins/tmux-sidebar:master \
|
||||||
|
https://github.com/tmux-plugins/tmux-sensible:3ea5b \
|
||||||
|
http://ovh.net/files/sha1sum.txt \
|
||||||
|
git://git.openembedded.org/meta-micro \
|
||||||
|
ftp://ftp.microsoft.com/developr/readme.txt \
|
||||||
|
file://$PWD/tests/run-tests-within-vm"
|
||||||
|
run-shell "$PWD/tpm"
|
||||||
|
HERE
|
||||||
|
|
||||||
|
# opens tmux and install plugins, test results with `expect`
|
||||||
|
"$CURRENT_DIR"/expect_successful_plugin_bundle_download ||
|
||||||
|
fail_helper "Tmux plugin installation phase in update fails"
|
||||||
|
|
||||||
|
# opens tmux and update plugins, test results with `expect`
|
||||||
|
"$CURRENT_DIR"/expect_successful_update_of_all_plugins ||
|
||||||
|
fail_helper "Tmux 'update all plugins' fails"
|
||||||
|
|
||||||
|
teardown_helper
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
test_plugin_installation
|
||||||
|
exit_value_helper
|
||||||
|
}
|
||||||
|
main
|
Loading…
Reference in a new issue