From 3f257c4aca522d39fa1153adea2ff03f0cb7d932 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Feb 2018 15:42:27 -0500 Subject: [PATCH] feat: implement exists and linked subcommands --- README.md | 2 ++ common-functions | 14 ++++++++++++++ subcommands/exists | 20 ++++++++++++++++++++ subcommands/linked | 24 ++++++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100755 subcommands/exists create mode 100755 subcommands/linked diff --git a/README.md b/README.md index 1f526d9..0a58217 100644 --- a/README.md +++ b/README.md @@ -29,11 +29,13 @@ redis:connect Connect via redis-cli to a redis service redis:create Create a redis service with environment variables redis:destroy Delete the service, delete the data and stop its container if there are no links left redis:enter [command] Enter or run a command in a running redis service container +redis:exists Check if the redis service exists redis:export > Export a dump of the redis service database redis:expose [port] Expose a redis service on custom port if provided (random port otherwise) redis:import Import a dump into the redis service database redis:info Print the connection information redis:link Link the redis service to the app +redis:linked Check if the redis service is linked to an app redis:list List all redis services redis:logs [-t] Print the most recent log(s) for this service redis:promote Promote service as REDIS_URL in diff --git a/common-functions b/common-functions index d08b2e4..7450339 100755 --- a/common-functions +++ b/common-functions @@ -289,6 +289,20 @@ service_info() { fi } +service_is_linked() { + declare desc="Links a service to an application" + declare SERVICE="$1" APP="$2" + update_plugin_scheme_for_app "$APP" + local SERVICE_URL=$(service_url "$SERVICE") + local EXISTING_CONFIG=$(config_all "$APP") + local LINK=$(echo "$EXISTING_CONFIG" | grep "$SERVICE_URL" | cut -d: -f1) || true + if [[ -z $LINK ]]; then + dokku_log_warn "Service $SERVICE is not linked to $APP" + exit 1 + fi + dokku_log_info1 "Service $SERVICE is linked to $APP" +} + service_link() { declare desc="Links a service to an application" declare SERVICE="$1" APP="$2" diff --git a/subcommands/exists b/subcommands/exists new file mode 100755 index 0000000..93b6a99 --- /dev/null +++ b/subcommands/exists @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config" +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_BASE_PATH/common/functions" +source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions" + +service-exists-cmd() { + #E here we check if the lolipop $PLUGIN_COMMAND_PREFIX service exists. + #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 + declare SERVICE="$1" + + [[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service" + verify_service_name "$SERVICE" + dokku_log_info1 "Service $SERVICE exists" +} + +service-exists-cmd "$@" diff --git a/subcommands/linked b/subcommands/linked new file mode 100755 index 0000000..f5a1789 --- /dev/null +++ b/subcommands/linked @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config" +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_BASE_PATH/common/functions" +source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions" + +service-linked-cmd() { + #E here we check if the lolipop $PLUGIN_COMMAND_PREFIX service is linked to the 'playground' app. + #E dokku $PLUGIN_COMMAND_PREFIX:linked lolipop playground + #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 + declare SERVICE="$1" APP="$2" + APP=${APP:="$DOKKU_APP_NAME"} + + [[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service" + [[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on" + verify_app_name "$APP" + verify_service_name "$SERVICE" + service_is_linked "$SERVICE" "$APP" +} + +service-linked-cmd "$@"