diff --git a/hooks/pre-checkout b/hooks/pre-checkout index e808547..f3a350a 100755 --- a/hooks/pre-checkout +++ b/hooks/pre-checkout @@ -3,14 +3,44 @@ set -eo pipefail echo "--- Running pre-checkout hook" +if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_CLEAN_FLAGS" ]; then + export BUILDKITE_GIT_CLEAN_FLAGS="$BUILDKITE_PLUGIN_GIT_FLAGS_CLEAN_FLAGS" + + echo "Set buildkite git clean flags to $BUILDKITE_PLUGIN_GIT_FLAGS_CLEAN_FLAGS" +fi + if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_FLAGS" ]; then export BUILDKITE_GIT_CLONE_FLAGS="$BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_FLAGS" echo "Set buildkite git clone flags to $BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_FLAGS" fi +if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_MIRROR_FLAGS" ]; then + export BUILDKITE_GIT_CLONE_MIRROR_FLAGS="$BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_MIRROR_FLAGS" + + echo "Set buildkite git clone mirror flags to $BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_MIRROR_FLAGS" +fi + if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_FETCH_FLAGS" ]; then export BUILDKITE_GIT_FETCH_FLAGS="$BUILDKITE_PLUGIN_GIT_FLAGS_FETCH_FLAGS" echo "Set buildkite git fetch flags to $BUILDKITE_PLUGIN_GIT_FLAGS_FETCH_FLAGS" fi + +if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_LOCK_TIMEOUT" ]; then + export BUILDKITE_GIT_MIRRORS_LOCK_TIMEOUT="$BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_LOCK_TIMEOUT" + + echo "Set buildkite git mirrors lock timeout to $BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_LOCK_TIMEOUT" +fi + +if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_PATH" ]; then + export BUILDKITE_GIT_MIRRORS_PATH="$BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_PATH" + + echo "Set buildkite git mirrors path to $BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_PATH" +fi + +if [ -n "$BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_SKIP_UPDATE" ]; then + export BUILDKITE_GIT_MIRRORS_SKIP_UPDATE="$BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_SKIP_UPDATE" + + echo "Set buildkite git mirrors skip update to $BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_SKIP_UPDATE" +fi diff --git a/plugin.yml b/plugin.yml index 50dfcea..eba04b3 100644 --- a/plugin.yml +++ b/plugin.yml @@ -4,8 +4,23 @@ author: https://github.com/whizzzkid requirements: ['git'] configuration: properties: + clean_flags: + type: string + default: '-ffxdq' clone_flags: type: string + default: '-v' + clone_mirror_flags: + type: string fetch_flags: type: string + default: '-v --prune' + mirrors_lock_timeout: + type: string + default: 300 + mirrors_path: + type: string + mirrors_skip_update: + type: boolean + default: false required: [] diff --git a/tests/pre-checkout.bats b/tests/pre-checkout.bats index 4893b87..5c836a3 100755 --- a/tests/pre-checkout.bats +++ b/tests/pre-checkout.bats @@ -10,6 +10,16 @@ setup() { # Uncomment the following line to debug stub failures # export BUILDKITE_AGENT_STUB_DEBUG=/dev/tty + +@test "Sets the clean flags" { + export BUILDKITE_PLUGIN_GIT_FLAGS_CLEAN_FLAGS="foo" + + run "$PWD/hooks/pre-checkout" + + assert_success + assert_output --partial "Set buildkite git clean flags to $BUILDKITE_PLUGIN_GIT_FLAGS_CLEAN_FLAGS" +} + @test "Sets the clone flags" { export BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_FLAGS="--all" @@ -19,6 +29,15 @@ setup() { assert_output --partial "Set buildkite git clone flags to $BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_FLAGS" } +@test "Sets the clone mirror flags" { + export BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_MIRROR_FLAGS="foo" + + run "$PWD/hooks/pre-checkout" + + assert_success + assert_output --partial "Set buildkite git clone mirror flags to $BUILDKITE_PLUGIN_GIT_FLAGS_CLONE_MIRROR_FLAGS" +} + @test "Sets the fetch flags" { export BUILDKITE_PLUGIN_GIT_FLAGS_FETCH_FLAGS="--all" @@ -27,3 +46,30 @@ setup() { assert_success assert_output --partial "Set buildkite git fetch flags to $BUILDKITE_PLUGIN_GIT_FLAGS_FETCH_FLAGS" } + +@test "Sets the mirrors lock timeout" { + export BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_LOCK_TIMEOUT="100" + + run "$PWD/hooks/pre-checkout" + + assert_success + assert_output --partial "Set buildkite git mirrors lock timeout to $BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_LOCK_TIMEOUT" +} + +@test "Sets the mirrors paths" { + export BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_PATH="foo" + + run "$PWD/hooks/pre-checkout" + + assert_success + assert_output --partial "Set buildkite git mirrors path to $BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_PATH" +} + +@test "Sets the mirrors skip update" { + export BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_SKIP_UPDATE="false" + + run "$PWD/hooks/pre-checkout" + + assert_success + assert_output --partial "Set buildkite git mirrors skip update to $BUILDKITE_PLUGIN_GIT_FLAGS_MIRRORS_SKIP_UPDATE" +}