Format Markdown with prettier in make fmt and fmt-check (closes #23)
check / check (push) Successful in 2m43s
check / check (push) Successful in 2m43s
`make fmt` now runs prettier over the Markdown files after the Go formatters, and `make fmt-check` fails when prettier would change one. `package.json`, `yarn.lock`, `.prettierrc` and `.prettierignore` are the `sneak/prompts` copies at `dd4027b`, except for `"private": true` in `package.json` in place of the licence field. Both scripts find yarn the way that repo's scripts do. `script/bootstrap` installs prettier with `yarn install --frozen-lockfile`. When the yarn those scripts would run is not 1.22.22, it installs yarn through corepack under node 22.17.0: the node on `PATH` if it has that version, otherwise one installed through nvm from a hash-checked archive. `README.md` and `TODO.md` are reformatted once. Model: opus-5-5
This commit is contained in:
@@ -1,85 +1,83 @@
|
||||
# Workflow
|
||||
|
||||
* branch (from `main`)
|
||||
* do the work in Next Step
|
||||
* move Next Step to the top of Completed Steps
|
||||
* move the top item of Future Steps into Next Step
|
||||
* commit (`TODO.md` changes in the same commit as the work)
|
||||
* merge to `main` if the branch is not protected, otherwise open a PR
|
||||
* push
|
||||
- branch (from `main`)
|
||||
- do the work in Next Step
|
||||
- move Next Step to the top of Completed Steps
|
||||
- move the top item of Future Steps into Next Step
|
||||
- commit (`TODO.md` changes in the same commit as the work)
|
||||
- merge to `main` if the branch is not protected, otherwise open a PR
|
||||
- push
|
||||
|
||||
# Status
|
||||
|
||||
1.0+
|
||||
|
||||
Tagged 1.0.0 (2025-05-08). Substantial correctness fixes and features
|
||||
have landed since the tag.
|
||||
Tagged 1.0.0 (2025-05-08). Substantial correctness fixes and features have
|
||||
landed since the tag.
|
||||
|
||||
# Next Step
|
||||
|
||||
Restructure README.md into the standard sections: Description, Getting
|
||||
Started, Entrypoints, Rationale, Design, TODO, License, Author (Getting
|
||||
Started, Why?, TODO, License exist; Description, Entrypoints, Design,
|
||||
Author are missing)
|
||||
Restructure README.md into the standard sections: Description, Getting Started,
|
||||
Entrypoints, Rationale, Design, TODO, License, Author (Getting Started, Why?,
|
||||
TODO, License exist; Description, Entrypoints, Design, Author are missing)
|
||||
|
||||
# Completed Steps
|
||||
|
||||
* 2026-10-06: `script/fmt-check` checks what `script/fmt` writes: it
|
||||
fails and lists the files when `gofmt -s` or goimports would change
|
||||
one, so a file that passes `make check` no longer changes on the
|
||||
next `make fmt`
|
||||
* 2026-10-06: canonical files re-vendored from `sneak/prompts` at
|
||||
`dd4027b`: `REPO_POLICIES.md` and `.editorconfig` added;
|
||||
`.dockerignore`, `.gitignore`, `.golangci.yml` and the workflow
|
||||
refreshed, keeping this repo's own entries and `fetch-depth: 0`;
|
||||
the lint phase runs golangci-lint v2.14.0; `script/bootstrap`
|
||||
installs goimports unless the installed one has the pinned version,
|
||||
and it and `script/fmt` put Go's bin directory on `PATH`
|
||||
* 2026-10-06: the summary line after `sum`, `check` and `clear` prints
|
||||
the byte unit once (`1.5 KiB`, not `1.5 KiB bytes`)
|
||||
* 2026-10-06: a path that `--exclude` or `--exclude-dotfiles` excludes
|
||||
is skipped even when it cannot be read, so an excluded directory
|
||||
that cannot be listed no longer fails the run
|
||||
* 2026-10-06: lint and test run as phases of the `Dockerfile`, and the
|
||||
build stage depends on both; `script/lint` and `script/test` each
|
||||
build their phase with `--no-cache`; `script/cibuild` bootstraps,
|
||||
runs `script/check`, then builds the image; golangci-lint is no
|
||||
longer installed on the host
|
||||
* 2026-10-06: `check --continue` keeps going past a file or directory
|
||||
it cannot read: it counts it as failed, prints the error and the
|
||||
path on stderr, and checks the rest of the tree
|
||||
* 2026-10-05: golangci-lint settings take effect: canonical
|
||||
`.golangci.yml` (v2 layout, settings under `linters.settings`),
|
||||
golangci-lint pinned at v2.12.2 in `Dockerfile` and
|
||||
`script/bootstrap`, and the code fixed for what the settings now
|
||||
report (long lines in `attrsum.go` rewrapped)
|
||||
* 2026-10-05: `make try` runs on three small files in a temporary
|
||||
directory that it removes afterwards, also when a step fails,
|
||||
instead of on a fixed directory on one person's machine
|
||||
* 2026-10-02: `attrsum --version` reports the git tag or short commit,
|
||||
stamped by `make build` and by a plain `docker build .` of a clone;
|
||||
`.dockerignore` sends `.git` without `.git/config` and keeps a
|
||||
host-built `attrsum` out; CI checks out full history so it stamps
|
||||
the same version
|
||||
* 2026-02-02: correctness pass: track actual bytes read instead of
|
||||
stale file size, atomic failure tracking in ProcessCheck, detect
|
||||
file modification during checksum (TOCTOU), propagate countFiles
|
||||
errors, single progress bar across paths, error on empty stdin,
|
||||
dead code removal
|
||||
* 2026-02-01: added quiet mode, progress bar, summary report, and stdin
|
||||
path input; multiple file/directory arguments for all commands
|
||||
* 2025-07-12: README update
|
||||
* 2025-05-08: initial working tool with passing tests, skips
|
||||
non-regular files, Makefile, README; tagged 1.0.0
|
||||
- 2026-10-06: `make fmt` formats the Markdown files with prettier (four-space
|
||||
indents, `proseWrap: always`) and `make fmt-check` fails on one it would
|
||||
change; prettier is pinned in `package.json` and `yarn.lock`, and
|
||||
`script/bootstrap` installs it, along with the pinned node and yarn when the
|
||||
yarn on hand is not the pinned version; the Markdown files reformatted once
|
||||
- 2026-10-06: `script/fmt-check` checks what `script/fmt` writes: it fails and
|
||||
lists the files when `gofmt -s` or goimports would change one, so a file that
|
||||
passes `make check` no longer changes on the next `make fmt`
|
||||
- 2026-10-06: canonical files re-vendored from `sneak/prompts` at `dd4027b`:
|
||||
`REPO_POLICIES.md` and `.editorconfig` added; `.dockerignore`, `.gitignore`,
|
||||
`.golangci.yml` and the workflow refreshed, keeping this repo's own entries
|
||||
and `fetch-depth: 0`; the lint phase runs golangci-lint v2.14.0;
|
||||
`script/bootstrap` installs goimports unless the installed one has the pinned
|
||||
version, and it and `script/fmt` put Go's bin directory on `PATH`
|
||||
- 2026-10-06: the summary line after `sum`, `check` and `clear` prints the byte
|
||||
unit once (`1.5 KiB`, not `1.5 KiB bytes`)
|
||||
- 2026-10-06: a path that `--exclude` or `--exclude-dotfiles` excludes is
|
||||
skipped even when it cannot be read, so an excluded directory that cannot be
|
||||
listed no longer fails the run
|
||||
- 2026-10-06: lint and test run as phases of the `Dockerfile`, and the build
|
||||
stage depends on both; `script/lint` and `script/test` each build their phase
|
||||
with `--no-cache`; `script/cibuild` bootstraps, runs `script/check`, then
|
||||
builds the image; golangci-lint is no longer installed on the host
|
||||
- 2026-10-06: `check --continue` keeps going past a file or directory it cannot
|
||||
read: it counts it as failed, prints the error and the path on stderr, and
|
||||
checks the rest of the tree
|
||||
- 2026-10-05: golangci-lint settings take effect: canonical `.golangci.yml` (v2
|
||||
layout, settings under `linters.settings`), golangci-lint pinned at v2.12.2 in
|
||||
`Dockerfile` and `script/bootstrap`, and the code fixed for what the settings
|
||||
now report (long lines in `attrsum.go` rewrapped)
|
||||
- 2026-10-05: `make try` runs on three small files in a temporary directory that
|
||||
it removes afterwards, also when a step fails, instead of on a fixed directory
|
||||
on one person's machine
|
||||
- 2026-10-02: `attrsum --version` reports the git tag or short commit, stamped
|
||||
by `make build` and by a plain `docker build .` of a clone; `.dockerignore`
|
||||
sends `.git` without `.git/config` and keeps a host-built `attrsum` out; CI
|
||||
checks out full history so it stamps the same version
|
||||
- 2026-02-02: correctness pass: track actual bytes read instead of stale file
|
||||
size, atomic failure tracking in ProcessCheck, detect file modification during
|
||||
checksum (TOCTOU), propagate countFiles errors, single progress bar across
|
||||
paths, error on empty stdin, dead code removal
|
||||
- 2026-02-01: added quiet mode, progress bar, summary report, and stdin path
|
||||
input; multiple file/directory arguments for all commands
|
||||
- 2025-07-12: README update
|
||||
- 2025-05-08: initial working tool with passing tests, skips non-regular files,
|
||||
Makefile, README; tagged 1.0.0
|
||||
|
||||
# Future Steps
|
||||
|
||||
* Add a `LICENSE` file matching the README's WTFPL v2; sneak's to add,
|
||||
not an agent's
|
||||
* Tag a patch release to ship the 2026-02-02 correctness fixes
|
||||
* Dry-run mode (--dry-run, -n): show what would be done without making
|
||||
changes (from README TODO)
|
||||
* JSON output (--json) for scripting and integration (from README TODO)
|
||||
* Parallel processing (-j N) with multiple goroutines for faster
|
||||
checksumming on large trees (from README TODO)
|
||||
* Formalize and document exit codes for scripting (from README TODO)
|
||||
- Add a `LICENSE` file matching the README's WTFPL v2; sneak's to add, not an
|
||||
agent's
|
||||
- Tag a patch release to ship the 2026-02-02 correctness fixes
|
||||
- Dry-run mode (--dry-run, -n): show what would be done without making changes
|
||||
(from README TODO)
|
||||
- JSON output (--json) for scripting and integration (from README TODO)
|
||||
- Parallel processing (-j N) with multiple goroutines for faster checksumming on
|
||||
large trees (from README TODO)
|
||||
- Formalize and document exit codes for scripting (from README TODO)
|
||||
|
||||
Reference in New Issue
Block a user