Since they are separate resources, triggering the normal app creation flow makes the most sense. We still remove the cache directory because we want the correct cache permissions for the new application.
32 lines
1.3 KiB
Bash
Executable File
32 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/apps/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
|
|
|
apps_rename_cmd() {
|
|
declare desc="renames an app"
|
|
local cmd="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"
|
|
local OLD_APP="$2"
|
|
local NEW_APP="$3"
|
|
local OLD_CACHE_DIR="$DOKKU_ROOT/$OLD_APP/cache"
|
|
|
|
if [[ -d "$OLD_CACHE_DIR" ]] && ! rmdir "$OLD_CACHE_DIR"; then
|
|
docker run "$DOKKU_GLOBAL_RUN_ARGS" --rm -v "$OLD_CACHE_DIR:/cache" "dokku/$OLD_APP" chmod 777 -R /cache
|
|
fi
|
|
rm -rf "$OLD_CACHE_DIR"
|
|
apps_create "$NEW_APP"
|
|
cp -a "$DOKKU_ROOT/$OLD_APP/." "$DOKKU_ROOT/$NEW_APP"
|
|
DOKKU_APPS_FORCE_DELETE=1 apps_destroy "$OLD_APP"
|
|
[[ -f "$DOKKU_ROOT/$NEW_APP/URLS" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/URLS"
|
|
[[ -f "$DOKKU_ROOT/$NEW_APP/VHOST" ]] && sed -i -e "s/$OLD_APP/$NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/VHOST"
|
|
[[ -f "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive" ]] && sed -i -e "s/git-hook $OLD_APP/git-hook $NEW_APP/g" "$DOKKU_ROOT/$NEW_APP/hooks/pre-receive"
|
|
ps_rebuild "$NEW_APP"
|
|
plugn trigger post-app-rename "$OLD_APP" "$NEW_APP"
|
|
echo "Renaming $OLD_APP to $NEW_APP... done"
|
|
}
|
|
|
|
apps_rename_cmd "$@"
|