Compare commits

...

7 Commits
1.7.0 ... 1.8.0

Author SHA1 Message Date
Jose Diaz-Gonzalez
aa3d21b4ae Release 1.8.0 2019-06-08 15:57:55 +02:00
Jose Diaz-Gonzalez
67dd094d58 fix: drop now unnecessary rm call in config
This was used to delete an errant '*' service that was accidentally created during service deletion. That was fixed in dokku/dokku-redis#126 - and the respective PRs for each service - and is thus no longer necessary.

The fix was done by utilizing pushd when iterating over folders instead of trying to get a subdirectory with a partially quoted path.

Closes dokku/dokku-redis#130
2019-06-08 15:53:54 +02:00
Jose Diaz-Gonzalez
b414ca165a Merge pull request #181 from dokku/allow-dash-in-name
feat: re-allow dashes in names
2019-06-08 14:57:56 +02:00
Jose Diaz-Gonzalez
028d82517f feat: re-allow dashes in names
This PR allows dashes in service names, while still sanitizing them before they are used as database names. If the datastore is pre-existing, the datatabase name is assumed to be the same as the service name, and returned appropriately.
2019-05-30 17:03:48 -04:00
Jose Diaz-Gonzalez
8852c3fc03 chore: reorder functions 2019-05-30 11:13:22 -04:00
Jose Diaz-Gonzalez
095be6dbaf chore: move retry-docker-command to common-functions 2019-05-30 11:11:02 -04:00
Jose Diaz-Gonzalez
a9fcde1404 chore: run shfmt 2019-05-30 11:06:25 -04:00
42 changed files with 345 additions and 218 deletions

View File

@@ -2,7 +2,8 @@
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
[[ " help $PLUGIN_COMMAND_PREFIX:help $PLUGIN_COMMAND_PREFIX $PLUGIN_COMMAND_PREFIX:default " == *" $1 "* ]] || [[ "$1" == "$PLUGIN_COMMAND_PREFIX:"* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
source "$PLUGIN_BASE_PATH/common/functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/help-functions"

View File

@@ -1,11 +1,12 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/config/functions"
docker_ports_options() {
declare desc="Exports a list of exposed ports"
declare PORTS=("$@")
for (( i=0; i < ${#PLUGIN_DATASTORE_PORTS[@]}; i++ )); do
for ((i = 0; i < ${#PLUGIN_DATASTORE_PORTS[@]}; i++)); do
echo -n "-p ${PORTS[i]}:${PLUGIN_DATASTORE_PORTS[i]} "
done
}
@@ -18,20 +19,24 @@ get_container_ip() {
get_database_name() {
declare desc="Retrieves a sanitized database name"
declare DATABASE="$1"
# some datastores do not like special characters in database names
# so we need to normalize them out
echo "$DATABASE" | tr .- _
declare SERVICE="$1"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
if [[ ! -f "$SERVICE_ROOT/DATABASE_NAME" ]]; then
echo "$SERVICE" > "$SERVICE_ROOT/DATABASE_NAME"
fi
cat "$SERVICE_ROOT/DATABASE_NAME"
}
get_random_ports() {
declare desc="Retrieves N random ports"
declare iterations="${1:-1}"
for (( i=0; i < iterations; i++ )); do
for ((i = 0; i < iterations; i++)); do
local port=$RANDOM
local quit=0
while [ "$quit" -ne 1 ]; do
netstat -an | grep $port > /dev/null
netstat -an | grep $port >/dev/null
# shellcheck disable=SC2181
if [ $? -gt 0 ]; then
quit=1
@@ -59,7 +64,7 @@ is_container_status() {
declare desc="Returns 0 or 1 depending upon whether a given container has a certain status"
declare CID="$1" STATUS="$2"
local TEMPLATE="{{.State.$STATUS}}"
local CONTAINER_STATUS=$(docker inspect -f "$TEMPLATE" "$CID" 2> /dev/null || true)
local CONTAINER_STATUS=$(docker inspect -f "$TEMPLATE" "$CID" 2>/dev/null || true)
if [[ "$CONTAINER_STATUS" == "true" ]]; then
return 0
@@ -83,6 +88,18 @@ is_implemented_command() {
return 0
}
is_valid_service_name() {
declare desc="Validates a service name"
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && return 1
if [[ "$SERVICE" =~ ^[A-Za-z0-9_-]+$ ]]; then
return 0
fi
return 1
}
remove_from_links_file() {
declare desc="Removes an app from the service link file"
declare SERVICE="$1" APP="$2"
@@ -97,18 +114,32 @@ remove_from_links_file() {
sort "$LINKS_FILE" -u -o "$LINKS_FILE"
}
service_dns_hostname() {
declare desc="Retrieves the alias of a service"
declare SERVICE="$1"
local SERVICE_NAME="$(get_service_name "$SERVICE")"
echo "$SERVICE_NAME" | tr ._ -
retry-docker-command() {
local ID="$1" COMMAND="$2"
local i=0 success=false
until [ $i -ge 100 ]; do
set +e
docker exec -it "$ID" sh -c "$COMMAND" 2>/dev/null
exit_code=$?
set -e
if [[ "$exit_code" == 0 ]]; then
success=true
break
fi
i=$((i + 1))
sleep 1
done
if [[ $i -gt 0 ]]; then
dokku_log_verbose "Container command retried ${i} time(s): ${COMMAND}"
fi
[[ "$success" == "true" ]] || dokku_log_fail "Failed to run command: ${COMMAND}"
}
service_alternative_alias() {
declare desc="Retrieves an alternative alias for a service"
declare EXISTING_CONFIG="$1"
local COLORS=(AQUA BLACK BLUE FUCHSIA GRAY GREEN LIME MAROON NAVY OLIVE PURPLE RED SILVER TEAL WHITE YELLOW)
local ALIAS;
local ALIAS
for COLOR in "${COLORS[@]}"; do
ALIAS="${PLUGIN_ALT_ALIAS}_${COLOR}"
@@ -126,11 +157,11 @@ service_app_links() {
declare APP="$1"
local SERVICE LINKED_APP
pushd "$PLUGIN_DATA_ROOT" > /dev/null
pushd "$PLUGIN_DATA_ROOT" >/dev/null
for SERVICE in *; do
[[ -f "$SERVICE/LINKS" ]] || continue
for LINKED_APP in $(<"$SERVICE/LINKS"); do
if [[ "$LINKED_APP" == "$APP" ]] ; then
if [[ "$LINKED_APP" == "$APP" ]]; then
echo "$SERVICE"
fi
done
@@ -159,10 +190,10 @@ service_backup() {
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR" > /dev/null' RETURN INT TERM EXIT
docker inspect "$ID" &> /dev/null || dokku_log_fail "Service container does not exist"
docker inspect "$ID" &>/dev/null || dokku_log_fail "Service container does not exist"
is_container_status "$ID" "Running" || dokku_log_fail "Service container is not running"
(service_export "$SERVICE" > "${TMPDIR}/export")
(service_export "$SERVICE" >"${TMPDIR}/export")
# Build parameter list for s3backup tool
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e BUCKET_NAME=$BUCKET_NAME"
@@ -195,19 +226,19 @@ service_backup_auth() {
local SERVICE_BACKUP_ROOT="$PLUGIN_DATA_ROOT/$SERVICE/backup"
mkdir "$SERVICE_BACKUP_ROOT"
echo "$AWS_ACCESS_KEY_ID" > "$SERVICE_BACKUP_ROOT/AWS_ACCESS_KEY_ID"
echo "$AWS_SECRET_ACCESS_KEY" > "$SERVICE_BACKUP_ROOT/AWS_SECRET_ACCESS_KEY"
echo "$AWS_ACCESS_KEY_ID" >"$SERVICE_BACKUP_ROOT/AWS_ACCESS_KEY_ID"
echo "$AWS_SECRET_ACCESS_KEY" >"$SERVICE_BACKUP_ROOT/AWS_SECRET_ACCESS_KEY"
if [[ -n "$AWS_DEFAULT_REGION" ]]; then
echo "$AWS_DEFAULT_REGION" > "$SERVICE_BACKUP_ROOT/AWS_DEFAULT_REGION"
echo "$AWS_DEFAULT_REGION" >"$SERVICE_BACKUP_ROOT/AWS_DEFAULT_REGION"
fi
if [[ -n "$AWS_SIGNATURE_VERSION" ]]; then
echo "$AWS_SIGNATURE_VERSION" > "$SERVICE_BACKUP_ROOT/AWS_SIGNATURE_VERSION"
echo "$AWS_SIGNATURE_VERSION" >"$SERVICE_BACKUP_ROOT/AWS_SIGNATURE_VERSION"
fi
if [[ -n "$ENDPOINT_URL" ]]; then
echo "$ENDPOINT_URL" > "$SERVICE_BACKUP_ROOT/ENDPOINT_URL"
echo "$ENDPOINT_URL" >"$SERVICE_BACKUP_ROOT/ENDPOINT_URL"
fi
}
@@ -231,7 +262,7 @@ service_backup_schedule() {
dokku_log_fail "Invalid flag provided, only '--use-iam' allowed"
fi
echo "${SCHEDULE} dokku ${DOKKU_BIN} ${PLUGIN_COMMAND_PREFIX}:backup ${SERVICE} ${BUCKET_NAME} ${USE_IAM_OPTIONAL_FLAG}" > "$TMP_CRON_FILE"
echo "${SCHEDULE} dokku ${DOKKU_BIN} ${PLUGIN_COMMAND_PREFIX}:backup ${SERVICE} ${BUCKET_NAME} ${USE_IAM_OPTIONAL_FLAG}" >"$TMP_CRON_FILE"
sudo /bin/mv "$TMP_CRON_FILE" "$CRON_FILE"
sudo /bin/chown root:root "$CRON_FILE"
sudo /bin/chmod 644 "$CRON_FILE"
@@ -249,14 +280,6 @@ service_backup_schedule_cat() {
cat "$CRON_FILE"
}
service_backup_unschedule() {
declare desc="unschedules the backup of the service"
declare SERVICE="$1"
local CRON_FILE="/etc/cron.d/dokku-${PLUGIN_COMMAND_PREFIX}-${SERVICE}"
sudo /bin/rm -f "$CRON_FILE"
}
service_backup_set_encryption() {
declare desc="Sets up backup encryption"
declare SERVICE="$1" ENCRYPTION_KEY="$2"
@@ -264,7 +287,15 @@ service_backup_set_encryption() {
local SERVICE_BACKUP_ENCRYPTION_ROOT="${SERVICE_ROOT}/backup-encryption/"
mkdir "$SERVICE_BACKUP_ENCRYPTION_ROOT"
echo "$ENCRYPTION_KEY" > "${SERVICE_BACKUP_ENCRYPTION_ROOT}/ENCRYPTION_KEY"
echo "$ENCRYPTION_KEY" >"${SERVICE_BACKUP_ENCRYPTION_ROOT}/ENCRYPTION_KEY"
}
service_backup_unschedule() {
declare desc="unschedules the backup of the service"
declare SERVICE="$1"
local CRON_FILE="/etc/cron.d/dokku-${PLUGIN_COMMAND_PREFIX}-${SERVICE}"
sudo /bin/rm -f "$CRON_FILE"
}
service_backup_unset_encryption() {
@@ -290,19 +321,26 @@ service_container_rm() {
fi
dokku_log_verbose_quiet "Removing container"
docker update --restart=no "$SERVICE_NAME" > /dev/null 2>&1
if ! docker rm "$SERVICE_NAME" > /dev/null 2>&1; then
docker update --restart=no "$SERVICE_NAME" >/dev/null 2>&1
if ! docker rm "$SERVICE_NAME" >/dev/null 2>&1; then
dokku_log_fail "Unable to remove container for service $SERVICE"
fi
}
service_dns_hostname() {
declare desc="Retrieves the alias of a service"
declare SERVICE="$1"
local SERVICE_NAME="$(get_service_name "$SERVICE")"
echo "$SERVICE_NAME" | tr ._ -
}
service_enter() {
declare desc="enters running app container of specified proc type"
declare SERVICE="$1" && shift 1
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local ID="$(cat "$SERVICE_ROOT/ID")"
docker inspect "$ID" &> /dev/null || dokku_log_fail "Service container does not exist"
docker inspect "$ID" &>/dev/null || dokku_log_fail "Service container does not exist"
is_container_status "$ID" "Running" || dokku_log_fail "Service container is not running"
local EXEC_CMD=""
@@ -318,7 +356,7 @@ service_exposed_ports() {
local PORT_FILE="$SERVICE_ROOT/PORT"
[[ ! -f $PORT_FILE ]] && echo '-' && return 0
local PORTS=($(cat "$PORT_FILE"))
for (( i=0; i < ${#PLUGIN_DATASTORE_PORTS[@]}; i++ )); do
for ((i = 0; i < ${#PLUGIN_DATASTORE_PORTS[@]}; i++)); do
echo -n "${PLUGIN_DATASTORE_PORTS[i]}->${PORTS[i]} "
done
}
@@ -327,7 +365,7 @@ service_image_exists() {
declare desc="Checks if the current image exists"
local IMAGE="$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION"
if [[ "$(docker images -q "$IMAGE" 2> /dev/null)" == "" ]]; then
if [[ "$(docker images -q "$IMAGE" 2>/dev/null)" == "" ]]; then
return 1
fi
@@ -415,10 +453,10 @@ service_link() {
[[ -n $LINK ]] && dokku_log_fail "Already linked as $LINK"
touch "$LINKS_FILE"
echo "$APP" >> "$LINKS_FILE"
echo "$APP" >>"$LINKS_FILE"
sort "$LINKS_FILE" -u -o "$LINKS_FILE"
if declare -f -F add_passed_docker_option > /dev/null; then
if declare -f -F add_passed_docker_option >/dev/null; then
# shellcheck disable=SC2034
local passed_phases=(build deploy run)
add_passed_docker_option passed_phases[@] "--link $SERVICE_NAME:$SERVICE_DNS_HOSTNAME"
@@ -436,14 +474,14 @@ service_linked_apps() {
local LINKS_FILE="$SERVICE_ROOT/LINKS"
touch "$LINKS_FILE"
[[ -z $(< "$LINKS_FILE") ]] && echo '-' && return 0
[[ -z $(<"$LINKS_FILE") ]] && echo '-' && return 0
tr '\n' ' ' < "$LINKS_FILE"
tr '\n' ' ' <"$LINKS_FILE"
}
service_list() {
declare desc="Lists all services and their status"
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2> /dev/null)
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
if [[ -z $SERVICES ]]; then
dokku_log_warn "There are no $PLUGIN_SERVICE services"
else
@@ -471,7 +509,7 @@ service_logs() {
DOKKU_LOGS_ARGS="--follow"
fi
docker inspect "$ID" &> /dev/null || dokku_log_fail "Service container does not exist"
docker inspect "$ID" &>/dev/null || dokku_log_fail "Service container does not exist"
is_container_status "$ID" "Running" || dokku_log_warn "Service logs may not be output as service is not running"
# shellcheck disable=SC2086
@@ -480,24 +518,26 @@ service_logs() {
service_parse_args() {
declare desc="cli arg parser"
local next_index=1; local skip=false; local args=("$@")
local next_index=1
local skip=false
local args=("$@")
for arg in "$@"; do
shift
case "$arg" in
"--alias") set -- "$@" "-a" ;;
"--config-options") set -- "$@" "-c" ;;
"--custom-env") set -- "$@" "-C" ;;
"--database") set -- "$@" "-d" ;;
"--image-version") set -- "$@" "-I" ;;
"--image") set -- "$@" "-i" ;;
"--memory") set -- "$@" "-m" ;;
"--password") set -- "$@" "-p" ;;
"--querystring") set -- "$@" "-q" ;;
"--restart-apps") set -- "$@" "-R" ;;
"--root-password") set -- "$@" "-r" ;;
"--user") set -- "$@" "-u" ;;
*) set -- "$@" "$arg"
"--alias") set -- "$@" "-a" ;;
"--config-options") set -- "$@" "-c" ;;
"--custom-env") set -- "$@" "-C" ;;
"--database") set -- "$@" "-d" ;;
"--image-version") set -- "$@" "-I" ;;
"--image") set -- "$@" "-i" ;;
"--memory") set -- "$@" "-m" ;;
"--password") set -- "$@" "-p" ;;
"--querystring") set -- "$@" "-q" ;;
"--restart-apps") set -- "$@" "-R" ;;
"--root-password") set -- "$@" "-r" ;;
"--user") set -- "$@" "-u" ;;
*) set -- "$@" "$arg" ;;
esac
done
@@ -505,33 +545,45 @@ service_parse_args() {
while getopts "a:c:C:d:i:I:m:p:q:R:r:u:" opt; do
case "$opt" in
a)
SERVICE_ALIAS="${OPTARG^^}"; export SERVICE_ALIAS="${SERVICE_ALIAS%_URL}"
;;
c) export PLUGIN_CONFIG_OPTIONS=$OPTARG
;;
C) export SERVICE_CUSTOM_ENV=$OPTARG
;;
d) export SERVICE_DATABASE=$OPTARG
;;
i) export PLUGIN_IMAGE=$OPTARG
;;
I) export PLUGIN_IMAGE_VERSION=$OPTARG
;;
m) export SERVICE_MEMORY=$OPTARG
;;
p) export SERVICE_PASSWORD=$OPTARG
;;
q) export SERVICE_QUERYSTRING=${OPTARG#"?"}
;;
R) export SERVICE_RESTART_APPS=$OPTARG
;;
r) export SERVICE_ROOT_PASSWORD=$OPTARG
;;
u) export SERVICE_USER=$OPTARG
;;
SERVICE_ALIAS="${OPTARG^^}"
export SERVICE_ALIAS="${SERVICE_ALIAS%_URL}"
;;
c)
export PLUGIN_CONFIG_OPTIONS=$OPTARG
;;
C)
export SERVICE_CUSTOM_ENV=$OPTARG
;;
d)
export SERVICE_DATABASE=$OPTARG
;;
i)
export PLUGIN_IMAGE=$OPTARG
;;
I)
export PLUGIN_IMAGE_VERSION=$OPTARG
;;
m)
export SERVICE_MEMORY=$OPTARG
;;
p)
export SERVICE_PASSWORD=$OPTARG
;;
q)
export SERVICE_QUERYSTRING=${OPTARG#"?"}
;;
R)
export SERVICE_RESTART_APPS=$OPTARG
;;
r)
export SERVICE_ROOT_PASSWORD=$OPTARG
;;
u)
export SERVICE_USER=$OPTARG
;;
esac
done
shift "$(( OPTIND - 1 ))" # remove options from positional parameters
shift "$((OPTIND - 1))" # remove options from positional parameters
}
service_port_expose() {
@@ -564,8 +616,8 @@ service_port_pause() {
return
fi
docker stop "$EXPOSED_NAME" > /dev/null 2>&1 || true
docker rm "$EXPOSED_NAME" > /dev/null 2>&1 || true
docker stop "$EXPOSED_NAME" >/dev/null 2>&1 || true
docker rm "$EXPOSED_NAME" >/dev/null 2>&1 || true
if [[ "$LOG_FAIL" == "true" ]]; then
dokku_log_info1 "Service $SERVICE unexposed"
fi
@@ -602,10 +654,10 @@ service_port_unpause() {
PORTS=($(cat "$PORT_FILE"))
fi
echo "${PORTS[@]}" > "$PORT_FILE"
echo "${PORTS[@]}" >"$PORT_FILE"
# shellcheck disable=SC2046
docker run -d --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" --name "$EXPOSED_NAME" $(docker_ports_options "${PORTS[@]}") --restart always --label dokku=ambassador --label "dokku.ambassador=$PLUGIN_COMMAND_PREFIX" dokku/ambassador:0.2.0 > /dev/null
docker run -d --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" --name "$EXPOSED_NAME" $(docker_ports_options "${PORTS[@]}") --restart always --label dokku=ambassador --label "dokku.ambassador=$PLUGIN_COMMAND_PREFIX" dokku/ambassador:0.2.0 >/dev/null
if [[ "$LOG_FAIL" == "true" ]]; then
dokku_log_info1 "Service $SERVICE exposed on port(s) [container->host]: $(service_exposed_ports "$SERVICE")"
fi
@@ -646,7 +698,7 @@ service_set_alias() {
local ALIAS_FILE="$SERVICE_ROOT/ALIAS"
touch "$ALIAS_FILE"
echo "$ALIAS" > "$ALIAS_FILE"
echo "$ALIAS" >"$ALIAS_FILE"
}
service_status() {
@@ -662,7 +714,7 @@ service_status() {
is_container_status "$ID" "Restarting" && echo "restarting" && return 0
is_container_status "$ID" "Running" && echo "running" && return 0
CONTAINER_STATUS=$(docker inspect -f "{{.State.Status}}" "$CID" 2> /dev/null || true)
CONTAINER_STATUS=$(docker inspect -f "{{.State.Status}}" "$CID" 2>/dev/null || true)
[[ -n "$CONTAINER_STATUS" ]] && echo "$CONTAINER_STATUS" && return 0
echo "missing" && return 0
}
@@ -670,14 +722,14 @@ service_status() {
service_stop() {
declare desc="Stops a running service"
declare SERVICE="$1"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE";
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local SERVICE_NAME="$(get_service_name "$SERVICE")"
local ID=$(docker ps -aq --no-trunc --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true
[[ -z $ID ]] && dokku_log_warn "Service is already stopped" && return 0
if [[ -n $ID ]]; then
dokku_log_info2_quiet "Stopping container"
docker stop "$SERVICE_NAME" > /dev/null
docker stop "$SERVICE_NAME" >/dev/null
service_port_pause "$SERVICE"
dokku_log_verbose_quiet "Container stopped"
else
@@ -697,7 +749,7 @@ service_unlink() {
remove_from_links_file "$SERVICE" "$APP"
if declare -f -F add_passed_docker_option > /dev/null; then
if declare -f -F add_passed_docker_option >/dev/null; then
# shellcheck disable=SC2034
local passed_phases=(build deploy run)
remove_passed_docker_option passed_phases[@] "--link $SERVICE_NAME:$SERVICE_DNS_HOSTNAME"
@@ -713,7 +765,7 @@ service_version() {
declare desc="Displays the running version for an image"
declare SERVICE="$1"
local SERVICE_NAME="$(get_service_name "$SERVICE")"
docker inspect -f '{{.Config.Image}}' "$SERVICE_NAME" 2> /dev/null || true
docker inspect -f '{{.Config.Image}}' "$SERVICE_NAME" 2>/dev/null || true
}
update_plugin_scheme_for_app() {
@@ -733,14 +785,12 @@ verify_service_name() {
return 0
}
is_valid_service_name() {
declare desc="Validates a service name"
write_database_name() {
declare desc="Writes a sanitized database name"
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && return 1
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
if [[ "$SERVICE" =~ ^[A-Za-z0-9_]+$ ]]; then
return 0
fi
return 1
# some datastores do not like special characters in database names
# so we need to normalize them out
echo "$SERVICE" | tr .- _ > "$SERVICE_ROOT/DATABASE_NAME"
}

4
config
View File

@@ -24,7 +24,3 @@ export PLUGIN_BASE_PATH="$PLUGIN_PATH"
if [[ -n $DOKKU_API_VERSION ]]; then
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
fi
if [[ -d "$PLUGIN_DATA_ROOT/*" ]]; then
rm -rf "${PLUGIN_DATA_ROOT:?}/*"
fi

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common-functions"
source "$PLUGIN_BASE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -24,7 +25,8 @@ service_create() {
is_valid_service_name "$SERVICE" || dokku_log_fail "Please specify a valid name for the service. Valid characters are: [A-Za-z0-9_]+"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
[[ ! -d "$PLUGIN_DATA_ROOT/$SERVICE" ]] || dokku_log_fail "$PLUGIN_SERVICE service $SERVICE already exists"
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"; LINKS_FILE="$SERVICE_ROOT/LINKS"
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
LINKS_FILE="$SERVICE_ROOT/LINKS"
service_parse_args "${@:2}"
@@ -47,15 +49,17 @@ service_create() {
PASSWORD="$SERVICE_PASSWORD"
dokku_log_warn "Specified password may not be as secure as the auto-generated password"
fi
echo "$PASSWORD" > "$SERVICE_ROOT/PASSWORD"
echo "$PASSWORD" >"$SERVICE_ROOT/PASSWORD"
chmod 640 "$SERVICE_ROOT/PASSWORD"
[[ -n "$SERVICE_CUSTOM_ENV" ]] && POSTGRES_CUSTOM_ENV="$SERVICE_CUSTOM_ENV"
if [[ -n $POSTGRES_CUSTOM_ENV ]]; then
echo "$POSTGRES_CUSTOM_ENV" | tr ';' "\n" > "$SERVICE_ROOT/ENV"
echo "$POSTGRES_CUSTOM_ENV" | tr ';' "\n" >"$SERVICE_ROOT/ENV"
else
echo "" > "$SERVICE_ROOT/ENV"
echo "" >"$SERVICE_ROOT/ENV"
fi
write_database_name "$SERVICE"
service_create_container "$SERVICE"
}
@@ -65,24 +69,24 @@ service_create_container() {
local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
local SERVICE_NAME="$(get_service_name "$SERVICE")"
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
local DATABASE_NAME="$(get_database_name "$SERVICE")"
local PREVIOUS_ID
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_HOST_ROOT/data:/var/lib/postgresql/data" -e "POSTGRES_PASSWORD=$PASSWORD" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=postgres "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION")
echo "$ID" > "$SERVICE_ROOT/ID"
echo "$ID" >"$SERVICE_ROOT/ID"
dokku_log_verbose_quiet "Waiting for container to be ready"
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" dokku/wait:0.3.0 -p "$PLUGIN_DATASTORE_WAIT_PORT" > /dev/null
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" dokku/wait:0.3.0 -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null
dokku_log_verbose_quiet "Creating container database"
DATABASE_NAME="$(get_database_name "$SERVICE")"
docker exec "$SERVICE_NAME" su - postgres -c "createdb -E utf8 $DATABASE_NAME" 2> /dev/null || dokku_log_verbose_quiet 'Already exists'
docker exec "$SERVICE_NAME" su - postgres -c "createdb -E utf8 $DATABASE_NAME" 2>/dev/null || dokku_log_verbose_quiet 'Already exists'
dokku_log_verbose_quiet "Securing connection to database"
service_stop "$SERVICE" > /dev/null
docker run --rm -i -v "$SERVICE_HOST_ROOT/data:/var/lib/postgresql/data" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" bash -s < "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/enable_ssl.sh" &> /dev/null
service_stop "$SERVICE" >/dev/null
docker run --rm -i -v "$SERVICE_HOST_ROOT/data:/var/lib/postgresql/data" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" bash -s <"$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/enable_ssl.sh" &>/dev/null
PREVIOUS_ID=$(docker ps -aq --no-trunc --filter "status=exited" --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true
docker start "$PREVIOUS_ID" > /dev/null
docker start "$PREVIOUS_ID" >/dev/null
service_port_unpause "$SERVICE"
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
@@ -133,7 +137,7 @@ service_start() {
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
if [[ -n $PREVIOUS_ID ]]; then
docker start "$PREVIOUS_ID" > /dev/null
docker start "$PREVIOUS_ID" >/dev/null
service_port_unpause "$SERVICE"
dokku_log_info2 "Container started"
elif service_image_exists "$SERVICE" && [[ -n "$PASSWORD" ]]; then
@@ -146,9 +150,8 @@ service_start() {
service_url() {
local SERVICE="$1"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
local DATABASE_NAME="$(get_database_name "$SERVICE")"
local SERVICE_DNS_HOSTNAME="$(service_dns_hostname "$SERVICE")"
local DATABASE_NAME="$(get_database_name "$SERVICE")"
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
echo "$PLUGIN_SCHEME://postgres:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}/$DATABASE_NAME"
}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common-functions"
export SUBCOMMAND_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/subcommands"
@@ -13,7 +14,7 @@ fn-help() {
exit 0
fi
pushd "$SUBCOMMAND_ROOT" > /dev/null 2>&1
pushd "$SUBCOMMAND_ROOT" >/dev/null 2>&1
for cmd in *; do
if [[ "$CMD" == "${PLUGIN_COMMAND_PREFIX}:$cmd" ]]; then
"$SUBCOMMAND_ROOT/$cmd" "$@"
@@ -21,7 +22,7 @@ fn-help() {
exit "$EXIT_CODE"
fi
done
popd > /dev/null 2>&1
popd >/dev/null 2>&1
exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
}
@@ -31,7 +32,7 @@ fn-help-all() {
local CMD_OUTPUT BLUE BOLD FULL_OUTPUT NORMAL
FULL_OUTPUT=true
if [[ "$CMD" = "$PLUGIN_COMMAND_PREFIX:help" ]] || [[ "$CMD" == "$PLUGIN_COMMAND_PREFIX" ]] || [[ "$CMD" == "$PLUGIN_COMMAND_PREFIX:default" ]] ; then
if [[ "$CMD" == "$PLUGIN_COMMAND_PREFIX:help" ]] || [[ "$CMD" == "$PLUGIN_COMMAND_PREFIX" ]] || [[ "$CMD" == "$PLUGIN_COMMAND_PREFIX:default" ]]; then
BOLD="$(fn-help-fancy-tput bold)"
NORMAL="$(fn-help-fancy-color "\033[m")"
BLUE="$(fn-help-fancy-color "\033[0;34m")"
@@ -58,7 +59,7 @@ fn-help-all() {
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
fn-help-contents
else
cat<<help_desc
cat <<help_desc
$PLUGIN_COMMAND_PREFIX, Plugin for managing $PLUGIN_SERVICE services
help_desc
fi
@@ -67,7 +68,7 @@ help_desc
}
fn-help-contents() {
pushd "$SUBCOMMAND_ROOT" > /dev/null 2>&1
pushd "$SUBCOMMAND_ROOT" >/dev/null 2>&1
for cmd in *; do
fn-help-contents-subcommand "$cmd" || true
done
@@ -81,7 +82,7 @@ fn-help-contents-subcommand() {
trap 'rm -rf "$TMPDIR" > /dev/null' RETURN INT TERM EXIT
rm -rf "$UNCLEAN_FILE" "$CLEAN_FILE"
cat "$SUBCOMMAND_ROOT/$SUBCOMMAND" > "$UNCLEAN_FILE"
cat "$SUBCOMMAND_ROOT/$SUBCOMMAND" >"$UNCLEAN_FILE"
fn-help-subcommand-sanitize "$UNCLEAN_FILE" "$CLEAN_FILE"
if ! is_implemented_command "$SUBCOMMAND"; then
@@ -142,7 +143,7 @@ fn-help-contents-subcommand() {
fn-help-fancy-tput() {
declare desc="A wrapper around tput"
if [[ -n "$DOKKU_NO_COLOR" ]] || [[ "$TERM" = "unknown" ]] || [[ "$TERM" == "dumb" ]]; then
if [[ -n "$DOKKU_NO_COLOR" ]] || [[ "$TERM" == "unknown" ]] || [[ "$TERM" == "dumb" ]]; then
return
fi
@@ -152,7 +153,7 @@ fn-help-fancy-tput() {
fn-help-fancy-color() {
declare desc="A wrapper around colors"
if [[ -n "$DOKKU_NO_COLOR" ]] || [[ "$TERM" = "unknown" ]] || [[ "$TERM" == "dumb" ]]; then
if [[ -n "$DOKKU_NO_COLOR" ]] || [[ "$TERM" == "unknown" ]] || [[ "$TERM" == "dumb" ]]; then
return
fi
@@ -162,7 +163,7 @@ fn-help-fancy-color() {
fn-help-list-example() {
# shellcheck disable=SC2034
declare desc="return $PLUGIN_COMMAND_PREFIX plugin help content"
cat<<help_list
cat <<help_list
NAME, VERSION, STATUS, EXPOSED PORTS, LINKS
service-name, $PLUGIN_COMMAND_PREFIX:$PLUGIN_IMAGE_VERSION, running, -, app-name
help_list
@@ -295,16 +296,16 @@ fn-help-subcommand-sanitize() {
fi
if [[ "$FUNCTION_FOUND" == true ]]; then
echo "$p" >> "$OUTGOING_FUNC_FILE"
echo "$p" >>"$OUTGOING_FUNC_FILE"
continue
fi
if [[ "$p" == *"()"* ]]; then
FUNCTION_FOUND=true
echo "$p" >> "$OUTGOING_FUNC_FILE"
echo "$p" >>"$OUTGOING_FUNC_FILE"
continue
fi
done < "$FUNC_FILE"
done <"$FUNC_FILE"
}
_fn-help-apply-shell-expansion() {

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
plugin-install() {
pull-docker-image() {
@@ -10,7 +11,7 @@ plugin-install() {
echo " ! docker pull ${IMAGE}" 1>&2
return
fi
if [[ "$(docker images -q "${IMAGE}" 2> /dev/null)" == "" ]]; then
if [[ "$(docker images -q "${IMAGE}" 2>/dev/null)" == "" ]]; then
docker pull "${IMAGE}"
fi
}
@@ -31,7 +32,7 @@ plugin-install() {
_SUDOERS_FILE="/etc/sudoers.d/dokku-${PLUGIN_COMMAND_PREFIX}"
touch "$_SUDOERS_FILE"
cat > "$_SUDOERS_FILE" <<EOL
cat >"$_SUDOERS_FILE" <<EOL
%dokku ALL=(ALL) NOPASSWD:/bin/rm -f /etc/cron.d/dokku-${PLUGIN_COMMAND_PREFIX}-*
%dokku ALL=(ALL) NOPASSWD:/bin/chown root\:root /etc/cron.d/dokku-${PLUGIN_COMMAND_PREFIX}-*
%dokku ALL=(ALL) NOPASSWD:/bin/chmod 644 /etc/cron.d/dokku-${PLUGIN_COMMAND_PREFIX}-*

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku postgres service plugin"
version = "1.7.0"
version = "1.8.0"
[plugin.config]

View File

@@ -1,7 +1,8 @@
#!/usr/bin/env bash
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
source "$PLUGIN_BASE_PATH/common/functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
PLUGIN_BASE_PATH="$PLUGIN_PATH"
if [[ -n $DOKKU_API_VERSION ]]; then
@@ -11,7 +12,7 @@ source "$PLUGIN_BASE_PATH/common/functions"
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/functions"
APP="$1"
pushd "$PLUGIN_DATA_ROOT" > /dev/null
pushd "$PLUGIN_DATA_ROOT" >/dev/null
for SERVICE in *; do
dokku_log_verbose_quiet "Unlinking from $SERVICE"
remove_from_links_file "$(basename "$SERVICE")" "$APP"

View File

@@ -1,7 +1,7 @@
#!/bin/bash
pushd /var/lib/postgresql/data > /dev/null
pushd /var/lib/postgresql/data >/dev/null
openssl req -new -newkey rsa:4096 -x509 -nodes -out server.crt -keyout server.key -batch
chmod 600 server.key
sed -i "s/^#ssl = off/ssl = on/" postgresql.conf
sed -i "s/^#ssl_ciphers =.*/ssl_ciphers = 'AES256+EECDH:AES256+EDH'/" postgresql.conf
popd > /dev/null
popd >/dev/null

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-app-links-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:app-links playground
#A app, app to run command against
declare desc="list all $PLUGIN_SERVICE service links for a given app"
local cmd="$PLUGIN_COMMAND_PREFIX:app-links" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:app-links" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare APP="$1"
APP=${APP:="$DOKKU_APP_NAME"}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -11,7 +12,8 @@ service-backup-cmd() {
#A service, service to run command against
#A bucket-name, name of the s3 bucket to upload backups to
declare desc="creates a backup of the $PLUGIN_SERVICE service to an existing s3 bucket"
local cmd="$PLUGIN_COMMAND_PREFIX:backup" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" BUCKET_NAME="$2" USE_IAM_OPTIONAL_FLAG="$3"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -20,7 +21,8 @@ service-backup-auth-cmd() {
#A aws-signature-version, (optional) the AWS signature version to use when signing S3 requests
#A endpoint-url, (optional) an aws endpoint to upload to
declare desc="sets up authentication for backups on the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-auth" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-auth" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" AWS_ACCESS_KEY_ID="$2" AWS_SECRET_ACCESS_KEY="$3" AWS_DEFAULT_REGION="$4" AWS_SIGNATURE_VERSION="$5" ENDPOINT_URL="$6"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-backup-deauth-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:backup-deauth lolipop
#A service, service to run command against
declare desc="removes backup authentication for the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-deauth" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-deauth" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -15,7 +16,8 @@ service-backup-schedule-cmd() {
#A schedule, a cron schedule to run backups on
#A bucket-name, name of the s3 bucket to upload backups to
declare desc="schedules a backup of the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-schedule" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-schedule" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" SCHEDULE="$2" BUCKET_NAME="$3" USE_IAM_OPTIONAL_FLAG="$4"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-backup-schedule-cat-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:backup-schedule-cat lolipop
#A service, service to run command against
declare desc="cat the contents of the configured backup cronfile for the service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-schedule-cat" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-schedule-cat" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -10,7 +11,8 @@ service-backup-set-encryption-cmd() {
#A service, service to run command against
#A passphrase, a GPG-compatible passphrase
declare desc="sets encryption for all future backups of $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-set-encryption" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-set-encryption" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" PASSPHRASE="$2"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-backup-unschedule-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:backup-unschedule lolipop
#A service, service to run command against
declare desc="unschedules the backup of the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-unschedule" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-unschedule" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-backup-unset-encryption-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:backup-unset-encryption lolipop
#A service, service to run command against
declare desc="unsets encryption for future backups of the $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:backup-unset-encryption" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:backup-unset-encryption" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -15,7 +16,8 @@ service-clone-cmd() {
#F -p|--password PASSWORD, override the user-level service password
#F -r|--root-password PASSWORD, override the root-level service password
declare desc="create container <new-name> then copy data from <name> into <new-name>"
local cmd="$PLUGIN_COMMAND_PREFIX:clone" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:clone" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" NEW_SERVICE="$2" CLONE_FLAGS_LIST=("${@:3}")
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"
@@ -27,15 +29,15 @@ service-clone-cmd() {
local ID="$(cat "$SERVICE_ROOT/ID")"
is_container_status "$ID" "Running" || dokku_log_fail "Service ${SERVICE} container is not running"
PLUGIN_IMAGE=$(service_version "$SERVICE" | grep -o "^.*:" | sed -r "s/://g")
PLUGIN_IMAGE_VERSION=$(service_version "$SERVICE" | grep -o ":.*$" | sed -r "s/://g")
PLUGIN_IMAGE=$(service_version "$SERVICE" | grep -o "^.*:" | sed -r "s/://g")
PLUGIN_IMAGE_VERSION=$(service_version "$SERVICE" | grep -o ":.*$" | sed -r "s/://g")
service_parse_args "${@:3}"
dokku_log_info2 "Cloning $SERVICE to $NEW_SERVICE @ $PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION"
service_create "$NEW_SERVICE" "${@:3}"
dokku_log_info1 "Copying data from $SERVICE to $NEW_SERVICE"
service_export "$SERVICE" | service_import "$NEW_SERVICE" > /dev/null 2>&1 || true
service_export "$SERVICE" | service_import "$NEW_SERVICE" >/dev/null 2>&1 || true
dokku_log_info2 "Done"
}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-connect-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:connect lolipop
#A service, service to run command against
declare desc="connect to the service via the $PLUGIN_COMMAND_PREFIX connection tool"
local cmd="$PLUGIN_COMMAND_PREFIX:connect" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:connect" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -12,7 +13,7 @@ service-create-cmd() {
#E export ${PLUGIN_DEFAULT_ALIAS}_IMAGE="${PLUGIN_IMAGE}"
#E export ${PLUGIN_DEFAULT_ALIAS}_IMAGE_VERSION="${PLUGIN_IMAGE_VERSION}"
#E dokku $PLUGIN_COMMAND_PREFIX:create lolipop
#E you can also specify custom environment variables to start
#E you can also specify custom environment variables to start
#E the ${PLUGIN_COMMAND_PREFIX} service in semi-colon separated form.
#E export ${PLUGIN_DEFAULT_ALIAS}_CUSTOM_ENV="USER=alpha;HOST=beta"
#E dokku $PLUGIN_COMMAND_PREFIX:create lolipop
@@ -23,7 +24,8 @@ service-create-cmd() {
#F -p|--password PASSWORD, override the user-level service password
#F -r|--root-password PASSWORD, override the root-level service password
declare desc="create a $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:create" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:create" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" CREATE_FLAGS_LIST=("${@:2}")
service_create "$SERVICE" "${@:2}"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -10,12 +11,14 @@ service-destroy-cmd() {
#A service, service to run command against
#F -f|--force, force destroy without asking for confirmation
declare desc="delete the $PLUGIN_SERVICE service/data/container if there are no links left"
local cmd="$PLUGIN_COMMAND_PREFIX:destroy" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:destroy" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" FORCE_FLAG="$2"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
verify_service_name "$SERVICE"
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"; LINKS_FILE="$SERVICE_ROOT/LINKS"
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
LINKS_FILE="$SERVICE_ROOT/LINKS"
SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
SERVICE_NAME="$(get_service_name "$SERVICE")"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -13,7 +14,8 @@ service-enter-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:enter lolipop touch /tmp/test
#A service, service to run command against
declare desc="enter or run a command in a running $PLUGIN_SERVICE service container"
local cmd="$PLUGIN_COMMAND_PREFIX:enter" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:enter" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
dokku_log_info1_quiet "Filesystem changes may not persist after container restarts"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-exists-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:exists lolipop
#A service, service to run command against
declare desc="check if the $PLUGIN_SERVICE service exists"
local cmd="$PLUGIN_COMMAND_PREFIX:exists" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:exists" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -11,7 +12,8 @@ service-export-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:export lolipop > lolipop.dump
#A service, service to run command against
declare desc="export a dump of the $PLUGIN_SERVICE service database"
local cmd="$PLUGIN_COMMAND_PREFIX:export" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:export" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -10,7 +11,8 @@ service-expose-cmd() {
#A service, service to run command against
#A ports, a list of ports to run against
declare desc="expose a $PLUGIN_SERVICE service on custom port if provided (random port otherwise)"
local cmd="$PLUGIN_COMMAND_PREFIX:expose" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:expose" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" PORTS_LIST=("${@:2}")
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-import-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:import lolipop < database.dump
#A service, service to run command against
declare desc="import a dump into the $PLUGIN_SERVICE service database"
local cmd="$PLUGIN_COMMAND_PREFIX:import" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:import" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
is_implemented_command "$cmd" || dokku_log_fail "Not yet implemented"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -30,7 +31,8 @@ service-info-cmd() {
#F --status, show the service running status
#F --version, show the service image version
declare desc="print the connection information"
local cmd="$PLUGIN_COMMAND_PREFIX:info" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:info" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" INFO_FLAG="$2"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -42,7 +43,8 @@ service-link-cmd() {
#F -a|--alias "BLUE_DATABASE", an alternative alias to use for linking to an app via environment variable
#F -q|--querystring "pool=5", ampersand delimited querystring arguments to append to the service link
declare desc="link the $PLUGIN_SERVICE service to the app"
local cmd="$PLUGIN_COMMAND_PREFIX:link" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:link" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" APP="$2" LINK_FLAGS_LIST=("${@:3}")
APP=${APP:="$DOKKU_APP_NAME"}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -10,7 +11,8 @@ service-linked-cmd() {
#A service, service to run command against
#A app, app to run command against
declare desc="check if the $PLUGIN_SERVICE service is linked to an app"
local cmd="$PLUGIN_COMMAND_PREFIX:linked" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:linked" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" APP="$2"
APP=${APP:="$DOKKU_APP_NAME"}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -8,7 +9,8 @@ service-list-cmd() {
#E list all services
#E dokku $PLUGIN_COMMAND_PREFIX:list
declare desc="list all $PLUGIN_SERVICE services"
local cmd="$PLUGIN_COMMAND_PREFIX:list" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:list" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
service_list
}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -12,7 +13,8 @@ service-logs-cmd() {
#A service, service to run command against
#F -t|--tail, do not stop when end of the logs are reached and wait for additional output
declare desc="print the most recent log(s) for this service"
local cmd="$PLUGIN_COMMAND_PREFIX:logs" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:logs" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" TAIL_FLAG="$2"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -23,7 +24,8 @@ service-promote-cmd() {
#A service, service to run command against
#A app, app to run command against
declare desc="promote service <service> as ${PLUGIN_DEFAULT_ALIAS}_URL in <app>"
local cmd="$PLUGIN_COMMAND_PREFIX:promote" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:promote" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" APP="$2"
APP=${APP:="$DOKKU_APP_NAME"}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-restart-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:restart lolipop
#A service, service to run command against
declare desc="graceful shutdown and restart of the $PLUGIN_SERVICE service container"
local cmd="$PLUGIN_COMMAND_PREFIX:restart" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:restart" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-start-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:start lolipop
#A service, service to run command against
declare desc="start a previously stopped $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:start" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:start" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-stop-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:stop lolipop
#A service, service to run command against
declare desc="stop a running $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:stop" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:stop" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -9,7 +10,8 @@ service-unexpose-cmd() {
#E dokku $PLUGIN_COMMAND_PREFIX:unexpose lolipop
#A service, service to run command against
declare desc="unexpose a previously exposed $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:unexpose" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:unexpose" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
@@ -11,7 +12,8 @@ service-unlink-cmd() {
#A service, service to run command against
#A app, app to run command against
declare desc="unlink the $PLUGIN_SERVICE service from the app"
local cmd="$PLUGIN_COMMAND_PREFIX:unlink" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:unlink" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" APP="$2"
APP=${APP:="$DOKKU_APP_NAME"}

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
@@ -14,7 +15,8 @@ service-upgrade-cmd() {
#F -I|--image-version IMAGE_VERSION, the image version to start the service with
#F -R|--restart-apps "true", whether to force an app restart
declare desc="upgrade service <service> to the specified versions"
local cmd="$PLUGIN_COMMAND_PREFIX:upgrade" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="$PLUGIN_COMMAND_PREFIX:upgrade" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" UPGRADE_FLAGS_LIST=("${@:2}")
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"

View File

@@ -7,6 +7,15 @@ load test_helper
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
}
@test "($PLUGIN_COMMAND_PREFIX:create) service with dashes" {
run dokku "$PLUGIN_COMMAND_PREFIX:create" service-with-dashes
assert_contains "${lines[*]}" "container created: service-with-dashes"
assert_contains "${lines[*]}" "dokku-$PLUGIN_COMMAND_PREFIX-service-with-dashes"
assert_contains "${lines[*]}" "service_with_dashes"
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" service-with-dashes
}
@test "($PLUGIN_COMMAND_PREFIX:create) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:create"
assert_contains "${lines[*]}" "Please specify a valid name for the service"
@@ -15,7 +24,4 @@ load test_helper
@test "($PLUGIN_COMMAND_PREFIX:create) error when there is an invalid name specified" {
run dokku "$PLUGIN_COMMAND_PREFIX:create" d.erp
assert_failure
run dokku "$PLUGIN_COMMAND_PREFIX:create" d-erp
assert_failure
}

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh
if [[ "$DOKKU_VERSION" == "master" ]]; then
sudo bash bootstrap.sh

View File

@@ -3,8 +3,11 @@ export DOKKU_LIB_ROOT="/var/lib/dokku"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
flunk() {
{ if [ "$#" -eq 0 ]; then cat -
else echo "$*"
{
if [ "$#" -eq 0 ]; then
cat -
else
echo "$*"
fi
}
return 1
@@ -12,7 +15,8 @@ flunk() {
assert_equal() {
if [ "$1" != "$2" ]; then
{ echo "expected: $1"
{
echo "expected: $1"
echo "actual: $2"
} | flunk
fi
@@ -59,8 +63,10 @@ assert_contains() {
# shellcheck disable=SC2154
assert_output() {
local expected
if [ $# -eq 0 ]; then expected="$(cat -)"
else expected="$1"
if [ $# -eq 0 ]; then
expected="$(cat -)"
else
expected="$1"
fi
assert_equal "$expected" "$output"
}