Skip to content

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 31 May 19:31
· 121 commits to master since this release
9179238
  • Added support for a [shared] top-level config table that maps named keys to glob lists. Commands can reference these keys via shared-include and shared-exclude fields to avoid duplicating long lists across commands. GH #73.
  • Added python, typescript, and ruby components to precious config init and to the examples directory. GH #95.
  • When all paths passed on the command line are excluded, precious now exits with a clearer error message. In addition, it has different errors for when all paths given on the CLI are ignored versus when --all is specified but all the paths it can find are excluded. Both exit with an error status.
  • Fixed a bug where bare directory names in exclude patterns (e.g., target) did not exclude files inside that directory. Now exclude = ["target"] works exactly like a .gitignore entry — it excludes the directory and all of its contents. Previously you had to write target/**/* to get this behavior; that form still works and is equivalent.
  • Precious now fails fast with a clear error when it encounters a file path that is not valid UTF-8, instead of silently doing a lossy conversion. Previously non-UTF-8 paths were corrupted at the git ls-files decode step and at subprocess-argument construction. The error message includes both a human-readable lossy approximation and the exact raw bytes of the path. Switching the internal git ls-files/git diff invocations to -z also fixes handling of valid non-ASCII names like café.txt that git would otherwise C-quote.
  • Reduced filesystem syscalls when finding files. In git modes and --all mode, precious previously canonicalized every file path individually. Now the relevant root directory (project root, git root, or walk root) is canonicalized once and per-file relative paths are computed via path arithmetic. No user-visible behavior change.
  • The invoke.per-file-or-once, invoke.per-file-or-dir and invoke.per-dir-or-once configurations are no longer considered experimental.