Add regex command implementation
This commit is contained in:
75
scripts/smoke-test-regex.sh
Executable file
75
scripts/smoke-test-regex.sh
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
BIN=(go run)
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
WORK_DIR="$TMP_DIR/workspace"
|
||||
PREVIEW_LOG=""
|
||||
SCOPE_LOG=""
|
||||
APPLY_LOG=""
|
||||
UNDO_LOG=""
|
||||
|
||||
cleanup() {
|
||||
rm -rf "$TMP_DIR"
|
||||
for log in "$PREVIEW_LOG" "$SCOPE_LOG" "$APPLY_LOG" "$UNDO_LOG"; do
|
||||
[[ -n "${log:-}" ]] && rm -f "$log"
|
||||
done
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
mkdir -p "$WORK_DIR" "$WORK_DIR/artifacts"
|
||||
|
||||
# Seed workspace with fixtures referenced in quickstart docs.
|
||||
cp -R "$ROOT_DIR/tests/fixtures/regex/baseline/." "$WORK_DIR/"
|
||||
cp "$ROOT_DIR/tests/fixtures/regex/mixed/feature-demo_2025-10-01.txt" "$WORK_DIR/"
|
||||
cp "$ROOT_DIR/tests/fixtures/regex/mixed/build_101_release.tar.gz" "$WORK_DIR/artifacts/build_101_vrelease.tar.gz"
|
||||
cp "$ROOT_DIR/tests/fixtures/regex/mixed/build_102_hotfix.tar.gz" "$WORK_DIR/artifacts/build_102_vhotfix.tar.gz"
|
||||
mkdir -p "$WORK_DIR/artifacts/build_103_varchive"
|
||||
printf 'Quarterly summary\n' >"$WORK_DIR/2025-01_report.txt"
|
||||
|
||||
PREVIEW_LOG="$(mktemp)"
|
||||
SCOPE_LOG="$(mktemp)"
|
||||
APPLY_LOG="$(mktemp)"
|
||||
UNDO_LOG="$(mktemp)"
|
||||
|
||||
run_cli() {
|
||||
local log="$1"
|
||||
shift
|
||||
"${BIN[@]}" "$ROOT_DIR/main.go" "$@" >"$log"
|
||||
cat "$log"
|
||||
}
|
||||
|
||||
echo "Quickstart #1: Preview captured group substitution (--dry-run)."
|
||||
run_cli "$PREVIEW_LOG" regex '^(\\d{4})-(\\d{2})_(.*)$' 'Q@2-@1_@3' --dry-run --path "$WORK_DIR"
|
||||
if ! grep -q 'Q01-2025_report.txt' "$PREVIEW_LOG"; then
|
||||
echo "Expected preview rename for 2025-01_report.txt missing." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Quickstart #2: Scope-limited preview with extensions and directories."
|
||||
run_cli "$SCOPE_LOG" regex '^(build)_(\\d+)_v(.*)$' 'release-@2-@1-v@3' --dry-run --path "$WORK_DIR/artifacts" --extensions '.zip|.tar.gz' --include-dirs
|
||||
if ! grep -q 'release-101-build-vrelease.tar.gz' "$SCOPE_LOG"; then
|
||||
echo "Expected scoped preview for build artifacts missing." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Quickstart #3: Apply regex rename non-interactively (--yes)."
|
||||
run_cli "$APPLY_LOG" regex '^(feature)-(.*)$' '@2-@1' --yes --path "$WORK_DIR"
|
||||
if ! [[ -f "$WORK_DIR/demo_2025-10-01-feature.txt" ]]; then
|
||||
echo "Applied rename did not produce demo_2025-10-01-feature.txt." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Quickstart #4: Undo the latest regex batch."
|
||||
run_cli "$UNDO_LOG" undo --path "$WORK_DIR"
|
||||
if ! [[ -f "$WORK_DIR/feature-demo_2025-10-01.txt" ]]; then
|
||||
echo "Undo did not restore feature-demo_2025-10-01.txt." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Regex smoke test completed successfully."
|
||||
Reference in New Issue
Block a user