diff --git a/.mise/tasks/deobfuscate b/.mise/tasks/deobfuscate index b7a1273..a112805 100755 --- a/.mise/tasks/deobfuscate +++ b/.mise/tasks/deobfuscate @@ -28,6 +28,10 @@ if [ -n "${usage_files:-}" ]; then arg="${arg#"${notes_dir}/"}" # Skip empty variadic defaults after xargs unquotes "''". [ -z "$arg" ] && continue + # Match basename's handling of trailing slashes without spawning it. + while [ -n "$arg" ] && [ "${arg%/}" != "$arg" ]; do + arg="${arg%/}" + done arg="${arg##*/}" ARGS+=("$arg") done < <(printf '%s' "${usage_files}" | xargs printf '%s\n') diff --git a/README.md b/README.md index 2276a2f..12a4224 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **Collective memory, encrypted.** -[![tests: 422](https://img.shields.io/badge/tests-422-brightgreen?style=flat)](test/) +[![tests: 423](https://img.shields.io/badge/tests-423-brightgreen?style=flat)](test/) ![lints: 8](https://img.shields.io/badge/lints-8-blue?style=flat) [![license: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat)](LICENSE) diff --git a/test/deobfuscate.bats b/test/deobfuscate.bats index 3b13287..e5b5c75 100644 --- a/test/deobfuscate.bats +++ b/test/deobfuscate.bats @@ -239,6 +239,21 @@ BASH } +@test "scoped deobfuscate keeps a trailing-slash path scoped" { + notes obfuscate + + local alpha_id beta_id + alpha_id=$(grep 'alpha.md' "$NOTES_CALLER_PWD/notes/.manifest" | cut -f1) + beta_id=$(grep 'beta.md' "$NOTES_CALLER_PWD/notes/.manifest" | cut -f1) + + notes deobfuscate "notes/$alpha_id/" + + [ -f "$NOTES_CALLER_PWD/notes/alpha.md" ] + [ -f "$NOTES_CALLER_PWD/notes/$beta_id" ] + [ ! -f "$NOTES_CALLER_PWD/notes/beta.md" ] +} + + @test "deobfuscate with args warns on unknown ID" { notes obfuscate