1
0
Fork 0
mirror of synced 2024-12-13 19:05:45 -05:00

update update scripts to recognize new handlers

This commit is contained in:
Javier Lopez 2015-05-26 18:07:15 -05:00
parent 6fb66d6e26
commit fae4543c22
5 changed files with 198 additions and 24 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View 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
}
}

View 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