blockwatch-cli 0.16.5__tar.gz → 0.16.6__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.
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/AGENTS.md +1 -1
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/CHANGELOG.md +18 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/CLAUDE.md +1 -1
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/Cargo.lock +1 -1
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/Cargo.toml +1 -1
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/PKG-INFO +1 -1
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/README.md +5 -4
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/ci.md +2 -2
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/cli.md +3 -3
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/symbols.md +90 -19
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/setup.py +1 -1
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/mod.rs +11 -0
- blockwatch_cli-0.16.6/src/language_parsers/xml.rs +753 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/skill.md +22 -3
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/symbols/code.rs +8 -4
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/symbols/mod.rs +463 -95
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/symbol_references.rs +14 -0
- blockwatch_cli-0.16.6/tests/testdata/symbol_references/csproj_source.rs +3 -0
- blockwatch_cli-0.16.6/tests/testdata/symbol_references/csproj_target.csproj +6 -0
- blockwatch_cli-0.16.6/tests/testdata/symbol_references/xml_source.rs +3 -0
- blockwatch_cli-0.16.6/tests/testdata/symbol_references/xml_target.xml +12 -0
- blockwatch_cli-0.16.5/src/language_parsers/xml.rs +0 -70
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.agents/.claude-plugin/plugin.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.agents/skills/blockwatch/SKILL.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.claude-plugin/marketplace.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/dependabot.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/blockwatch.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/codeql.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/markdownlint.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/pypi.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/release.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/rust.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.github/workflows/trusted-checks.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.gitignore +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.markdownlint-cli2.yaml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.pre-commit-config.yaml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/.pre-commit-hooks.yaml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/LICENSE +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/SECURITY.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/blockwatch.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/clippy.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/codecov.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/demo.gif +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/dist-workspace.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/agents.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/README.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/affects.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/check-ai.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/check-lua.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/keep-sorted.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/keep-unique.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/line-count.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/line-pattern.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/docs/validators/same-as.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/pypi/pyproject.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/pyproject.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/release.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/scripts/check_language_count.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/scripts/check_latest_gpt_nano_model.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/block_parser.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/blocks.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/cli.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/config.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/diff_parser.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/explain.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/flags.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/fs.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/bash.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/c.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/c_sharp.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/cmake.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/cpp.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/css.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/dart.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/dockerfile.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/elixir.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/go.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/graphql.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/groovy.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/hcl.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/html.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/java.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/javascript.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/json.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/kotlin.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/lean.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/lua.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/makefile.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/markdown.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/mdx.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/nix.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/ocaml.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/php.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/proto.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/python.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/ruby.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/rust.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/scala.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/sql.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/starlark.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/swift.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/toml.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/tsx.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/typescript.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/language_parsers/yaml.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/lib.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/main.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/path_arguments.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/paths_glob.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/repo_path.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/report.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/sarif.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/scan.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/settings.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/symbol_path.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/tag_parser.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/target_reference.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/affects.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/check_ai.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/check_lua.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/keep_sorted.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/keep_unique.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/line_count.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/line_pattern.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/mod.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/validators/same_as.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/violation_address.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/src/virtual_blocks.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/affects.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/check_ai.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/check_lua.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/common/empty.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/common/mod.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/config.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/encoding.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/explain.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/general.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/keep_sorted.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/keep_unique.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/line_count.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/line_pattern.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/list.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/path_arguments.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/repository_root.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/same_as.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/sarif.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/skill.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/suppressions.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/cross_file_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/cross_file_target.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/custom_ext_source.javascript +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/custom_ext_target.javascript +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/dangling.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/missing_symbol.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/more_added_than_deleted.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/multiline_tag_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/multiline_tag_target.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/nested_mapping_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/nested_mapping_target.yaml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/sibling.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/symbol_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/symbol_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/table_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/table_target.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/tag_and_content_source.ts +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/tag_and_content_target.ts +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/whole_file_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/affects/whole_file_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_ai/two_blocks.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/affects.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/affects.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/affects_drift.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/blocking_io.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/blocking_io.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/echo.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/fail.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/mode.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/os.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/pathfmt/report_path.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/pathfmt/source.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/pattern.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/pattern_many_matches.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/pattern_no_match.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/success.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/check_lua/success_and_failure.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/config/glob_target/config.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/config/glob_target/package.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/config/glob_target/plugins/blue/package.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/config/glob_target/plugins/green/package.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/config/glob_target/plugins/red/package.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/explain/a.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/explain/check.lua +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/block_selection.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/custom_file_extension.javascript +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/custom_file_extension.python +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/disable_enable.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/paths/invalid.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/paths/subdir/nested_invalid.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/paths/valid.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/general/severity.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/hidden/.github/workflows/ci.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/keep_sorted/orderings.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/keep_unique/basic_and_pattern.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/line_count/equality_and_greater_than.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/line_pattern/forbidden_text.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/line_pattern/hex_and_word_patterns.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/list/.hg/.gitkeep +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/list/a.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/list/b.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/positions/unicode_columns.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/custom_ext_source.javascript +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/custom_ext_target.javascript +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/package.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/paths/alpha/item.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/paths/beta/item.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/paths_and_block_source.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/paths_source.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/sibling.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/split_table_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/split_table_target.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/symbol_mismatch_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/symbol_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/target.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/whole_file_mismatch_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/whole_file_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/same_as/whole_file_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/sarif/advisory.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/sarif/clean.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/sarif/sorted.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/sarif/unnamed.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/commit_msg.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/commit_msg_gone_a.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/commit_msg_gone_b.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/commit_msg_lowercase_trailer.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/commit_msg_malformed.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/commit_msg_with_noise.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/dangling.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/sorted.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/symbol.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/symbol_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/two_rules.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/suppressions/unnamed.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/bzl_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/bzl_target.bzl +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/c_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/c_target.c +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/cpp_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/cpp_target.cpp +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/cs_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/cs_target.cs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/escapes_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/escapes_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/filter_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/filter_target.yaml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/go_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/go_target.go +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/h_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/h_target.h +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/hcl_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/hcl_target.hcl +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/java_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/java_target.java +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/js_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/js_target.js +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/json_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/json_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/jsonc_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/jsonc_target.jsonc +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/kt_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/kt_target.kt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/kts_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/kts_target.kts +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/markdown_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/markdown_target.markdown +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/md_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/md_target.md +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/mdx_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/mdx_target.mdx +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/mixed_list_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/mixed_list_target.json +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/nomad_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/nomad_target.nomad +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/proto_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/proto_target.proto +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/py_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/py_target.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/rs_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/rs_target.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/swift_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/swift_target.swift +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tf_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tf_target.tf +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tfvars_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tfvars_target.tfvars +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tofu_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tofu_target.tofu +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/toml_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/toml_target.toml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/ts_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/ts_target.ts +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tsx_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/tsx_target.tsx +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/yaml_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/yaml_target.yaml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/yml_source.rs +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/symbol_references/yml_target.yml +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/affects/pair.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/clean/counted.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/clean/noop.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/clean/notes.txt +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/clean/sorted.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/diff/two_blocks.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/failing/unsorted.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/testdata/verbosity/mixed/both_kinds.py +0 -0
- {blockwatch_cli-0.16.5 → blockwatch_cli-0.16.6}/tests/verbosity.rs +0 -0
|
@@ -235,7 +235,7 @@ The main modules:
|
|
|
235
235
|
Some languages also have symbols. Such a language has a `SymbolsParser`, which its `parser()` passes to
|
|
236
236
|
`.with_symbols(...)`:
|
|
237
237
|
|
|
238
|
-
- JSON and
|
|
238
|
+
- JSON, YAML and XML walk their syntax trees themselves, and refuse a file with a syntax error.
|
|
239
239
|
- TOML finds its symbols with `toml_edit`. What a TOML key means depends on the order of the headers, not on how the
|
|
240
240
|
syntax tree is nested.
|
|
241
241
|
- Markdown finds its sections with the `markdown` crate, the same parser that finds its comments.
|
|
@@ -12,6 +12,24 @@ Releases up to and including v0.3.11 predate this file. Their notes live on the
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased] - ReleaseDate
|
|
14
14
|
|
|
15
|
+
## [0.16.6] - 2026-11-04
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Symbols in XML files: `.xml`, the MSBuild files (`.csproj`, `.fsproj`, `.vbproj`, `.vcxproj`, `.props`,
|
|
20
|
+
`.targets`), `.xaml`, `.xsd`, `.xsl` and `.xslt`. `pom.xml#/project/version` points at the text of an element, and
|
|
21
|
+
`#/Project/@Sdk` at the value of an attribute. A filter picks one of several elements with one name:
|
|
22
|
+
`#/project/dependencies/~[artifactId=guava]/version`. See [XML](docs/symbols.md#xml).
|
|
23
|
+
- A filter picks one of several items that share a path, such as two `ingress` blocks in HCL:
|
|
24
|
+
`#/resource/aws_security_group/web/~[from_port=443]/to_port`. Before, the path was ambiguous. See
|
|
25
|
+
[Picking an item by a key's value](docs/symbols.md#picking-an-item-by-a-keys-value).
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- A filter over several items that share a path could read a key of another item, when only that item had the key.
|
|
30
|
+
- A filter could pick the wrong item when an item had a syntax error or a string that blockwatch can't decode. Now
|
|
31
|
+
such a path stops the run, as a path to that item does.
|
|
32
|
+
|
|
15
33
|
## [0.16.5] - 2026-11-03
|
|
16
34
|
|
|
17
35
|
### Added
|
|
@@ -235,7 +235,7 @@ The main modules:
|
|
|
235
235
|
Some languages also have symbols. Such a language has a `SymbolsParser`, which its `parser()` passes to
|
|
236
236
|
`.with_symbols(...)`:
|
|
237
237
|
|
|
238
|
-
- JSON and
|
|
238
|
+
- JSON, YAML and XML walk their syntax trees themselves, and refuse a file with a syntax error.
|
|
239
239
|
- TOML finds its symbols with `toml_edit`. What a TOML key means depends on the order of the headers, not on how the
|
|
240
240
|
syntax tree is nested.
|
|
241
241
|
- Markdown finds its sections with the `markdown` crate, the same parser that finds its comments.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: blockwatch-cli
|
|
3
|
-
Version: 0.16.
|
|
3
|
+
Version: 0.16.6
|
|
4
4
|
Summary: Language agnostic linter that keeps your code and documentation in sync and valid
|
|
5
5
|
Keywords: linter,sync,drift,comments,agents
|
|
6
6
|
Home-Page: https://github.com/mennanov/blockwatch
|
|
@@ -89,9 +89,10 @@ Two validators work across files:
|
|
|
89
89
|
- `same-as` fails when a block and its target hold different values. It needs no diff.
|
|
90
90
|
|
|
91
91
|
Both can point to a block, a whole file, a specific value in a file like `package.json#/version`, a section of a
|
|
92
|
-
Markdown file,
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
Markdown file, an element or attribute in an XML file such as `pom.xml` or a `.csproj`, a constant in a Go, C, C++,
|
|
93
|
+
Python, Rust, TypeScript, JavaScript, Java, C#, Kotlin or Swift file, a field in a Protocol Buffers file, or a value in
|
|
94
|
+
a Terraform or other HCL file (see [Symbols](docs/symbols.md)). The other validators check a single block on their
|
|
95
|
+
own: the things you'd otherwise have to nitpick in code review.
|
|
95
96
|
|
|
96
97
|
<!-- <block name="available-validators"
|
|
97
98
|
same-as="src/validators/mod.rs:validator-registry, docs/validators/README.md:validators-index"
|
|
@@ -219,7 +220,7 @@ exclusions, and custom extension mappings.
|
|
|
219
220
|
|
|
220
221
|
```yaml
|
|
221
222
|
- repo: https://github.com/mennanov/blockwatch
|
|
222
|
-
rev: v0.16.
|
|
223
|
+
rev: v0.16.6 # Use latest release
|
|
223
224
|
hooks:
|
|
224
225
|
- id: blockwatch
|
|
225
226
|
```
|
|
@@ -19,7 +19,7 @@ To use [pre-commit](https://pre-commit.com), add the hook to `.pre-commit-config
|
|
|
19
19
|
|
|
20
20
|
```yaml
|
|
21
21
|
- repo: https://github.com/mennanov/blockwatch
|
|
22
|
-
rev: v0.16.
|
|
22
|
+
rev: v0.16.6 # Use latest release
|
|
23
23
|
hooks:
|
|
24
24
|
- id: blockwatch
|
|
25
25
|
```
|
|
@@ -59,7 +59,7 @@ The `blockwatch` hook runs before the commit message exists, so it cannot see a
|
|
|
59
59
|
|
|
60
60
|
```yaml
|
|
61
61
|
- repo: https://github.com/mennanov/blockwatch
|
|
62
|
-
rev: v0.16.
|
|
62
|
+
rev: v0.16.6 # Use latest release
|
|
63
63
|
hooks:
|
|
64
64
|
- id: blockwatch-commit-msg
|
|
65
65
|
```
|
|
@@ -557,15 +557,15 @@ Nothing else about the run changes: the same violations are found, and the exit
|
|
|
557
557
|
"tool": {
|
|
558
558
|
"driver": {
|
|
559
559
|
"name": "blockwatch",
|
|
560
|
-
"version": "0.16.
|
|
561
|
-
"semanticVersion": "0.16.
|
|
560
|
+
"version": "0.16.6",
|
|
561
|
+
"semanticVersion": "0.16.6",
|
|
562
562
|
"informationUri": "https://github.com/mennanov/blockwatch",
|
|
563
563
|
"rules": [
|
|
564
564
|
{
|
|
565
565
|
"id": "keep-sorted",
|
|
566
566
|
"name": "keep-sorted",
|
|
567
567
|
"shortDescription": { "text": "Requires the lines of a block to stay in order." },
|
|
568
|
-
"helpUri": "https://github.com/mennanov/blockwatch/blob/v0.16.
|
|
568
|
+
"helpUri": "https://github.com/mennanov/blockwatch/blob/v0.16.6/docs/validators/keep-sorted.md"
|
|
569
569
|
}
|
|
570
570
|
]
|
|
571
571
|
}
|
|
@@ -24,25 +24,26 @@ declares, instead of tags in a comment.
|
|
|
24
24
|
<!-- <block name="extensions-with-symbols" same-as="src/language_parsers/mod.rs:extensions-with-symbols"
|
|
25
25
|
same-as-pattern="`\.?(?P<value>[A-Za-z.]+)`"> -->
|
|
26
26
|
|
|
27
|
-
| Language | Files
|
|
28
|
-
|
|
29
|
-
| JSON | `.json`, `.jsonc`, `.webmanifest`
|
|
30
|
-
| TOML | `.toml`, `Pipfile`
|
|
31
|
-
| YAML | `.yaml`, `.yml`, `.cff`
|
|
32
|
-
| Markdown | `.md`, `.markdown`, `.mdx`
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
27
|
+
| Language | Files | Paths |
|
|
28
|
+
|------------------|-------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|
|
|
29
|
+
| JSON | `.json`, `.jsonc`, `.webmanifest` | [JSON](#json) |
|
|
30
|
+
| TOML | `.toml`, `Pipfile` | [TOML](#toml) |
|
|
31
|
+
| YAML | `.yaml`, `.yml`, `.cff` | [YAML](#yaml) |
|
|
32
|
+
| Markdown | `.md`, `.markdown`, `.mdx` | [Markdown](#markdown) |
|
|
33
|
+
| XML | `.xml`, `.csproj`, `.fsproj`, `.vbproj`, `.vcxproj`, `.props`, `.targets`, `.xaml`, `.xsd`, `.xsl`, `.xslt` | [XML](#xml) |
|
|
34
|
+
| Go | `.go` | [Go](#go) |
|
|
35
|
+
| C, C++ | `.c`, `.h`, `.cc`, `.cpp`, `.cxx`, `.hh`, `.hpp`, `.hxx` | [C and C++](#c-and-c) |
|
|
36
|
+
| Python | `.py`, `.pyi`, `.pyw` | [Python and Starlark](#python-and-starlark) |
|
|
37
|
+
| Starlark | `.bzl`, `.bazel`, `.bzlmod`, `.star`, `BUILD`, `BUCK`, `WORKSPACE`, `Tiltfile` | [Python and Starlark](#python-and-starlark) |
|
|
38
|
+
| Rust | `.rs` | [Rust](#rust) |
|
|
39
|
+
| TypeScript | `.ts`, `.mts`, `.cts`, `.d.ts`, `.tsx` | [TypeScript and JavaScript](#typescript-and-javascript) |
|
|
40
|
+
| JavaScript | `.js`, `.mjs`, `.cjs`, `.jsx` | [TypeScript and JavaScript](#typescript-and-javascript) |
|
|
41
|
+
| Java | `.java` | [Java](#java) |
|
|
42
|
+
| C# | `.cs` | [C#](#c) |
|
|
43
|
+
| Kotlin | `.kt`, `.kts` | [Kotlin](#kotlin) |
|
|
44
|
+
| Swift | `.swift` | [Swift](#swift) |
|
|
45
|
+
| Protocol Buffers | `.proto` | [Protocol Buffers](#protocol-buffers) |
|
|
46
|
+
| HCL (Terraform) | `.tf`, `.tofu`, `.tfvars`, `.hcl`, `.nomad` | [HCL](#hcl) |
|
|
46
47
|
|
|
47
48
|
<!-- </block> -->
|
|
48
49
|
|
|
@@ -97,6 +98,12 @@ services:
|
|
|
97
98
|
- **A filter picks a map entry too.** In `{"a": {"name": "x"}}`, `#/~[name=x]` is `#/a`.
|
|
98
99
|
- **A path can hold several filters**, such as `#/groups/~[name=api]/services/~[name=web]/port`. A filter can come
|
|
99
100
|
first, in a file that is a list: `#/~[name=web]`.
|
|
101
|
+
- **When several items share a path, the rest of the path looks only inside the item the filter picked.** For
|
|
102
|
+
example, two `ingress` blocks in an HCL resource share a path.
|
|
103
|
+
`#/resource/aws_security_group/web/~[from_port=443]/to_port` is the `to_port` of the block whose `from_port` is
|
|
104
|
+
`443`.
|
|
105
|
+
- **A filter that reaches an unreadable path stops the run**, as that path does. An item blockwatch can't read, such
|
|
106
|
+
as one with a syntax error, also stops a filter that compares its key, because that item could match too.
|
|
100
107
|
- **The value starts after the first `=` and ends at the last `]`,** so it can hold both. The key can't hold `=`.
|
|
101
108
|
Inside a filter, escape the key and the value like any key: `/` as `~1`, `,` as `%2C`, and so on.
|
|
102
109
|
|
|
@@ -247,6 +254,69 @@ Clone the repository.
|
|
|
247
254
|
|
|
248
255
|
<!-- </block> -->
|
|
249
256
|
|
|
257
|
+
## XML
|
|
258
|
+
|
|
259
|
+
`.xml` files have symbols, and so do the MSBuild files (`.csproj`, `.fsproj`, `.vbproj`, `.vcxproj`, `.props`,
|
|
260
|
+
`.targets`), `.xaml`, `.xsd`, `.xsl` and `.xslt`.
|
|
261
|
+
|
|
262
|
+
<!-- <block name="xml-paths"> -->
|
|
263
|
+
|
|
264
|
+
Every element and every attribute is a symbol. A path is each element's name, from the root element down. An attribute
|
|
265
|
+
is `@` and its name, under its element:
|
|
266
|
+
|
|
267
|
+
```xml
|
|
268
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
269
|
+
<version>1.4.2</version>
|
|
270
|
+
<dependencies>
|
|
271
|
+
<dependency>
|
|
272
|
+
<artifactId>junit</artifactId>
|
|
273
|
+
<version>5.10.0</version>
|
|
274
|
+
</dependency>
|
|
275
|
+
<dependency scope="test">
|
|
276
|
+
<artifactId>guava</artifactId>
|
|
277
|
+
<version>33.0.0-jre</version>
|
|
278
|
+
</dependency>
|
|
279
|
+
</dependencies>
|
|
280
|
+
<description>
|
|
281
|
+
Tools & helpers
|
|
282
|
+
</description>
|
|
283
|
+
</project>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
| Path | Points at |
|
|
287
|
+
|------------------------------------------------------|---------------------------------|
|
|
288
|
+
| `#/project/version` | `1.4.2` |
|
|
289
|
+
| `#/project/dependencies` | the whole element |
|
|
290
|
+
| `#/project/dependencies/dependency/version` | a violation: two elements match |
|
|
291
|
+
| `#/project/dependencies/~[artifactId=guava]/version` | `33.0.0-jre` |
|
|
292
|
+
| `#/project/dependencies/~[artifactId=guava]/@scope` | `test` |
|
|
293
|
+
| `#/project/description` | `Tools & helpers` |
|
|
294
|
+
|
|
295
|
+
- **Elements with one name under one parent share a path**, such as the two `dependency` elements above. A path through
|
|
296
|
+
them is a violation, so pick one with a [filter](#picking-an-item-by-a-keys-value). Its key can be a child element,
|
|
297
|
+
such as `artifactId`, or an attribute. In a `.csproj` file, `#/Project/ItemGroup/~[@Include=Serilog]/@Version` is
|
|
298
|
+
the `Version` of the `PackageReference` whose `Include` is `Serilog`. A position, such as
|
|
299
|
+
`#/project/modules/module/1`, is not found.
|
|
300
|
+
- **A prefix is part of the name, as written.** Escape its `:` as `%3A`: `#/manifest/application/@android%3Aname`.
|
|
301
|
+
Namespaces play no part, and `xmlns` attributes are not symbols. Names compare as written, case included.
|
|
302
|
+
- **An element without child elements is its text.** Entities and character references are decoded, CDATA stays as
|
|
303
|
+
written, and comments are left out. The white space around the text is removed, but the line breaks and indents
|
|
304
|
+
inside it stay. `<a/>` and `<a></a>` are empty strings.
|
|
305
|
+
- **An element with child elements has no value.** It gives its whole text, tags included, even when it also holds
|
|
306
|
+
text.
|
|
307
|
+
- **An attribute is its decoded value.** Each tab and line break in it becomes a space, as XML requires. The white
|
|
308
|
+
space around it stays.
|
|
309
|
+
- **An entity that the DOCTYPE declares stops the run for its path**, because it can stand for any text, even
|
|
310
|
+
elements. So does a reference to a character that XML forbids, such as `�`.
|
|
311
|
+
- **The XML declaration, the DOCTYPE, comments and processing instructions are not symbols.**
|
|
312
|
+
- **An element covers its start tag, its content and its end tag.** An attribute covers `name="value"`. A comment
|
|
313
|
+
above an element is not part of it.
|
|
314
|
+
- **A syntax error anywhere stops the run**, and so does an empty file. A few valid files stop it too, because of the
|
|
315
|
+
parser: a DOCTYPE without white space before its `]`, as in `[<!ENTITY e "x">]`, and a processing instruction with
|
|
316
|
+
data, such as `<?pi x?>`, inside an element.
|
|
317
|
+
|
|
318
|
+
<!-- </block> -->
|
|
319
|
+
|
|
250
320
|
## Code files
|
|
251
321
|
|
|
252
322
|
<!-- <block name="code-files"> -->
|
|
@@ -840,6 +910,7 @@ resource "aws_instance" "web" {
|
|
|
840
910
|
- **A path with only some of a block's labels points at nothing.** `#/resource/aws_instance` is no symbol.
|
|
841
911
|
- **A block written twice in one body makes its path a violation**, such as two `ingress` blocks in a resource. Two
|
|
842
912
|
`locals` blocks make `#/locals` a violation, but `#/locals/name` still resolves when only one of them sets `name`.
|
|
913
|
+
A filter picks one of the blocks: `#/resource/aws_security_group/web/~[from_port=443]/to_port`.
|
|
843
914
|
- **A key of an object is a segment when it is a name, a plain string, `true` or `false`**, such as `Team` or
|
|
844
915
|
`"cost center"`. A key written as a number or an expression, such as `3` or `(var.k)`, is not. The items of a list
|
|
845
916
|
are not symbols.
|
|
@@ -6,7 +6,7 @@ setup(
|
|
|
6
6
|
name='blockwatch-pre-commit-placeholder',
|
|
7
7
|
version='0.0.0',
|
|
8
8
|
# <block name="blockwatch-cli-version" same-as-pattern="blockwatch-cli==(?P<value>\d+\.\d+\.\d+)">
|
|
9
|
-
install_requires=['blockwatch-cli==0.16.
|
|
9
|
+
install_requires=['blockwatch-cli==0.16.6'],
|
|
10
10
|
# </block>
|
|
11
11
|
# Without it, setuptools takes the directories under src/ for Python packages.
|
|
12
12
|
packages=[],
|
|
@@ -1046,9 +1046,11 @@ mod tests {
|
|
|
1046
1046
|
"cjs",
|
|
1047
1047
|
"cpp",
|
|
1048
1048
|
"cs",
|
|
1049
|
+
"csproj",
|
|
1049
1050
|
"cts",
|
|
1050
1051
|
"cxx",
|
|
1051
1052
|
"d.ts",
|
|
1053
|
+
"fsproj",
|
|
1052
1054
|
"go",
|
|
1053
1055
|
"h",
|
|
1054
1056
|
"hcl",
|
|
@@ -1068,6 +1070,7 @@ mod tests {
|
|
|
1068
1070
|
"mjs",
|
|
1069
1071
|
"mts",
|
|
1070
1072
|
"nomad",
|
|
1073
|
+
"props",
|
|
1071
1074
|
"proto",
|
|
1072
1075
|
"py",
|
|
1073
1076
|
"pyi",
|
|
@@ -1075,13 +1078,21 @@ mod tests {
|
|
|
1075
1078
|
"rs",
|
|
1076
1079
|
"star",
|
|
1077
1080
|
"swift",
|
|
1081
|
+
"targets",
|
|
1078
1082
|
"tf",
|
|
1079
1083
|
"tfvars",
|
|
1080
1084
|
"tofu",
|
|
1081
1085
|
"toml",
|
|
1082
1086
|
"ts",
|
|
1083
1087
|
"tsx",
|
|
1088
|
+
"vbproj",
|
|
1089
|
+
"vcxproj",
|
|
1084
1090
|
"webmanifest",
|
|
1091
|
+
"xaml",
|
|
1092
|
+
"xml",
|
|
1093
|
+
"xsd",
|
|
1094
|
+
"xsl",
|
|
1095
|
+
"xslt",
|
|
1085
1096
|
"yaml",
|
|
1086
1097
|
"yml",
|
|
1087
1098
|
];
|