diff --git a/plugins/git/internal-functions b/plugins/git/internal-functions index a16dfb5a1..7b3a10d1c 100755 --- a/plugins/git/internal-functions +++ b/plugins/git/internal-functions @@ -231,14 +231,34 @@ cmd-git-unlock() { declare desc="removes the clone folder for an app" local cmd="git:unlock" [[ "$1" == "$cmd" ]] && shift 1 - declare APP="$1" + declare APP="$1" FLAG + + for arg in "$@"; do + if [[ "$arg" == "--force" ]]; then + FLAG="--force" + continue + fi + + ARGS+=("$arg") + done local APP_CLONE_ROOT="$DOKKU_LIB_ROOT/data/git/$APP" if [[ -d "$APP_CLONE_ROOT" ]]; then - dokku_log_info1 "About to delete $APP_CLONE_ROOT" - rm -rf "$APP_CLONE_ROOT" - dokku_log_info1 "Successfully unlocked $APP" + if [[ "$FLAG" == "--force" ]]; then + dokku_log_info1 "About to delete $APP_CLONE_ROOT" + rm -rf "$APP_CLONE_ROOT" + dokku_log_info1 "Successfully unlocked $APP" + else + read -rp "Are you sure that want to delete clone folder (y/n)?" choice + case "$choice" in + y|Y ) dokku_log_info1 "About to delete $APP_CLONE_ROOT" + rm -rf "$APP_CLONE_ROOT" + dokku_log_info1 "Successfully unlocked $APP";; + n|N ) echo "no";; + * ) echo "please answer with yes or no";; + esac + fi else dokku_log_info1 "No clone folder exists app already unlocked" fi diff --git a/tests/unit/git_6.bats b/tests/unit/git_6.bats new file mode 100644 index 000000000..0635e662e --- /dev/null +++ b/tests/unit/git_6.bats @@ -0,0 +1,32 @@ +#!/usr/bin/env bats + +load test_helper + +setup() { + global_setup + create_app + touch /home/dokku/.ssh/known_hosts + chown dokku:dokku /home/dokku/.ssh/known_hosts + touch /home/dokku/data/git/$TEST_APP + +} + +teardown() { + rm -f /home/dokku/.ssh/id_rsa.pub || true + destroy_app + global_teardown +} + +@test "(git) git:unlock [succes]" { + run /bin/bash -c "dokku git:unlock $TEST_APP --force" + echo "output: $output" + echo "status: $status" + assert_success +} + +@test "(git) git:unlock [missing]" { + run /bin/bash -c "dokku git:unlock + echo "output: $output" + echo "status: $status" + assert_failure +} \ No newline at end of file