@contino/tally-windows-x64 0.1.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -33
- package/bin/tally.exe +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,16 +1,52 @@
|
|
|
1
1
|
# tally
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://codecov.io/gh/tinovyatkin/tally)
|
|
4
|
+
|
|
5
|
+
tally keeps Dockerfiles and Containerfiles clean, modern, and consistent — using BuildKit's own parser and checks (the same foundation behind
|
|
6
|
+
`docker buildx`) plus safe auto-fixes. It runs fast, doesn't require Docker Desktop or a daemon, and fits neatly into CI. If that sounds like your
|
|
7
|
+
workflow, try `tally check .`.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Lint everything in the repo (recursive)
|
|
11
|
+
tally check .
|
|
12
|
+
|
|
13
|
+
# Apply all safe fixes automatically
|
|
14
|
+
tally check --fix Dockerfile
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Why tally?
|
|
18
|
+
|
|
19
|
+
Dockerfile linting usually means picking a compromise:
|
|
20
|
+
|
|
21
|
+
- **Hadolint** is popular and battle-tested, but it uses its own Dockerfile parser, so support for newer BuildKit features can lag behind. It also
|
|
22
|
+
is commonly consumed as a prebuilt binary, and it focuses on reporting — not fixing.
|
|
23
|
+
- **`docker buildx --check`** runs Docker's official BuildKit checks, but it requires the Docker/buildx toolchain and can be heavier than a pure
|
|
24
|
+
static linter (and not always available if you're using Podman/Finch/other runtimes).
|
|
25
|
+
|
|
26
|
+
tally exists to bring modern linter ergonomics to container builds:
|
|
27
|
+
|
|
28
|
+
- **BuildKit-native parsing**: understands modern syntax like heredocs, `RUN --mount=...`, and `ADD --checksum=...`.
|
|
29
|
+
- **Fixes, not just findings**: applies safe, mechanical fixes automatically (`--fix`), with per-rule control when you need it.
|
|
30
|
+
- **Easy to install anywhere**: available via Homebrew, Go, npm, pip, and RubyGems — so it can flow through your existing artifact mirrors.
|
|
31
|
+
- **Container ecosystem friendly**: supports Dockerfile/Containerfile conventions and `.dockerignore`/`.containerignore`.
|
|
32
|
+
- **A growing ruleset**: combines official BuildKit checks, Hadolint-compatible rules, and tally-specific rules.
|
|
33
|
+
|
|
34
|
+
Roadmap: editor integrations (VS Code, Zed), more auto-fixes, and higher-level rules (cache & tmpfs mount recommendations, tooling-aware checks for
|
|
35
|
+
uv/bun, line-length and layer optimizations).
|
|
4
36
|
|
|
5
37
|
## Supported Rules
|
|
6
38
|
|
|
7
39
|
tally integrates rules from multiple sources:
|
|
8
40
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
| **[
|
|
41
|
+
<!-- BEGIN RULES_TABLE -->
|
|
42
|
+
|
|
43
|
+
| Source | Rules | Description |
|
|
44
|
+
| --------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------- |
|
|
45
|
+
| **[BuildKit](https://docs.docker.com/reference/build-checks/)** | 22 rules | Docker's official Dockerfile checks (automatically captured) |
|
|
46
|
+
| **tally** | 3 rules | Custom rules including secret detection with [gitleaks](https://github.com/gitleaks/gitleaks) |
|
|
47
|
+
| **[Hadolint](https://github.com/hadolint/hadolint)** | 22 rules | Hadolint-compatible Dockerfile rules (expanding) |
|
|
48
|
+
|
|
49
|
+
<!-- END RULES_TABLE -->
|
|
14
50
|
|
|
15
51
|
**See [RULES.md](RULES.md) for the complete rules reference.**
|
|
16
52
|
|
|
@@ -25,7 +61,7 @@ brew install tinovyatkin/tap/tally
|
|
|
25
61
|
### NPM
|
|
26
62
|
|
|
27
63
|
```bash
|
|
28
|
-
npm install -g
|
|
64
|
+
npm install -g tally-cli
|
|
29
65
|
```
|
|
30
66
|
|
|
31
67
|
### PyPI
|
|
@@ -286,21 +322,21 @@ Configuration sources are applied in this order (highest priority first):
|
|
|
286
322
|
|
|
287
323
|
### Environment Variables
|
|
288
324
|
|
|
289
|
-
| Variable | Description
|
|
290
|
-
| ---------------------------------------- |
|
|
325
|
+
| Variable | Description |
|
|
326
|
+
| ---------------------------------------- | --------------------------------------------------------------------- |
|
|
291
327
|
| `TALLY_OUTPUT_FORMAT` | Output format (`text`, `json`, `sarif`, `github-actions`, `markdown`) |
|
|
292
|
-
| `TALLY_OUTPUT_PATH` | Output destination (`stdout`, `stderr`, or file path)
|
|
293
|
-
| `TALLY_OUTPUT_SHOW_SOURCE` | Show source snippets (`true`/`false`)
|
|
294
|
-
| `TALLY_OUTPUT_FAIL_LEVEL` | Minimum severity for non-zero exit
|
|
295
|
-
| `NO_COLOR` | Disable colored output (standard env var)
|
|
296
|
-
| `TALLY_EXCLUDE` | Glob pattern(s) to exclude files (comma-separated)
|
|
297
|
-
| `TALLY_CONTEXT` | Build context directory for context-aware rules
|
|
298
|
-
| `TALLY_RULES_MAX_LINES_MAX` | Maximum lines allowed
|
|
299
|
-
| `TALLY_RULES_MAX_LINES_SKIP_BLANK_LINES` | Exclude blank lines (`true`/`false`)
|
|
300
|
-
| `TALLY_RULES_MAX_LINES_SKIP_COMMENTS` | Exclude comments (`true`/`false`)
|
|
301
|
-
| `TALLY_NO_INLINE_DIRECTIVES` | Disable inline directive processing (`true`/`false`)
|
|
302
|
-
| `TALLY_INLINE_DIRECTIVES_WARN_UNUSED` | Warn about unused directives (`true`/`false`)
|
|
303
|
-
| `TALLY_INLINE_DIRECTIVES_REQUIRE_REASON` | Require reason= on ignore directives (`true`/`false`)
|
|
328
|
+
| `TALLY_OUTPUT_PATH` | Output destination (`stdout`, `stderr`, or file path) |
|
|
329
|
+
| `TALLY_OUTPUT_SHOW_SOURCE` | Show source snippets (`true`/`false`) |
|
|
330
|
+
| `TALLY_OUTPUT_FAIL_LEVEL` | Minimum severity for non-zero exit |
|
|
331
|
+
| `NO_COLOR` | Disable colored output (standard env var) |
|
|
332
|
+
| `TALLY_EXCLUDE` | Glob pattern(s) to exclude files (comma-separated) |
|
|
333
|
+
| `TALLY_CONTEXT` | Build context directory for context-aware rules |
|
|
334
|
+
| `TALLY_RULES_MAX_LINES_MAX` | Maximum lines allowed |
|
|
335
|
+
| `TALLY_RULES_MAX_LINES_SKIP_BLANK_LINES` | Exclude blank lines (`true`/`false`) |
|
|
336
|
+
| `TALLY_RULES_MAX_LINES_SKIP_COMMENTS` | Exclude comments (`true`/`false`) |
|
|
337
|
+
| `TALLY_NO_INLINE_DIRECTIVES` | Disable inline directive processing (`true`/`false`) |
|
|
338
|
+
| `TALLY_INLINE_DIRECTIVES_WARN_UNUSED` | Warn about unused directives (`true`/`false`) |
|
|
339
|
+
| `TALLY_INLINE_DIRECTIVES_REQUIRE_REASON` | Require reason= on ignore directives (`true`/`false`) |
|
|
304
340
|
|
|
305
341
|
### CLI Flags
|
|
306
342
|
|
|
@@ -348,6 +384,7 @@ tally check --format json Dockerfile
|
|
|
348
384
|
```
|
|
349
385
|
|
|
350
386
|
The JSON output includes:
|
|
387
|
+
|
|
351
388
|
- `files`: Array of files with their violations
|
|
352
389
|
- `summary`: Aggregate statistics (total, errors, warnings, etc.)
|
|
353
390
|
- `files_scanned`: Total number of files scanned
|
|
@@ -364,7 +401,7 @@ The JSON output includes:
|
|
|
364
401
|
"file": "Dockerfile",
|
|
365
402
|
"start": { "line": 2, "column": 0 }
|
|
366
403
|
},
|
|
367
|
-
"rule": "StageNameCasing",
|
|
404
|
+
"rule": "buildkit/StageNameCasing",
|
|
368
405
|
"message": "Stage name 'Builder' should be lowercase",
|
|
369
406
|
"severity": "warning",
|
|
370
407
|
"docUrl": "https://docs.docker.com/go/dockerfile/rule/stage-name-casing/"
|
|
@@ -381,7 +418,7 @@ The JSON output includes:
|
|
|
381
418
|
"files": 1
|
|
382
419
|
},
|
|
383
420
|
"files_scanned": 1,
|
|
384
|
-
"rules_enabled":
|
|
421
|
+
"rules_enabled": 35
|
|
385
422
|
}
|
|
386
423
|
```
|
|
387
424
|
|
|
@@ -416,10 +453,10 @@ tally check --format markdown Dockerfile
|
|
|
416
453
|
```markdown
|
|
417
454
|
**2 issues** in `Dockerfile`
|
|
418
455
|
|
|
419
|
-
| Line | Issue
|
|
420
|
-
|
|
421
|
-
| 10
|
|
422
|
-
| 2
|
|
456
|
+
| Line | Issue |
|
|
457
|
+
| ---- | ------------------------------------------- |
|
|
458
|
+
| 10 | ❌ Use absolute WORKDIR |
|
|
459
|
+
| 2 | ⚠️ Stage name 'Builder' should be lowercase |
|
|
423
460
|
```
|
|
424
461
|
|
|
425
462
|
Features:
|
|
@@ -432,13 +469,13 @@ Features:
|
|
|
432
469
|
|
|
433
470
|
### Output Options
|
|
434
471
|
|
|
435
|
-
| Flag | Description
|
|
436
|
-
| --------------- |
|
|
472
|
+
| Flag | Description |
|
|
473
|
+
| --------------- | -------------------------------------------------------------------- |
|
|
437
474
|
| `--format, -f` | Output format: `text`, `json`, `sarif`, `github-actions`, `markdown` |
|
|
438
|
-
| `--output, -o` | Output destination: `stdout`, `stderr`, or file path
|
|
439
|
-
| `--no-color` | Disable colored output (also respects `NO_COLOR` env var)
|
|
440
|
-
| `--show-source` | Show source code snippets (default: true)
|
|
441
|
-
| `--hide-source` | Hide source code snippets
|
|
475
|
+
| `--output, -o` | Output destination: `stdout`, `stderr`, or file path |
|
|
476
|
+
| `--no-color` | Disable colored output (also respects `NO_COLOR` env var) |
|
|
477
|
+
| `--show-source` | Show source code snippets (default: true) |
|
|
478
|
+
| `--hide-source` | Hide source code snippets |
|
|
442
479
|
|
|
443
480
|
### Exit Codes
|
|
444
481
|
|
package/bin/tally.exe
CHANGED
|
Binary file
|