feat(cmd): add unified diff output option for formatting
* Implemented `-d`/`--diff` flag to print unified diffs. * Added `unifiedDiff` function for generating diffs. * Config discovery now merges fields from `.pgtidy.yaml`.
This commit is contained in:
+7
-3
@@ -69,8 +69,10 @@ Legend: ✅ done · 🚧 in progress · ⬜ not started
|
||||
- **Status:** all tests pass; idempotence verified.
|
||||
|
||||
### ✅ Printer + style config — `pkg/format`, `pkg/config`
|
||||
- `pkg/config`: `Style` struct + `Default()` = house style (UPPERCASE keywords, lowercase
|
||||
types, 2-space indent, leading commas, spacing rules).
|
||||
- `pkg/config`: `Style` struct + `Default()` = house style. `Load(startDir)` walks up the
|
||||
directory tree to find `.pgtidy.yaml` and merges its fields over the defaults.
|
||||
Supported keys: `indent`, `newline`, `keyword_case`, `ident_case`, `type_case`, `commas`.
|
||||
Dependency: `gopkg.in/yaml.v3`.
|
||||
- `pkg/format`: formats CREATE FUNCTION/PROCEDURE **headers** to house style (params
|
||||
one-per-line leading-comma, option clauses each on own line, AS/`$$` own lines); DECLARE
|
||||
section formatted (see body parser entry); `Raw` statements emitted verbatim.
|
||||
@@ -85,7 +87,9 @@ Legend: ✅ done · 🚧 in progress · ⬜ not started
|
||||
|
||||
### ✅ CLI `fmt` + safety harness — `cmd/pgtidy`
|
||||
- `pgtidy fmt` (gofmt model): default stdin→stdout; `-w`/`--write`, `-l`/`--list`,
|
||||
`--check` (CI exit codes); `version`/`help`. _`.pgtidy.yaml` discovery + `-d` diff: TODO._
|
||||
`--check` (CI exit codes); `-d`/`--diff` (unified diff output); `version`/`help`.
|
||||
- Config discovery: walks up from cwd to find `.pgtidy.yaml`; applied before formatting.
|
||||
- `diff.go`: in-house unified diff (LCS-based, zero additional deps).
|
||||
- `fmt_test.go`: stdin, --check (un/formatted), -w idempotence, unknown-command.
|
||||
- Safety invariants #2 (semantic equivalence), #3 (idempotence), #4 (graceful degradation)
|
||||
are tested in `pkg/format` over the corpus.
|
||||
|
||||
Reference in New Issue
Block a user