@7n/rules 1.5.1 → 1.6.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/CHANGELOG.md +6 -0
- package/bin/n-rules.js +83 -21
- package/package.json +1 -1
- package/rules/abie/main.mdc +0 -6
- package/rules/js/check/docs/main.md +1 -1
- package/rules/js/check/main.mjs +6 -10
- package/rules/js/main.mdc +0 -1
- package/rules/js/vscode_extensions/template/extensions.json.snippet.json +4 -1
- package/rules/npm-module/main.mdc +0 -2
- package/rules/php/tooling/docs/main.md +1 -1
- package/rules/php/tooling/main.mjs +2 -7
- package/rules/python/tooling/docs/main.md +1 -1
- package/rules/python/tooling/main.mjs +2 -7
- package/rules/rego/lib/docs/run-external-tool.md +1 -2
- package/rules/rego/lib/run-external-tool.mjs +4 -1
- package/rules/security/main.mdc +0 -1
- package/rules/style/main.mdc +0 -1
- package/rules/style/tooling/docs/main.md +1 -1
- package/rules/style/tooling/main.mjs +2 -7
- package/rules/tauri/release/release.mdc +1 -1
- package/rules/text/formatting/docs/main.md +1 -1
- package/rules/text/formatting/main.mjs +11 -11
- package/rules/text/main.mdc +0 -1
- package/scripts/docs/skills-cli.md +3 -3
- package/scripts/lib/acp-runner.mjs +8 -10
- package/scripts/lib/docs/acp-runner.md +5 -5
- package/scripts/lib/docs/mirror-parity.md +1 -1
- package/scripts/lib/mirror-parity.mjs +49 -16
- package/scripts/skills-cli.mjs +1 -1
- package/rules/abie/clean_merged_ignore_branches/clean_merged_ignore_branches.mdc +0 -19
- package/rules/abie/clean_merged_ignore_branches/clean_merged_ignore_branches.rego +0 -81
- package/rules/abie/clean_merged_ignore_branches/concern.json +0 -11
- package/rules/abie/clean_merged_ignore_branches/docs/fix-clean_merged_ignore_branches.md +0 -31
- package/rules/abie/clean_merged_ignore_branches/docs/index.md +0 -9
- package/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs +0 -8
- package/rules/abie/clean_merged_ignore_branches/template/clean-merged-branch.yml.snippet.yml +0 -9
- package/rules/docker/lint_docker_yml/concern.json +0 -12
- package/rules/docker/lint_docker_yml/docs/fix-lint_docker_yml.md +0 -31
- package/rules/docker/lint_docker_yml/docs/index.md +0 -9
- package/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs +0 -5
- package/rules/docker/lint_docker_yml/lint_docker_yml.mdc +0 -14
- package/rules/docker/lint_docker_yml/lint_docker_yml.rego +0 -79
- package/rules/docker/lint_docker_yml/template/lint-docker.yml.snippet.yml +0 -41
- package/rules/js/lint_js_yml/concern.json +0 -12
- package/rules/js/lint_js_yml/docs/fix-lint_js_yml.md +0 -28
- package/rules/js/lint_js_yml/docs/index.md +0 -9
- package/rules/js/lint_js_yml/fix-lint_js_yml.mjs +0 -5
- package/rules/js/lint_js_yml/lint_js_yml.mdc +0 -14
- package/rules/js/lint_js_yml/lint_js_yml.rego +0 -117
- package/rules/js/lint_js_yml/template/lint-js.yml.snippet.yml +0 -40
- package/rules/k8s/lint_k8s_yml/concern.json +0 -12
- package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +0 -30
- package/rules/k8s/lint_k8s_yml/docs/index.md +0 -9
- package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +0 -5
- package/rules/k8s/lint_k8s_yml/lint_k8s_yml.rego +0 -57
- package/rules/k8s/lint_k8s_yml/template/lint-k8s.yml.snippet.yml +0 -43
- package/rules/npm-module/npm_publish_yml/concern.json +0 -13
- package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +0 -28
- package/rules/npm-module/npm_publish_yml/docs/index.md +0 -9
- package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +0 -8
- package/rules/npm-module/npm_publish_yml/template/npm-publish.yml.snippet.yml +0 -49
- package/rules/php/lint_php_yml/concern.json +0 -12
- package/rules/php/lint_php_yml/docs/fix-lint_php_yml.md +0 -28
- package/rules/php/lint_php_yml/docs/index.md +0 -9
- package/rules/php/lint_php_yml/fix-lint_php_yml.mjs +0 -5
- package/rules/php/lint_php_yml/lint_php_yml.mdc +0 -23
- package/rules/php/lint_php_yml/lint_php_yml.rego +0 -34
- package/rules/php/lint_php_yml/template/lint-php.yml.snippet.yml +0 -47
- package/rules/python/lint_python_yml/concern.json +0 -12
- package/rules/python/lint_python_yml/docs/fix-lint_python_yml.md +0 -27
- package/rules/python/lint_python_yml/docs/index.md +0 -9
- package/rules/python/lint_python_yml/fix-lint_python_yml.mjs +0 -5
- package/rules/python/lint_python_yml/lint_python_yml.mdc +0 -12
- package/rules/python/lint_python_yml/lint_python_yml.rego +0 -68
- package/rules/python/lint_python_yml/template/lint-python.yml.snippet.yml +0 -41
- package/rules/rust/lint_rust_yml/concern.json +0 -14
- package/rules/rust/lint_rust_yml/docs/fix-lint_rust_yml.md +0 -28
- package/rules/rust/lint_rust_yml/docs/index.md +0 -9
- package/rules/rust/lint_rust_yml/fix-lint_rust_yml.mjs +0 -5
- package/rules/rust/lint_rust_yml/lint_rust_yml.mdc +0 -17
- package/rules/rust/lint_rust_yml/lint_rust_yml.rego +0 -79
- package/rules/rust/lint_rust_yml/template/lint-rust.yml.snippet.yml +0 -44
- package/rules/rust/toolchain_cache/concern.json +0 -14
- package/rules/rust/toolchain_cache/docs/fix-toolchain_cache.md +0 -35
- package/rules/rust/toolchain_cache/docs/index.md +0 -12
- package/rules/rust/toolchain_cache/docs/main.md +0 -57
- package/rules/rust/toolchain_cache/fix-toolchain_cache.mjs +0 -117
- package/rules/rust/toolchain_cache/main.mjs +0 -177
- package/rules/rust/toolchain_cache/toolchain_cache.mdc +0 -23
- package/rules/security/lint_security_yml/concern.json +0 -14
- package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +0 -31
- package/rules/security/lint_security_yml/docs/index.md +0 -9
- package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +0 -8
- package/rules/security/lint_security_yml/lint_security_yml.mdc +0 -7
- package/rules/security/lint_security_yml/lint_security_yml.rego +0 -33
- package/rules/security/lint_security_yml/template/lint-security.yml.snippet.yml +0 -31
- package/rules/style/lint_style_yml/concern.json +0 -12
- package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +0 -31
- package/rules/style/lint_style_yml/docs/index.md +0 -9
- package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +0 -5
- package/rules/style/lint_style_yml/lint_style_yml.mdc +0 -13
- package/rules/style/lint_style_yml/lint_style_yml.rego +0 -38
- package/rules/style/lint_style_yml/template/lint-style.yml.snippet.yml +0 -39
- package/rules/text/lint_text/concern.json +0 -11
- package/rules/text/lint_text/docs/fix-lint_text.md +0 -28
- package/rules/text/lint_text/docs/index.md +0 -9
- package/rules/text/lint_text/fix-lint_text.mjs +0 -5
- package/rules/text/lint_text/lint_text.mdc +0 -19
- package/rules/text/lint_text/lint_text.rego +0 -104
- package/rules/text/lint_text/template/lint-text.yml.snippet.yml +0 -61
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# Перевірка `.github/workflows/lint-text.yml` (text.mdc).
|
|
2
|
-
#
|
|
3
|
-
# Канон надходить через --data: { "template": { "snippet": ... } }
|
|
4
|
-
# Структура --data сформована з template/lint-text.yml.snippet.yml.
|
|
5
|
-
# Універсальні workflow-перевірки (checkout, permissions) — у `ga.workflow_common`.
|
|
6
|
-
package text.lint_text
|
|
7
|
-
|
|
8
|
-
import rego.v1
|
|
9
|
-
|
|
10
|
-
expected_name := data.template.snippet.name
|
|
11
|
-
|
|
12
|
-
expected_push_branches := {b | some b in data.template.snippet.on.push.branches}
|
|
13
|
-
|
|
14
|
-
expected_pr_branches := {b | some b in data.template.snippet.on.pull_request.branches}
|
|
15
|
-
|
|
16
|
-
expected_push_paths := {p | some p in data.template.snippet.on.push.paths}
|
|
17
|
-
|
|
18
|
-
expected_runs_on := data.template.snippet.jobs.text["runs-on"]
|
|
19
|
-
|
|
20
|
-
expected_perms := data.template.snippet.jobs.text.permissions
|
|
21
|
-
|
|
22
|
-
# conftest парсить YAML 1.1, де канонічний `on:` без лапок стає булевим ключем
|
|
23
|
-
# `true` (як у `ga.lint_ga`). Тому читаємо on-блок через `input["true"]`.
|
|
24
|
-
gha_on := input["true"]
|
|
25
|
-
|
|
26
|
-
job := input.jobs.text
|
|
27
|
-
|
|
28
|
-
job_uses_set contains job.steps[_].uses
|
|
29
|
-
|
|
30
|
-
job_run_blob := concat("\n", [run |
|
|
31
|
-
run := job.steps[_].run
|
|
32
|
-
])
|
|
33
|
-
|
|
34
|
-
expected_uses_set contains u if {
|
|
35
|
-
some step in data.template.snippet.jobs.text.steps
|
|
36
|
-
u := object.get(step, "uses", "")
|
|
37
|
-
u != ""
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
expected_run_substrings contains r if {
|
|
41
|
-
some step in data.template.snippet.jobs.text.steps
|
|
42
|
-
r := object.get(step, "run", "")
|
|
43
|
-
r != ""
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
deny contains msg if {
|
|
47
|
-
input.name != expected_name
|
|
48
|
-
msg := sprintf("lint-text.yml: name має бути %q (text.mdc)", [expected_name])
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
deny contains msg if {
|
|
52
|
-
not branches_superset_of(gha_on.push.branches, expected_push_branches)
|
|
53
|
-
msg := "lint-text.yml: on.push.branches має містити dev і main (text.mdc)"
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
deny contains msg if {
|
|
57
|
-
not branches_superset_of(gha_on.pull_request.branches, expected_pr_branches)
|
|
58
|
-
msg := "lint-text.yml: on.pull_request.branches має містити dev і main (text.mdc)"
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
deny contains msg if {
|
|
62
|
-
not paths_superset_of(gha_on.push.paths, expected_push_paths)
|
|
63
|
-
msg := "lint-text.yml: on.push.paths має містити очікувані glob-и (text.mdc)"
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
deny contains msg if {
|
|
67
|
-
not job
|
|
68
|
-
msg := "lint-text.yml: jobs.text відсутній (text.mdc)"
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
deny contains msg if {
|
|
72
|
-
job["runs-on"] != expected_runs_on
|
|
73
|
-
msg := sprintf("lint-text.yml: runs-on має бути %s (text.mdc)", [expected_runs_on])
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
deny contains msg if {
|
|
77
|
-
job.permissions.contents != expected_perms.contents
|
|
78
|
-
msg := sprintf("lint-text.yml: permissions.contents має бути %s (text.mdc)", [expected_perms.contents])
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
deny contains msg if {
|
|
82
|
-
count(job.steps) == 0
|
|
83
|
-
msg := "lint-text.yml: jobs.text.steps відсутні (text.mdc)"
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
deny contains msg if {
|
|
87
|
-
some required_use in expected_uses_set
|
|
88
|
-
not required_use in job_uses_set
|
|
89
|
-
msg := sprintf("lint-text.yml: має бути uses: %s (text.mdc)", [required_use])
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
deny contains msg if {
|
|
93
|
-
some required_run in expected_run_substrings
|
|
94
|
-
not contains(job_run_blob, required_run)
|
|
95
|
-
msg := sprintf("lint-text.yml: жоден крок run не містить %q (text.mdc)", [required_run])
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
branches_superset_of(actual, expected) if {
|
|
99
|
-
expected & {b | some b in actual} == expected
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
paths_superset_of(actual, expected) if {
|
|
103
|
-
expected & {p | some p in actual} == expected
|
|
104
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
name: Lint Text
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- dev
|
|
7
|
-
- main
|
|
8
|
-
paths:
|
|
9
|
-
- '**/*.js'
|
|
10
|
-
- '**/*.ts'
|
|
11
|
-
- '**/*.vue'
|
|
12
|
-
- '**/*.html'
|
|
13
|
-
- '**/*.css'
|
|
14
|
-
- '**/*.scss'
|
|
15
|
-
- '**/*.less'
|
|
16
|
-
- '**/*.json'
|
|
17
|
-
- '**/*.jsonc'
|
|
18
|
-
- '**/*.yaml'
|
|
19
|
-
- '**/*.yml'
|
|
20
|
-
- '**/*.toml'
|
|
21
|
-
- '**/*.xml'
|
|
22
|
-
- '**/*.md'
|
|
23
|
-
- '**/*.mdc'
|
|
24
|
-
- '**/*.mdс'
|
|
25
|
-
- '**/*.txt'
|
|
26
|
-
- '**/*.go'
|
|
27
|
-
- '**/*.py'
|
|
28
|
-
- '**/*.php'
|
|
29
|
-
- '**/*.sh'
|
|
30
|
-
|
|
31
|
-
pull_request:
|
|
32
|
-
branches:
|
|
33
|
-
- dev
|
|
34
|
-
- main
|
|
35
|
-
|
|
36
|
-
concurrency:
|
|
37
|
-
group: ${{ github.ref }}-${{ github.workflow }}
|
|
38
|
-
cancel-in-progress: true
|
|
39
|
-
|
|
40
|
-
jobs:
|
|
41
|
-
text:
|
|
42
|
-
runs-on: ubuntu-latest
|
|
43
|
-
permissions:
|
|
44
|
-
contents: read
|
|
45
|
-
steps:
|
|
46
|
-
- uses: actions/checkout@v6
|
|
47
|
-
with:
|
|
48
|
-
persist-credentials: false
|
|
49
|
-
|
|
50
|
-
- uses: ./.github/actions/setup-bun-deps
|
|
51
|
-
|
|
52
|
-
- name: Install shellcheck
|
|
53
|
-
run: sudo apt-get update && sudo apt-get install -y shellcheck
|
|
54
|
-
|
|
55
|
-
- name: Install dotenv-linter
|
|
56
|
-
run: >-
|
|
57
|
-
curl -sSfL https://git.io/JLbXn
|
|
58
|
-
| sh -s -- -b /usr/local/bin
|
|
59
|
-
|
|
60
|
-
- name: Lint text
|
|
61
|
-
run: bunx n-rules lint text --no-fix
|