Adds unit test for new apps:rename function. Add example in the docs for new apps:rename function. Add apps:rename command to help command. Delete cache directory before copying old app directory to new app directory. deploy_app instead of create_app for apps:rename testing. Change app url to match new name. Fix unit tests. Add some more tests, plugn triggers.
82 lines
2.6 KiB
Bash
Executable File
82 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
[[ " apps apps:create apps:rename apps:destroy help apps:help " == *" $1 "* ]] || exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
|
|
|
|
case "$1" in
|
|
apps)
|
|
dokku_log_info2_quiet "My Apps"
|
|
find $DOKKU_ROOT -follow -maxdepth 1 -type d \( ! -iname ".*" \) -not -path $DOKKU_ROOT/tls | sed 's|^\./||g' | sed 's|'$DOKKU_ROOT'\/||' | tail -n +2 | sort
|
|
;;
|
|
|
|
apps:create)
|
|
apps_create $2
|
|
;;
|
|
|
|
apps:rename)
|
|
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
|
|
[[ -d "$DOKKU_ROOT/$3" ]] && dokku_log_fail "Name is already taken"
|
|
OLD_APP="$2"
|
|
NEW_APP="$3"
|
|
|
|
mkdir -p "$DOKKU_ROOT/$NEW_APP"
|
|
docker run --rm -v "$DOKKU_ROOT/$OLD_APP/cache:/cache" "dokku/$OLD_APP" chmod 777 -R /cache
|
|
rm -rf "$DOKKU_ROOT/$OLD_APP/cache"
|
|
cp -a "$DOKKU_ROOT/$OLD_APP/." "$DOKKU_ROOT/$NEW_APP"
|
|
dokku apps:destroy $OLD_APP --force
|
|
sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/URLS"
|
|
sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/VHOST"
|
|
dokku ps:rebuild $NEW_APP
|
|
plugn trigger post-app-rename $OLD_APP $NEW_APP
|
|
echo "Renaming $OLD_APP to $NEW_APP... done"
|
|
;;
|
|
|
|
apps:destroy)
|
|
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
|
|
[[ "$2" == "tls" ]] && dokku_log_fail "Unable to destroy tls directory"
|
|
[[ "$3" == "force" ]] && DOKKU_APPS_FORCE_DELETE=1
|
|
APP="$2"; IMAGE_TAG=$(get_running_image_tag $APP)
|
|
verify_app_name "$APP"
|
|
|
|
if [[ -z "$DOKKU_APPS_FORCE_DELETE" ]]; then
|
|
dokku_log_warn "WARNING: Potentially Destructive Action"
|
|
dokku_log_warn "This command will destroy $APP (including all add-ons)."
|
|
dokku_log_warn "To proceed, type \"$APP\""
|
|
echo ""
|
|
|
|
read -rp "> " app_name
|
|
if [[ "$app_name" != "$APP" ]]; then
|
|
dokku_log_fail "Confirmation did not match $APP. Aborted."
|
|
fi
|
|
fi
|
|
|
|
echo "Destroying $APP (including all add-ons)"
|
|
|
|
plugn trigger pre-delete $APP $IMAGE_TAG
|
|
DOKKU_APP_CIDS=$(get_app_container_ids $APP)
|
|
if [[ -n $DOKKU_APP_CIDS ]]; then
|
|
for ID in $DOKKU_APP_CIDS; do
|
|
docker stop $ID > /dev/null || true
|
|
docker rm $ID > /dev/null || true
|
|
done
|
|
fi
|
|
|
|
plugn trigger post-delete $APP $IMAGE_TAG
|
|
;;
|
|
|
|
help | apps:help)
|
|
cat<<EOF
|
|
apps, List your apps
|
|
apps:create <app>, Create a new app
|
|
apps:destroy <app>, Permanently destroy an app
|
|
apps:rename <old-app> <new-app>, Rename an app
|
|
EOF
|
|
;;
|
|
|
|
*)
|
|
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
|
;;
|
|
|
|
esac
|