Skip to content

docs: document tab completion and bring the README up to date - #11

Merged
iamteedoh merged 1 commit into
mainfrom
DIR-5-readme-v0.3.0
Jul 17, 2026
Merged

docs: document tab completion and bring the README up to date#11
iamteedoh merged 1 commit into
mainfrom
DIR-5-readme-v0.3.0

Conversation

@iamteedoh

Copy link
Copy Markdown
Owner

What does this PR do?

Three releases of behavior landed (#7, #9, #10) and parts of the README still described the tool as it was before. This audits the whole file against what v0.3.0 actually does.

Documents tab completion

The prompt has completed paths ever since readline arrived alongside the arrow-key history, and nothing said so — which means nobody would ever try it. Adds a keys table under Interactive: Tab, /, Ctrl-A/E/W/U/R, q.

The table records what was verified over a pty, not what readline is assumed to do. Two claims were corrected during testing:

  • An earlier draft said "press Tab twice to list the candidates". That is false for read -e — it fills the common prefix and beeps without listing. Re-tested on a 120×40 pty in case readline was suppressing the list on a 0×0 terminal; it was not.
  • The session's history never touches your shell history (HISTFILE is cleared), so that is now stated rather than left to guesswork.

Corrects what had gone stale

Was Now
Overview: prompts "for the input file and the permission to check" a session taking a path or a list file, looping until q
Feature bullet advertising owner rwx | group r-x | other r-- that format no longer exists — replaced with the Mode column
"Interactive prompts guide the user to select the input file" predated --path
"prompts for the rest when a terminal is attached" had drifted under the Paths vs. lists heading during earlier edits, reading as though it were about disambiguation — moved back
Prerequisites now name the Bash 3.2 floor (what macOS ships), the tty the session needs, and that getent/dscl are only for another user's ~
Installation: "save the script content to a file" predated the repo having releases — clone or download the release

Adds an Exit codes section

The README recommends the tool for cron and CI but never documented that a denied permission exits 0 — only usage errors exit 2. Anyone writing dirPathPerms.sh … || alert would get silence forever. Now documented, with a grep-based recipe for acting on the result.

Related issue

DIR-5

Validation

Documentation-only, so the value is in whether the claims are true. Every runnable claim was executed rather than eyeballed:

  • All 16 documented flags exercised (-P, --path, -f, --file, -w × 4, -p × 5, -a/--all, --no-color, -h, -V, positional, repeatable -P) — all pass.
  • Exit codes verified against the new table: denied → 0; missing list file, unknown option, --file+--path, and no-tty-no-path → 2.
  • The CI recipe was run: it fires on a group-writable directory and stays silent when nothing matches.
  • Tab completion driven over a pty for /etc/pass, /var/lo, ~/Doc.
  • All README internal anchors resolve.
  • Repo gate unchanged and green: shellcheck, bash -n, 47/47 tests, gitleaks.

Notes for review

Two things deliberately not done here:

  • Symlink caveat. Verifying a README example surfaced a real bug — /tmp reports the symlink's mode (lrwxr-xr-x) instead of the target's (drwxrwxrwt), so the tool answers "not group-writable" when it is. Raised as DIR-6. Documenting it as a caveat would enshrine a bug that should be fixed instead; say the word if you'd rather ship the caveat.
  • The hero image in assets/ still shows v0.1.0 and the old File path: prompt — the exact UX feat: check paths directly, with tilde/variable expansion and prompt history #7 removed. It needs re-capturing from a real terminal; there is no terminal-to-image tooling available to regenerate it here.

docs: — README-only, so release-please will not bump the version for it.

Checklist

  • git ls-files '*.sh' | xargs shellcheck passes
  • git ls-files '*.sh' | xargs -n1 bash -n passes
  • gitleaks reports no secrets in Git history
  • Scripts and programs include a GPL-3.0-or-later SPDX header
  • No secrets, tokens, credentials, or private infrastructure details are committed
  • Documentation is updated for user-visible or operational changes
  • The PR title follows Conventional Commits

Three releases of behavior landed and parts of the README still described the
tool as it was before. Audit the whole file against what it actually does.

Document tab completion. The prompt has completed paths since readline arrived
alongside the arrow-key history, and nothing said so, which means nobody would
ever try it. The keys table records what was verified over a pty rather than
what readline is assumed to do: completion fills the common prefix and beeps on
an ambiguity without listing the candidates, which is where `read -e` differs
from an interactive shell.

Correct what had gone stale: the Overview still described prompting for an
input file rather than a session; a feature bullet still advertised the
`owner rwx | group r-x | other r--` string that the table replaced; the
"prompts for the rest" paragraph had drifted under the "Paths vs. lists"
heading during earlier edits; Prerequisites named neither the Bash 3.2 floor
nor the tty the session needs; Installation predated the repository having
releases.

Document exit codes. The README recommends the tool for cron and CI without
saying that a denied permission exits 0 and only a usage error exits 2, so
`dirPathPerms.sh ... || alert` never fires. Say so, and show a recipe that
reads the output instead.
@iamteedoh
iamteedoh merged commit 219ebea into main Jul 17, 2026
3 checks passed
@iamteedoh
iamteedoh deleted the DIR-5-readme-v0.3.0 branch July 17, 2026 01:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant