strictcli 0.8.4__tar.gz → 0.8.5__tar.gz
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.
- strictcli-0.8.5/.rlsbl/changes/.validated +1 -0
- strictcli-0.8.5/.rlsbl/changes/0.8.5.jsonl +7 -0
- strictcli-0.8.5/.rlsbl/changes/0.8.5.md +9 -0
- strictcli-0.8.5/.rlsbl/releases/unreleased.toml +0 -0
- strictcli-0.8.5/.rlsbl/releases/v0.8.5.toml +3 -0
- strictcli-0.8.5/.rlsbl/version +1 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/CHANGELOG.md +10 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/PKG-INFO +1 -1
- {strictcli-0.8.4 → strictcli-0.8.5}/package-lock.json +2 -2
- {strictcli-0.8.4 → strictcli-0.8.5}/package.json +1 -1
- {strictcli-0.8.4 → strictcli-0.8.5}/pyproject.toml +1 -1
- {strictcli-0.8.4 → strictcli-0.8.5}/strictcli/__init__.py +30 -11
- {strictcli-0.8.4 → strictcli-0.8.5}/uv.lock +1 -1
- strictcli-0.8.4/.rlsbl/changes/.validated +0 -1
- strictcli-0.8.4/.rlsbl/version +0 -1
- {strictcli-0.8.4 → strictcli-0.8.5}/.claude/settings.json +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.github/workflows/ci.yml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.github/workflows/publish.yml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.gitignore +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.claude/settings.json +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.github/workflows/ci.yml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.github/workflows/publish.yml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.gitignore +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.rlsbl/lint/go.toml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/CHANGELOG.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/CLAUDE.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/bases/LICENSE +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.4.0.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.4.0.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.4.1.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.4.1.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.5.0.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.5.0.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.6.0.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.6.0.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.6.1.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.6.1.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.7.0.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.7.0.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.7.1.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.7.1.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.0.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.0.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.1.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.1.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.2.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.2.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.3.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.3.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.4.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/0.8.4.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/changes/unreleased.jsonl +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/config.json +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/hashes.json +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/lint/go.toml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/CLAUDE.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/LICENSE +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/README.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/index.js +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/postinstall.js +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_arg_default.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_auto_version.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_check_command.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_check_discovery.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_check_runner.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_check_schema.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_check_types.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_choices.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_config.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_deep_nesting.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_dependencies.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_deprecated.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_dump_schema.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_e2e.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_env.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_exit_codes.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_float_type.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_global_flags.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_help.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_int_type.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_mutex.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_nesting.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_parser.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_passthrough.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_registration.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_repeatable.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_tagdsl.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_tags.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_toml_loading.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_validate.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/tests/test_variadic.py +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/todo/.defer/deferred.md +0 -0
- {strictcli-0.8.4 → strictcli-0.8.5}/todo/.done/original-idea.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fd52271bcf11157ae4eb47ee9e63d6ed5d9000b9
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{"commits":["eef4bcb494b80009b2e471f2b1465af98aa476e3"],"user_facing":true,"description":"**Fix.** Auto-registered `check` command no longer collides with app-level global flags (e.g., `--dry-run`).","type":"fix"}
|
|
2
|
+
{"commits":["eef4bcb494b80009b2e471f2b1465af98aa476e3"],"user_facing":true,"description":"**New feature.** App-level and command-level help output now includes a 'Global flags' section.","type":"feature"}
|
|
3
|
+
{"commits":["88d7f9e747085d7b1237e39e7f45ccec34c7a3bf","8facbdd35c2b52023005a051d0417ff62878b940"],"user_facing":false}
|
|
4
|
+
{"commits":["00a96ace74f0ccadf55bd5cf6b820102ff504320"],"user_facing":false}
|
|
5
|
+
{"commits":["5df4af02759154eb4cbf3abb2a47950a02b7d3ec"],"user_facing":false}
|
|
6
|
+
{"commits":["b6f72994086bf8ed38dba1550cc1a977d12e988b"],"user_facing":false}
|
|
7
|
+
{"commits":["e2e9804dd8b20925b04bdf7dc7ffbe774d7982df"],"user_facing":false}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.39.0
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
## 0.8.5
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- **New feature.** App-level and command-level help output now includes a 'Global flags' section.
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
|
|
13
|
+
- **Fix.** Auto-registered `check` command no longer collides with app-level global flags (e.g., `--dry-run`).
|
|
14
|
+
|
|
5
15
|
## 0.8.4
|
|
6
16
|
|
|
7
17
|
### Fixes
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "strictcli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "strictcli",
|
|
9
|
-
"version": "0.8.
|
|
9
|
+
"version": "0.8.5",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT"
|
|
12
12
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
__version__ = "0.8.
|
|
5
|
+
__version__ = "0.8.5"
|
|
6
6
|
|
|
7
7
|
__all__ = [
|
|
8
8
|
"App", "Flag", "Arg", "Tag", "MutexGroup", "CoRequired", "Requires",
|
|
@@ -714,6 +714,20 @@ class App:
|
|
|
714
714
|
|
|
715
715
|
return exit_code
|
|
716
716
|
|
|
717
|
+
# Filter out extra flags that already exist as global flags to avoid
|
|
718
|
+
# collisions -- the handler receives global flag values automatically.
|
|
719
|
+
global_flag_names = {gf.name for gf in self._global_flags}
|
|
720
|
+
candidate_extra_flags = [
|
|
721
|
+
Flag(name="all", type=bool, help="Run all checks"),
|
|
722
|
+
Flag(name="tag", type=str, default="", help="Tag DSL expression to filter checks"),
|
|
723
|
+
Flag(name="name", type=str, default="", help="Glob pattern to filter by check name"),
|
|
724
|
+
Flag(name="list", type=bool, help="List all checks and their tags"),
|
|
725
|
+
Flag(name="json", type=bool, help="Output results as JSON"),
|
|
726
|
+
Flag(name="ignore-warnings", type=bool, help="Warn severity does not cause nonzero exit"),
|
|
727
|
+
Flag(name="verbose", type=bool, help="Show details for passing checks too"),
|
|
728
|
+
Flag(name="dry-run", type=bool, help="Show which checks would run without running them"),
|
|
729
|
+
]
|
|
730
|
+
extra_flags = [f for f in candidate_extra_flags if f.name not in global_flag_names]
|
|
717
731
|
check_cmd = _build_and_validate_command(
|
|
718
732
|
"check",
|
|
719
733
|
help="Run project checks",
|
|
@@ -725,16 +739,7 @@ class App:
|
|
|
725
739
|
env_prefix=self.env_prefix,
|
|
726
740
|
global_flags=self._global_flags,
|
|
727
741
|
passthrough=None,
|
|
728
|
-
extra_flags=
|
|
729
|
-
Flag(name="all", type=bool, help="Run all checks"),
|
|
730
|
-
Flag(name="tag", type=str, default="", help="Tag DSL expression to filter checks"),
|
|
731
|
-
Flag(name="name", type=str, default="", help="Glob pattern to filter by check name"),
|
|
732
|
-
Flag(name="list", type=bool, help="List all checks and their tags"),
|
|
733
|
-
Flag(name="json", type=bool, help="Output results as JSON"),
|
|
734
|
-
Flag(name="ignore-warnings", type=bool, help="Warn severity does not cause nonzero exit"),
|
|
735
|
-
Flag(name="verbose", type=bool, help="Show details for passing checks too"),
|
|
736
|
-
Flag(name="dry-run", type=bool, help="Show which checks would run without running them"),
|
|
737
|
-
],
|
|
742
|
+
extra_flags=extra_flags,
|
|
738
743
|
)
|
|
739
744
|
self._commands["check"] = check_cmd
|
|
740
745
|
|
|
@@ -2100,6 +2105,20 @@ def _format_app_help(app: App) -> str:
|
|
|
2100
2105
|
padding = max_len - len(name) + 4
|
|
2101
2106
|
lines.append(f" {name}{' ' * padding}{dep.message}")
|
|
2102
2107
|
|
|
2108
|
+
if app._global_flags:
|
|
2109
|
+
lines.append("")
|
|
2110
|
+
lines.append("Global flags:")
|
|
2111
|
+
flag_strs = []
|
|
2112
|
+
for f in app._global_flags:
|
|
2113
|
+
parts = [f"--{f.name}"]
|
|
2114
|
+
if f.short:
|
|
2115
|
+
parts.append(f"-{f.short}")
|
|
2116
|
+
flag_strs.append((", ".join(parts), f.help))
|
|
2117
|
+
max_flag_len = max(len(s[0]) for s in flag_strs)
|
|
2118
|
+
for flag_str, help_text in flag_strs:
|
|
2119
|
+
padding = max_flag_len - len(flag_str) + 4
|
|
2120
|
+
lines.append(f" {flag_str}{' ' * padding}{help_text}")
|
|
2121
|
+
|
|
2103
2122
|
lines.append("")
|
|
2104
2123
|
lines.append(f"Use '{app.name} <command> --help' for more information.")
|
|
2105
2124
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
33dcdaea5388ed23e7f3df7369bac01ae7a303e6
|
strictcli-0.8.4/.rlsbl/version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.38.2
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|