2015-09-09 18:27:42 -07:00
|
|
|
#!/usr/bin/env bash
|
2019-01-07 01:04:17 -05:00
|
|
|
set -eo pipefail
|
|
|
|
|
[[ $DOKKU_TRACE ]] && set -x
|
2015-09-09 18:27:42 -07:00
|
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
|
|
|
|
|
|
|
|
disable_plugin() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="disables specified plugin name"
|
2015-09-09 18:27:42 -07:00
|
|
|
local PLUGIN="$1"
|
|
|
|
|
[[ -e $PLUGIN_CORE_AVAILABLE_PATH/$PLUGIN ]] && dokku_log_fail "Cannot disable a core plugin"
|
|
|
|
|
[[ ! -e $PLUGIN_ENABLED_PATH/$PLUGIN ]] && dokku_log_fail "Plugin already disabled"
|
|
|
|
|
[[ ! -e $PLUGIN_AVAILABLE_PATH/$PLUGIN ]] && dokku_log_fail "Plugin does not exist"
|
2016-02-22 10:16:57 -08:00
|
|
|
plugn disable "$PLUGIN"
|
2015-09-09 18:27:42 -07:00
|
|
|
dokku_log_info1_quiet "Plugin $PLUGIN disabled"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enable_plugin() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="enables specified plugin name"
|
2015-09-09 18:27:42 -07:00
|
|
|
local PLUGIN="$1"
|
|
|
|
|
[[ -e $PLUGIN_ENABLED_PATH/$PLUGIN ]] && dokku_log_fail "Plugin already enabled"
|
|
|
|
|
[[ ! -e $PLUGIN_AVAILABLE_PATH/$PLUGIN ]] && dokku_log_fail "Plugin does not exist"
|
2016-02-22 10:16:57 -08:00
|
|
|
plugn enable "$PLUGIN"
|
2015-09-09 18:27:42 -07:00
|
|
|
dokku_log_info1_quiet "Plugin $PLUGIN enabled"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
download_plugin() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="download plugin from URL and set name"
|
2015-09-09 18:27:42 -07:00
|
|
|
local PLUGIN_GIT_URL="$1"
|
2015-09-21 11:56:27 +02:00
|
|
|
local PLUGIN_NAME="$2"
|
|
|
|
|
plugn install "$PLUGIN_GIT_URL" "$PLUGIN_NAME"
|
2015-09-09 18:27:42 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
download_and_enable_plugin() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="wrapper to download and enable specified version of plugin"
|
2015-09-09 18:27:42 -07:00
|
|
|
local PLUGIN_GIT_URL="$1"
|
2016-01-05 10:43:19 -08:00
|
|
|
shift
|
|
|
|
|
while getopts ":-:" opt "$@"; do
|
|
|
|
|
case "$opt" in
|
|
|
|
|
-)
|
|
|
|
|
case "$OPTARG" in
|
|
|
|
|
committish)
|
2019-01-07 01:04:17 -05:00
|
|
|
val="${!OPTIND}"
|
|
|
|
|
OPTIND=$((OPTIND + 1))
|
2016-01-05 10:43:19 -08:00
|
|
|
local PLUGIN_COMMITTISH="$val"
|
|
|
|
|
;;
|
|
|
|
|
name)
|
2019-01-07 01:04:17 -05:00
|
|
|
val="${!OPTIND}"
|
|
|
|
|
OPTIND=$((OPTIND + 1))
|
2016-01-05 10:43:19 -08:00
|
|
|
local CUSTOM_NAME="$val"
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
2015-09-21 11:56:27 +02:00
|
|
|
local PLUGIN_NAME=${CUSTOM_NAME:-$(plugin_name "$PLUGIN_GIT_URL")}
|
2015-09-09 18:27:42 -07:00
|
|
|
dokku_log_info1_quiet "Cloning plugin repo $PLUGIN_GIT_URL to $PLUGIN_AVAILABLE_PATH/$PLUGIN_NAME"
|
2015-09-21 11:56:27 +02:00
|
|
|
download_plugin "$PLUGIN_GIT_URL" "$PLUGIN_NAME"
|
|
|
|
|
enable_plugin "$PLUGIN_NAME"
|
2019-01-07 01:04:17 -05:00
|
|
|
if [[ -n "$PLUGIN_COMMITTISH" ]]; then
|
2016-01-05 10:43:19 -08:00
|
|
|
update_plugin "$PLUGIN_NAME" "$PLUGIN_COMMITTISH"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
update_plugin() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="update plugin"
|
2016-01-05 10:43:19 -08:00
|
|
|
local PLUGIN="$1"
|
|
|
|
|
local PLUGIN_COMMITTISH="$2"
|
|
|
|
|
[[ ! -e $PLUGIN_AVAILABLE_PATH/$PLUGIN ]] && dokku_log_fail "Plugin ($PLUGIN) is not currently installed"
|
|
|
|
|
plugn update "$@"
|
2015-09-09 18:27:42 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uninstall_plugin() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="uninstall plugin"
|
2016-01-05 10:43:19 -08:00
|
|
|
local PLUGIN="$1"
|
2015-09-09 18:27:42 -07:00
|
|
|
[[ -e $PLUGIN_CORE_AVAILABLE_PATH/$PLUGIN ]] && dokku_log_fail "Cannot uninstall a core plugin"
|
2016-01-05 10:43:19 -08:00
|
|
|
[[ ! -e $PLUGIN_AVAILABLE_PATH/$PLUGIN ]] && dokku_log_fail "Plugin ($PLUGIN) is not currently installed"
|
2016-11-17 16:06:57 -06:00
|
|
|
plugn trigger uninstall "$PLUGIN"
|
2016-02-22 10:16:57 -08:00
|
|
|
plugn uninstall "$PLUGIN"
|
2015-09-09 18:27:42 -07:00
|
|
|
dokku_log_info1_quiet "Plugin $PLUGIN uninstalled"
|
|
|
|
|
}
|
2015-09-21 11:56:27 +02:00
|
|
|
|
|
|
|
|
plugin_name() {
|
2016-03-08 15:30:34 -05:00
|
|
|
declare desc="default plugin name"
|
2015-09-21 11:56:27 +02:00
|
|
|
local PLUGIN_GIT_URL="$1"
|
2016-04-12 19:13:45 -04:00
|
|
|
echo "$PLUGIN_GIT_URL" | awk -F '/' '{ print $NF }' | sed -e "s:.git$::g" | sed 's:^dokku-::'
|
2015-09-21 11:56:27 +02:00
|
|
|
}
|