109 Commits
2.0.1 ... main

Author SHA1 Message Date
renovate[bot]
a750b0c6d8 chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (43.31.6 → 43.76.2) (#100) 2026-03-16 03:33:56 +02:00
renovate[bot]
6ac0008333 chore(actions): update ivuorinen/actions action (v2026.03.11 → v2026.03.14) (#99)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 01:31:22 +00:00
renovate[bot]
67c9179a2e chore(actions): update ivuorinen/actions action to v2026.03.11 (#98)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 05:40:22 +00:00
renovate[bot]
6a806e7256 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.507 → 3.2.508) (#97)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 08:04:16 +02:00
renovate[bot]
848d1c63a6 chore(deps): update pre-commit hook johnnymorganz/stylua (v2.3.1 → v2.4.0) (#96)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 02:24:21 +02:00
fb374b3f83 ci: migrate CodeQL to ivuorinen/actions/codeql-analysis (#95)
* ci: migrate codeql to composable workflow

* fix: correct codeql workflow language, queries, permissions, and action ref

- Use 'javascript' instead of 'javascript-typescript' for CodeQL language
- Add queries: security-and-quality parameter
- Set root-level permissions to {}
- Add job-level permissions (actions, contents, packages, security-events)
- Pin action ref to commit hash with version comment
- Fix mangled cron schedule
2026-03-07 19:16:29 +02:00
renovate[bot]
698773b469 chore(deps): update github/codeql-action action (v4.32.5 → v4.32.6) (#93)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-07 04:53:05 +00:00
renovate[bot]
281da5298d chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.506 → 3.2.507) (#94) 2026-03-07 03:52:26 +02:00
renovate[bot]
dcfa0dceb8 chore(deps): update pre-commit hook igorshubovych/markdownlint-cli (v0.47.0 → v0.48.0) (#92)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 09:02:45 +00:00
renovate[bot]
a18f7ae586 chore(deps): update ivuorinen/actions action (v2026.02.28 → v2026.03.02) (#91)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 05:05:59 +00:00
renovate[bot]
4626b8da43 chore(deps): update github/codeql-action action (v4.32.4 → v4.32.5) (#90)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 00:43:48 +00:00
renovate[bot]
05f76ec31d chore(deps): update ivuorinen/actions action (v2026.02.24 → v2026.02.28) (#89)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 22:00:21 +02:00
renovate[bot]
6a304aec40 chore(deps): update ivuorinen/actions action (v2026.02.18 → v2026.02.24) (#88)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 06:12:58 +00:00
renovate[bot]
77a63e3235 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.504 → 3.2.506) (#87)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 01:13:49 +00:00
renovate[bot]
d05ac86dd5 chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (43.4.2 → 43.31.6) (#86) 2026-02-23 21:27:06 +02:00
renovate[bot]
dd1eae73f7 chore(deps): update github/codeql-action action (v4.32.3 → v4.32.4) (#85)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-22 05:39:29 +00:00
renovate[bot]
2fd5a86888 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.502 → 3.2.504) (#84)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 09:35:02 +00:00
renovate[bot]
f8997e2aef chore(deps): update ivuorinen/actions action (v2026.02.10 → v2026.02.18) (#83)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 06:15:12 +00:00
renovate[bot]
8976a6e29a chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.501 → 3.2.502) (#82)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-18 03:05:26 +00:00
renovate[bot]
0ded86f210 chore(deps): update pre-commit hook rhysd/actionlint (v1.7.10 → v1.7.11) (#81)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 14:46:20 +00:00
renovate[bot]
8ab1872286 chore(deps): update github/codeql-action action (v4.32.2 → v4.32.3) (#80)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-15 05:36:33 +00:00
renovate[bot]
5783a4c55a chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.500 → 3.2.501) (#79)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-13 14:08:44 +00:00
renovate[bot]
faaf03971d chore(deps): update ivuorinen/actions action (v2026.02.03 → v2026.02.10) (#78)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-12 06:13:08 +00:00
renovate[bot]
28aaf0287f chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (43.0.5 → 43.4.2) (#77)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-08 13:45:04 +02:00
renovate[bot]
4be8fdb9d1 chore(deps): update github/codeql-action action (v4.32.1 → v4.32.2) (#76)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-07 05:58:09 +00:00
renovate[bot]
bd3c5dd3c1 chore(deps): update ivuorinen/actions action (v2026.01.21 → v2026.02.03) (#75)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 19:15:00 +00:00
renovate[bot]
9be6312f23 chore(deps): update github/codeql-action action (v4.32.0 → v4.32.1) (#74)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 12:04:54 +02:00
renovate[bot]
c8a7a5ea97 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.499 → 3.2.500) (#73)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 08:55:01 +02:00
renovate[bot]
cecef80bbe chore(deps)!: update renovatebot/pre-commit-hooks (42.84.0 → 43.0.5) (#72)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-30 11:00:09 +02:00
renovate[bot]
7f071515fa chore(deps): update github/codeql-action action (v4.31.11 → v4.32.0) (#71)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-28 10:57:16 +00:00
renovate[bot]
5f5b459b0d chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.497 → 3.2.499) (#70)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 03:07:47 +02:00
renovate[bot]
bb225c286a chore(deps): update github/codeql-action action (v4.31.10 → v4.31.11) (#69)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 21:41:07 +02:00
renovate[bot]
3fef4d2592 chore(deps): update actions/checkout action (v6.0.1 → v6.0.2) (#68)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-24 13:15:55 +00:00
renovate[bot]
83f56a8d78 chore(deps): update ivuorinen/actions action (v2026.01.13 → v2026.01.21) (#67)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 05:38:47 +00:00
renovate[bot]
4dc3cbdf4d chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.71.0 → 42.84.0) (#66) 2026-01-18 17:02:45 +02:00
renovate[bot]
c61a840782 chore(deps): update pre-commit hook adrienverge/yamllint (v1.37.1 → v1.38.0) (#65)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 17:30:24 +00:00
renovate[bot]
e6b8a5dd40 chore(deps): update ivuorinen/actions action (v2026.01.09 → v2026.01.13) (#64)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 13:05:23 +00:00
renovate[bot]
90ca6cfd85 chore(deps): update github/codeql-action action (v4.31.9 → v4.31.10) (#63) 2026-01-14 07:44:02 +02:00
renovate[bot]
a42f826f3a chore(deps): update ivuorinen/actions action (v2026.01.01 → v2026.01.09) (#62)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-11 05:24:49 +00:00
renovate[bot]
ab2a1155d2 chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.66.8 → 42.71.0) (#61)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 10:49:04 +00:00
renovate[bot]
b303e259fc chore(deps)!: update ivuorinen/actions (v2025.11.28 → v2026.01.01) (#60) 2026-01-02 09:47:50 +02:00
renovate[bot]
0b627f3133 chore(deps): update pre-commit hook rhysd/actionlint (v1.7.9 → v1.7.10) (#59)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-01 09:36:28 +00:00
renovate[bot]
8c9ed5c20e chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.496 → 3.2.497) (#58)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-01 07:02:24 +00:00
renovate[bot]
7f9a81c895 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.495 → 3.2.496) (#57)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-30 02:00:17 +00:00
renovate[bot]
17e9b3d09d chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.64.1 → 42.66.8) (#56)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-27 13:43:48 +00:00
renovate[bot]
4ff52a71fc chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.24.1 → 42.64.1) (#55)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 09:31:23 +00:00
renovate[bot]
4f11bd51df chore(deps): update github/codeql-action action (v4.31.8 → v4.31.9) (#54) 2025-12-18 09:40:39 +02:00
renovate[bot]
7f0648f249 chore(deps): update github/codeql-action action (v4.31.7 → v4.31.8) (#53)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 09:53:28 +00:00
renovate[bot]
96fbab46fd chore(deps): update pre-commit hook igorshubovych/markdownlint-cli (v0.46.0 → v0.47.0) (#52)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 04:37:31 +00:00
renovate[bot]
dbdf4067f5 chore(deps): update github/codeql-action action (v4.31.6 → v4.31.7) (#51)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-07 00:56:53 +02:00
renovate[bot]
1c1d6cd27f chore(deps): update actions/checkout action (v6.0.0 → v6.0.1) (#50)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 16:36:00 +02:00
renovate[bot]
3d500b86de chore(deps): update github/codeql-action action (v4.31.5 → v4.31.6) (#49)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 10:38:05 +00:00
renovate[bot]
1e9d78fa5c chore(deps)!: update ivuorinen/actions (v25.11.26 → v2025.11.28) (#48) 2025-11-29 16:53:11 +02:00
renovate[bot]
bd4f5673b6 chore(deps): update ivuorinen/actions action (v25.11.25 → v25.11.26) (#47)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-28 18:28:32 +00:00
renovate[bot]
9147c0cb72 chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.21.3 → 42.24.1) (#46)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-27 11:05:54 +02:00
renovate[bot]
6468dbaa06 chore(deps): update github/codeql-action action (v4.31.2 → v4.31.5) (#40)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 10:27:51 +02:00
renovate[bot]
19d1b4d70b chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.492 → 3.2.495) (#39)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 10:27:22 +02:00
renovate[bot]
686781e24f chore(deps): update ivuorinen/actions action (25.10.7 → v25.11.25) (#23) 2025-11-26 10:09:02 +02:00
renovate[bot]
7e5a68ac10 chore(deps): update pre-commit hook rhysd/actionlint (v1.7.8 → v1.7.9) (#45) 2025-11-26 10:03:35 +02:00
renovate[bot]
671daabcee chore(deps): update pre-commit hook igorshubovych/markdownlint-cli (v0.45.0 → v0.46.0) (#44) 2025-11-26 10:02:59 +02:00
renovate[bot]
5d72206c4c chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.7.0 → 42.21.3) (#41) 2025-11-26 10:02:35 +02:00
renovate[bot]
5ce51327b5 chore(deps)!: update actions/checkout (v5.0.0 → v6.0.0) (#43) 2025-11-26 10:02:05 +02:00
66f98f00a0 fix(ci): change CodeQL language from 'javascript' to 'actions' 2025-11-26 09:31:59 +02:00
renovate[bot]
313595744d chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.1.3 → 42.7.0) (#38) 2025-11-13 13:20:22 +02:00
renovate[bot]
609b792964 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.490 → 3.2.492) (#37)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-11 23:03:10 +00:00
renovate[bot]
ee596690b4 chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.0.2 → 42.1.3) (#36)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-09 09:22:51 +02:00
44b73d4059 Merge pull request #34 from ivuorinen/renovate/renovatebot-pre-commit-hooks-42.x
chore(deps)!: update renovatebot/pre-commit-hooks (41.132.5 → 42.0.2)
2025-11-07 15:09:50 +02:00
renovate[bot]
94a9c8bdc2 chore(deps)!: update renovatebot/pre-commit-hooks (41.132.5 → 42.0.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 12:31:27 +00:00
renovate[bot]
639aa1ed5a chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.489 → 3.2.490) (#33)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 04:07:26 +00:00
renovate[bot]
f4f0b3741e chore(deps): update pre-commit hook johnnymorganz/stylua (v2.3.0 → v2.3.1) (#32)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 22:01:55 +00:00
renovate[bot]
41c386537b chore(deps): update github/codeql-action action (v4.31.0 → v4.31.2) (#31)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-01 14:36:39 +00:00
renovate[bot]
083552a205 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.488 → 3.2.489) (#30)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 08:05:51 +00:00
renovate[bot]
56996ceaa3 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.487 → 3.2.488) (#29)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 07:58:43 +00:00
renovate[bot]
11caca9fe5 chore(deps): update github/codeql-action action (v4.30.9 → v4.31.0) (#27)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-26 04:31:07 +00:00
renovate[bot]
da8bc66f8a chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.485 → 3.2.487) (#26)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 22:12:27 +00:00
24172113ba Merge pull request #25 from ivuorinen/renovate/bridgecrewio-checkov-3.x 2025-10-22 12:10:14 +03:00
renovate[bot]
7d37ef95bc chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.484 → 3.2.485)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 22:02:32 +00:00
renovate[bot]
056c2b3ec2 chore(deps): update github/codeql-action action (v4.30.8 → v4.30.9) (#24)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-19 09:14:48 +00:00
renovate[bot]
6625c421f9 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.483 → 3.2.484) (#22)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 05:42:37 +00:00
renovate[bot]
6c395d54fa chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.479 → 3.2.483) (#21)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-14 18:01:26 +00:00
renovate[bot]
2174700415 chore(deps): update pre-commit hook rhysd/actionlint (v1.7.7 → v1.7.8) (#20)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-13 12:42:13 +00:00
renovate[bot]
e29f84d973 chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.474 → 3.2.479) (#19)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-12 05:00:26 +00:00
renovate[bot]
8474d133c6 chore(deps): update github/codeql-action action (v4.30.7 → v4.30.8) (#18)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-12 00:52:44 +00:00
666d124c90 Merge pull request #15 from ivuorinen/renovate/github-codeql-action-4.x 2025-10-10 19:54:46 +03:00
fc5271ce5d Merge pull request #17 from ivuorinen/renovate/ivuorinen-actions-25.x 2025-10-10 08:54:21 +03:00
renovate[bot]
6ae587666f chore(deps)!: update github/codeql-action (v3.30.7 → v4.30.7)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 00:38:10 +00:00
renovate[bot]
8509167c44 chore(deps): update ivuorinen/actions action (25.10.1 → 25.10.7)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 00:38:01 +00:00
renovate[bot]
347c971069 chore(deps): update github/codeql-action action (v3.30.6 → v3.30.7) (#16)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 00:37:35 +00:00
renovate[bot]
f8b2d53eab chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.473 → 3.2.474) (#14)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 02:12:42 +00:00
50659f5050 Merge pull request #13 from ivuorinen/renovate/github-codeql-action-3.x 2025-10-04 16:54:07 +03:00
renovate[bot]
5d96917cce chore(deps): update github/codeql-action action (v3.30.5 → v3.30.6)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 10:00:33 +00:00
2d4e7bcfcc Merge pull request #12 from ivuorinen/renovate/renovatebot-pre-commit-hooks-41.x 2025-10-03 12:59:48 +03:00
renovate[bot]
792fcd359e chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (41.99.1 → 41.132.5)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 08:29:49 +00:00
renovate[bot]
d5a592209c chore(deps): update ivuorinen/actions action (25.9.21 → 25.10.1) (#11)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 08:29:22 +00:00
renovate[bot]
28f0d1aebe chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.471 → 3.2.473) (#10)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 02:12:18 +00:00
renovate[bot]
72d4c5afc3 chore(deps): update pre-commit hook johnnymorganz/stylua (v2.2.0 → v2.3.0) (#9)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 10:51:42 +00:00
renovate[bot]
3c933e0958 chore(deps): update github/codeql-action action (v3.30.3 → v3.30.5) (#8)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-28 01:46:41 +00:00
renovate[bot]
ffee191242 chore(deps): update ivuorinen/actions action (25.9.19 → 25.9.21) (#7)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-23 10:07:33 +00:00
renovate[bot]
e71380ff87 chore(deps): update ivuorinen/actions action (25.9.17 → 25.9.19) (#6)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-21 04:57:12 +00:00
renovate[bot]
6f8786f0c4 chore(deps): update pre-commit hook johnnymorganz/stylua (v2.1.0 → v2.2.0) (#5)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 09:39:45 +00:00
renovate[bot]
2e1f776deb chore(deps): update ivuorinen/actions action (25.8.31 → 25.9.17) (#4)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 04:28:30 +00:00
1c50141c32 Merge pull request #2 from ivuorinen/renovate/github-codeql-action-3.x 2025-09-18 00:52:11 +03:00
renovate[bot]
60bd670114 chore(deps): update github/codeql-action action (v3.30.1 → v3.30.3)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 21:48:03 +00:00
dfab7a9c32 Merge pull request #3 from ivuorinen/renovate/bridgecrewio-checkov-3.x 2025-09-18 00:46:59 +03:00
renovate[bot]
acc484f8fc chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.470 → 3.2.471)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-14 15:49:07 +00:00
f0f64d25cd chore: bump version to 2.0.2 2025-09-10 01:39:23 +03:00
5b9b4e4492 chore: fix formatting and linting issues 2025-09-10 01:39:13 +03:00
32e6ee3885 chore: sync version to 2.0.1 across all files 2025-09-10 01:38:36 +03:00
6009d8d83d feat: implement dynamic test generation and resolve pre-commit conflicts 2025-09-10 01:24:51 +03:00
13 changed files with 994 additions and 53 deletions

View File

@@ -1,46 +1,34 @@
--- ---
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: 'CodeQL' name: "CodeQL"
on: on:
push: push:
branches: ['main'] branches: ["main"]
pull_request: pull_request:
branches: ['main'] branches: ["main"]
schedule: schedule:
- cron: '30 1 * * 0' # Run at 1:30 AM UTC every Sunday - cron: "30 1 * * 0"
merge_group: merge_group:
permissions: permissions: {}
actions: read
contents: read
jobs: jobs:
analyze: analyze:
name: Analyze name: Analyze
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
actions: read
contents: read
packages: read
security-events: write security-events: write
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
language: ['javascript'] # Add languages used in your actions language: ["actions"]
steps: steps:
- name: Checkout repository - name: CodeQL Analysis
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: ivuorinen/actions/codeql-analysis@1da3a0e79fcd7da6bed9ee1979f1449ba11f58f9 # v2026.03.14
- name: Initialize CodeQL
uses: github/codeql-action/init@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.30.1
with: with:
languages: ${{ matrix.language }} language: ${{ matrix.language }}
queries: security-and-quality queries: security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.30.1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@f1f6e5f6af878fb37288ce1c627459e94dbf7d01 # v3.30.1
with:
category: '/language:${{matrix.language}}'

View File

@@ -27,4 +27,4 @@ jobs:
steps: steps:
- name: Run PR Lint - name: Run PR Lint
# https://github.com/ivuorinen/actions # https://github.com/ivuorinen/actions
uses: ivuorinen/actions/pr-lint@71b97baa7c71a55b48413309b86843b1b125e149 # 25.8.31 uses: ivuorinen/actions/pr-lint@1da3a0e79fcd7da6bed9ee1979f1449ba11f58f9 # v2026.03.14

View File

@@ -23,4 +23,4 @@ jobs:
issues: write issues: write
pull-requests: write pull-requests: write
steps: steps:
- uses: ivuorinen/actions/stale@71b97baa7c71a55b48413309b86843b1b125e149 # 25.8.31 - uses: ivuorinen/actions/stale@1da3a0e79fcd7da6bed9ee1979f1449ba11f58f9 # v2026.03.14

View File

@@ -34,8 +34,8 @@ jobs:
steps: steps:
- name: ⤵️ Checkout Repository - name: ⤵️ Checkout Repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
- name: ⤵️ Sync Latest Labels Definitions - name: ⤵️ Sync Latest Labels Definitions
uses: ivuorinen/actions/sync-labels@71b97baa7c71a55b48413309b86843b1b125e149 # 25.8.31 uses: ivuorinen/actions/sync-labels@1da3a0e79fcd7da6bed9ee1979f1449ba11f58f9 # v2026.03.14

View File

@@ -22,18 +22,18 @@ repos:
args: [--autofix, --no-sort-keys] args: [--autofix, --no-sort-keys]
- repo: https://github.com/JohnnyMorganz/StyLua - repo: https://github.com/JohnnyMorganz/StyLua
rev: v2.1.0 rev: v2.4.0
hooks: hooks:
- id: stylua-github # or stylua-system / stylua - id: stylua-github # or stylua-system / stylua
- repo: https://github.com/igorshubovych/markdownlint-cli - repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.45.0 rev: v0.48.0
hooks: hooks:
- id: markdownlint - id: markdownlint
args: [-c, .markdownlint.json, --fix] args: [-c, .markdownlint.json, --fix]
- repo: https://github.com/adrienverge/yamllint - repo: https://github.com/adrienverge/yamllint
rev: v1.37.1 rev: v1.38.0
hooks: hooks:
- id: yamllint - id: yamllint
@@ -49,18 +49,18 @@ repos:
args: ["--severity=warning"] args: ["--severity=warning"]
- repo: https://github.com/rhysd/actionlint - repo: https://github.com/rhysd/actionlint
rev: v1.7.7 rev: v1.7.11
hooks: hooks:
- id: actionlint - id: actionlint
args: ["-shellcheck="] args: ["-shellcheck="]
- repo: https://github.com/renovatebot/pre-commit-hooks - repo: https://github.com/renovatebot/pre-commit-hooks
rev: 41.99.1 rev: 43.76.2
hooks: hooks:
- id: renovate-config-validator - id: renovate-config-validator
- repo: https://github.com/bridgecrewio/checkov.git - repo: https://github.com/bridgecrewio/checkov.git
rev: "3.2.470" rev: "3.2.508"
hooks: hooks:
- id: checkov - id: checkov
args: args:

View File

@@ -0,0 +1,37 @@
# Development Commands
## Key Make Targets
- `make help` - Show all available targets with descriptions
- `make check` - Quick health check (tools and version consistency)
- `make test` - Run complete test suite
- `make lint` - Run all linters
- `make format` - Format all code (auto-fix where possible)
- `make ci` - Full CI pipeline (check, test, lint)
- `make clean` - Remove temporary files
- `make dev-setup` - Set up development environment
## Testing
- `make test-unit` - Lua unit tests only
- `make test-integration` - Integration tests
- `make test-golden` - Golden master tests
- `make test-bin` - Standalone formatter tests
- Test runner: `./tests/run_tests.sh`
## Linting
- Uses pre-commit hooks
- ShellCheck for shell scripts
- StyLua for Lua formatting
- markdownlint for Markdown
- yamllint for YAML files
- shfmt for shell script formatting
## Version Management
- Three files must stay in sync:
- `lua/shellspec/init.lua` (M._VERSION)
- `plugin/shellspec.vim` (g:shellspec_version)
- `bin/shellspec-format` (version string)
- `make version-check` verifies consistency

View File

@@ -0,0 +1,31 @@
# Release Process
## Command
Always use `make release` for releases, not manual version bumping.
## Available Release Commands
- `make release` - Interactive release with menu (patch/minor/major)
- `make release-patch` - Bump patch version (X.Y.Z → X.Y.Z+1)
- `make release-minor` - Bump minor version (X.Y.Z → X.Y+1.0)
- `make release-major` - Bump major version (X.Y.Z → X+1.0.0)
## What make release does
1. Checks git status is clean
2. Verifies version consistency across files
3. Runs complete test suite
4. Runs all linters
5. Calculates and prompts for new version
6. Updates versions in all files:
- `lua/shellspec/init.lua` - M._VERSION
- `plugin/shellspec.vim` - g:shellspec_version
- `bin/shellspec-format` - version string
7. Creates git commit with version bump
8. Creates git tag (with v prefix, e.g., v2.0.3)
9. Provides next steps for pushing
## Manual Process (DO NOT USE)
The old manual process was error-prone and didn't update all version files consistently.

290
Makefile Normal file
View File

@@ -0,0 +1,290 @@
# Makefile for nvim-shellspec
# Provides help, linting, testing, and release functionality
# Colors for output
RED := \033[0;31m
GREEN := \033[0;32m
YELLOW := \033[1;33m
BLUE := \033[0;34m
NC := \033[0m # No Color
# Version files
VERSION_LUA := lua/shellspec/init.lua
VERSION_VIM := plugin/shellspec.vim
VERSION_BIN := bin/shellspec-format
# Commands
MAKE := make
PRE_COMMIT := pre-commit
TEST_RUNNER := ./tests/run_tests.sh
# Default target
.PHONY: help
help: ## Display this help message
@echo "$(BLUE)nvim-shellspec Makefile$(NC)"
@echo "$(BLUE)==========================================$(NC)"
@echo ""
@echo "$(GREEN)Available targets:$(NC)"
@echo ""
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(YELLOW)%-20s$(NC) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo ""
@echo "$(GREEN)Current versions:$(NC)"
@$(MAKE) --no-print-directory version-check
@echo ""
@echo "$(GREEN)Usage examples:$(NC)"
@echo " $(YELLOW)make test$(NC) # Run all tests"
@echo " $(YELLOW)make lint$(NC) # Run all linters"
@echo " $(YELLOW)make release-patch$(NC) # Bump patch version and create tag"
@echo ""
.PHONY: check
check: ## Quick health check (verify tools and version consistency)
@echo "$(BLUE)Running health check...$(NC)"
@echo ""
@echo "$(GREEN)Checking required tools:$(NC)"
@which pre-commit >/dev/null 2>&1 && echo " ✓ pre-commit found" || echo " $(RED)✗ pre-commit not found$(NC)"
@which git >/dev/null 2>&1 && echo " ✓ git found" || echo " $(RED)✗ git not found$(NC)"
@which bash >/dev/null 2>&1 && echo " ✓ bash found" || echo " $(RED)✗ bash not found$(NC)"
@test -f $(TEST_RUNNER) && echo " ✓ test runner found" || echo " $(RED)✗ test runner not found$(NC)"
@echo ""
@echo "$(GREEN)Version consistency:$(NC)"
@$(MAKE) --no-print-directory version-check
@echo ""
.PHONY: version
version: version-check ## Display current versions
.PHONY: version-check
version-check: ## Check version consistency across files
@echo "$(GREEN)Version information:$(NC)"
@lua_version=$$(grep '_VERSION = ' $(VERSION_LUA) | sed 's/.*"\(.*\)".*/\1/'); \
vim_version=$$(grep "g:shellspec_version = " $(VERSION_VIM) | sed "s/.*'\(.*\)'.*/\1/"); \
bin_version=$$(grep 'echo "shellspec-format ' $(VERSION_BIN) | sed 's/.*shellspec-format \([0-9.]*\).*/\1/'); \
echo " Lua module: $$lua_version"; \
echo " VimScript: $$vim_version"; \
echo " Binary script: $$bin_version"; \
if [ "$$lua_version" = "$$vim_version" ] && [ "$$vim_version" = "$$bin_version" ]; then \
echo " $(GREEN)✓ All versions match$(NC)"; \
else \
echo " $(RED)✗ Version mismatch detected$(NC)"; \
exit 1; \
fi
# Linting targets
.PHONY: lint
lint: ## Run all linters
@echo "$(BLUE)Running all linters...$(NC)"
$(PRE_COMMIT) run --all-files
.PHONY: lint-fix
lint-fix: format ## Run linters with auto-fix (alias for format)
.PHONY: format
format: ## Format all code (auto-fix where possible)
@echo "$(BLUE)Formatting all code...$(NC)"
$(PRE_COMMIT) run --all-files
.PHONY: lint-lua
lint-lua: ## Format Lua code with StyLua
@echo "$(BLUE)Formatting Lua code...$(NC)"
$(PRE_COMMIT) run stylua-github --all-files
.PHONY: lint-shell
lint-shell: ## Lint shell scripts with ShellCheck and format with shfmt
@echo "$(BLUE)Linting shell scripts...$(NC)"
$(PRE_COMMIT) run shellcheck --all-files
$(PRE_COMMIT) run shfmt --all-files
.PHONY: lint-markdown
lint-markdown: ## Lint and format Markdown files
@echo "$(BLUE)Linting Markdown files...$(NC)"
$(PRE_COMMIT) run markdownlint --all-files
.PHONY: lint-yaml
lint-yaml: ## Lint YAML files
@echo "$(BLUE)Linting YAML files...$(NC)"
$(PRE_COMMIT) run yamllint --all-files
# Testing targets
.PHONY: test
test: ## Run complete test suite
@echo "$(BLUE)Running complete test suite...$(NC)"
$(TEST_RUNNER)
.PHONY: test-unit
test-unit: ## Run only Lua unit tests
@echo "$(BLUE)Running unit tests...$(NC)"
cd tests && timeout 30 nvim --headless -u NONE -c "set rtp+=.." -c "luafile format_spec.lua" -c "quit"
.PHONY: test-integration
test-integration: ## Run integration tests
@echo "$(BLUE)Running integration tests...$(NC)"
cd tests && timeout 30 ./integration_test.sh
.PHONY: test-golden
test-golden: ## Run golden master tests
@echo "$(BLUE)Running golden master tests...$(NC)"
cd tests && timeout 30 ./golden_master_test.sh
.PHONY: test-bin
test-bin: ## Run standalone formatter tests
@echo "$(BLUE)Running standalone formatter tests...$(NC)"
cd tests && ./bin_format_spec.sh
# Release targets
.PHONY: release
release: ## Interactive release (prompts for version type)
@echo "$(BLUE)Interactive Release$(NC)"
@echo ""
@echo "Select release type:"
@echo " 1) $(GREEN)patch$(NC) (2.0.0 → 2.0.1) - Bug fixes"
@echo " 2) $(YELLOW)minor$(NC) (2.0.0 → 2.1.0) - New features"
@echo " 3) $(RED)major$(NC) (2.0.0 → 3.0.0) - Breaking changes"
@echo ""
@read -p "Enter choice (1-3): " choice; \
case $$choice in \
1) $(MAKE) release-patch ;; \
2) $(MAKE) release-minor ;; \
3) $(MAKE) release-major ;; \
*) echo "$(RED)Invalid choice$(NC)"; exit 1 ;; \
esac
.PHONY: release-patch
release-patch: ## Bump patch version (X.Y.Z → X.Y.Z+1)
@$(MAKE) --no-print-directory _release TYPE=patch
.PHONY: release-minor
release-minor: ## Bump minor version (X.Y.Z → X.Y+1.0)
@$(MAKE) --no-print-directory _release TYPE=minor
.PHONY: release-major
release-major: ## Bump major version (X.Y.Z → X+1.0.0)
@$(MAKE) --no-print-directory _release TYPE=major
.PHONY: _release
_release: ## Internal release target (use release-* targets instead)
@if [ "$(TYPE)" = "" ]; then echo "$(RED)Error: TYPE not specified$(NC)"; exit 1; fi
@echo "$(BLUE)Starting $(TYPE) release...$(NC)"
@echo ""
# Check git status
@echo "$(GREEN)Checking git status...$(NC)"
@if [ -n "$$(git status --porcelain)" ]; then \
echo "$(RED)Error: Working directory not clean$(NC)"; \
git status --short; \
exit 1; \
fi
@echo " ✓ Working directory is clean"
# Check version consistency
@echo ""
@echo "$(GREEN)Checking version consistency...$(NC)"
@$(MAKE) --no-print-directory version-check
# Run tests
@echo ""
@echo "$(GREEN)Running tests...$(NC)"
@$(MAKE) --no-print-directory test
# Run linters
@echo ""
@echo "$(GREEN)Running linters...$(NC)"
@$(MAKE) --no-print-directory lint
# Calculate new version
@echo ""
@echo "$(GREEN)Calculating new version...$(NC)"
@current_version=$$(grep '_VERSION = ' $(VERSION_LUA) | sed 's/.*"\(.*\)".*/\1/'); \
echo " Current version: $$current_version"; \
new_version=$$(echo "$$current_version" | awk -F. -v type=$(TYPE) '{ \
if (type == "major") printf "%d.0.0", $$1+1; \
else if (type == "minor") printf "%d.%d.0", $$1, $$2+1; \
else if (type == "patch") printf "%d.%d.%d", $$1, $$2, $$3+1; \
}'); \
echo " New version: $$new_version"; \
echo ""; \
read -p "Continue with release? (y/N): " confirm; \
if [ "$$confirm" != "y" ] && [ "$$confirm" != "Y" ]; then \
echo "$(YELLOW)Release cancelled$(NC)"; \
exit 1; \
fi; \
echo ""; \
echo "$(GREEN)Updating version in files...$(NC)"; \
sed -i.bak "s/M._VERSION = \".*\"/M._VERSION = \"$$new_version\"/" $(VERSION_LUA) && rm $(VERSION_LUA).bak; \
sed -i.bak "s/let g:shellspec_version = '.*'/let g:shellspec_version = '$$new_version'/" $(VERSION_VIM) && rm $(VERSION_VIM).bak; \
sed -i.bak "s/shellspec-format [0-9.]*/shellspec-format $$new_version/" $(VERSION_BIN) && rm $(VERSION_BIN).bak; \
echo " ✓ Updated $(VERSION_LUA)"; \
echo " ✓ Updated $(VERSION_VIM)"; \
echo " ✓ Updated $(VERSION_BIN)"; \
echo ""; \
echo "$(GREEN)Creating git commit...$(NC)"; \
git add $(VERSION_LUA) $(VERSION_VIM) $(VERSION_BIN); \
git commit -m "chore: bump version to $$new_version"; \
echo " ✓ Created commit"; \
echo ""; \
echo "$(GREEN)Creating git tag...$(NC)"; \
git tag -a "v$$new_version" -m "Release version $$new_version"; \
echo " ✓ Created tag v$$new_version"; \
echo ""; \
echo "$(GREEN)$(TYPE) release completed successfully!$(NC)"; \
echo ""; \
echo "$(BLUE)Next steps:$(NC)"; \
echo " 1. Review the changes: $(YELLOW)git show$(NC)"; \
echo " 2. Push the release: $(YELLOW)git push origin main --tags$(NC)"; \
echo " 3. Create GitHub release from tag v$$new_version"; \
echo ""
# Utility targets
.PHONY: clean
clean: ## Remove temporary files and test artifacts
@echo "$(BLUE)Cleaning temporary files...$(NC)"
find . -name "*.bak" -delete
find . -name "*.tmp" -delete
find /tmp -name "*shellspec*" -delete 2>/dev/null || true
find /var/folders -name "*shellspec*" -delete 2>/dev/null || true
@echo " ✓ Cleaned temporary files"
.PHONY: install
install: ## Install pre-commit hooks
@echo "$(BLUE)Installing pre-commit hooks...$(NC)"
$(PRE_COMMIT) install
@echo " ✓ Pre-commit hooks installed"
# Development convenience targets
.PHONY: dev-setup
dev-setup: install ## Set up development environment
@echo "$(BLUE)Setting up development environment...$(NC)"
@$(MAKE) --no-print-directory check
@echo ""
@echo "$(GREEN)Development environment ready!$(NC)"
.PHONY: ci
ci: check test lint ## Run CI pipeline (check, test, lint)
@echo ""
@echo "$(GREEN)CI pipeline completed successfully!$(NC)"
# Debug targets
.PHONY: debug
debug: ## Show debug information
@echo "$(BLUE)Debug Information$(NC)"
@echo "$(BLUE)==================$(NC)"
@echo ""
@echo "$(GREEN)Environment:$(NC)"
@echo " PWD: $(PWD)"
@echo " SHELL: $(SHELL)"
@echo " MAKE: $(MAKE)"
@echo ""
@echo "$(GREEN)Git status:$(NC)"
@git status --short || echo " Not in git repository"
@echo ""
@echo "$(GREEN)Tools:$(NC)"
@echo " pre-commit: $$(which pre-commit || echo 'not found')"
@echo " git: $$(which git || echo 'not found')"
@echo " nvim: $$(which nvim || echo 'not found')"
@echo ""
@$(MAKE) --no-print-directory version-check
# Ensure all targets are PHONY (no file dependencies)
.PHONY: _release help check version version-check lint lint-fix format lint-lua lint-shell lint-markdown lint-yaml
.PHONY: test test-unit test-integration test-golden test-bin release release-patch release-minor release-major
.PHONY: clean install dev-setup ci debug

View File

@@ -1,46 +1,305 @@
#!/bin/bash #!/bin/bash
# Standalone ShellSpec DSL formatter # Enhanced ShellSpec DSL formatter with HEREDOC and comment support
# Matches functionality from the nvim-shellspec plugin
set -e
# Default configuration
INDENT_SIZE=2
USE_SPACES=1
INDENT_COMMENTS=1
DEBUG=0
# State constants
STATE_NORMAL=1
STATE_HEREDOC=2
# Usage information
usage() {
cat <<'EOF'
Usage: shellspec-format 2.0.2[OPTIONS] [FILE...]
Enhanced ShellSpec DSL formatter with HEREDOC preservation and smart comment indentation.
OPTIONS:
-h, --help Show this help message
-s, --indent-size SIZE Set indentation size (default: 2)
-t, --tabs Use tabs instead of spaces
-n, --no-comment-indent Don't indent comments
-d, --debug Enable debug output
-v, --version Show version information
If no files are specified, reads from stdin and writes to stdout.
If files are specified, formats them in place.
EXAMPLES:
shellspec-format 2.0.2< input.spec.sh > output.spec.sh
shellspec-format 2.0.2file1.spec.sh file2.spec.sh
cat file.spec.sh | shellspec-format 2.0.2--indent-size 4 --tabs
EOF
}
version() {
echo "shellspec-format 2.0.2"
echo "Part of nvim-shellspec plugin"
}
# Debug logging
debug_log() {
if [[ $DEBUG -eq 1 ]]; then
echo "DEBUG: $*" >&2
fi
}
# Detect HEREDOC start and return delimiter
detect_heredoc_start() {
local line="$1"
local trimmed
trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
# Check for various HEREDOC patterns
local patterns=(
"<<([A-Z_][A-Z0-9_]*)"
"<<'([^']*)'"
"<<\"([^\"]*)\""
"<<-([A-Z_][A-Z0-9_]*)"
)
for pattern in "${patterns[@]}"; do
if [[ $trimmed =~ $pattern ]]; then
echo "${BASH_REMATCH[1]}"
return 0
fi
done
return 1
}
# Check if line ends a HEREDOC
is_heredoc_end() {
local line="$1"
local delimiter="$2"
local trimmed
trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
[[ -n "$delimiter" && "$trimmed" == "$delimiter" ]]
}
# Check if line is a ShellSpec block keyword
is_block_keyword() {
local line="$1"
local trimmed
trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
debug_log "Checking if block keyword: '$trimmed'"
# Standard block keywords
if [[ $trimmed =~ ^(Describe|Context|ExampleGroup|It|Specify|Example)[[:space:]] ]]; then
debug_log "Matched standard block keyword: '$trimmed'"
return 0
fi
# Prefixed block keywords (x for skip, f for focus)
if [[ $trimmed =~ ^[xf](Describe|Context|ExampleGroup|It|Specify|Example)[[:space:]] ]]; then
debug_log "Matched prefixed block keyword: '$trimmed'"
return 0
fi
# Data and Parameters blocks
if [[ $trimmed =~ ^(Data|Parameters)[[:space:]]*$ ]]; then
debug_log "Matched data/parameters block: '$trimmed'"
return 0
fi
# Hook keywords that create blocks (can be standalone)
if [[ $trimmed =~ ^(BeforeEach|AfterEach|BeforeAll|AfterAll|Before|After)[[:space:]]*$ ]]; then
debug_log "Matched hook keyword: '$trimmed'"
return 0
fi
# Additional hook keywords (can be standalone)
if [[ $trimmed =~ ^(BeforeCall|AfterCall|BeforeRun|AfterRun)[[:space:]]*$ ]]; then
debug_log "Matched additional hook keyword: '$trimmed'"
return 0
fi
debug_log "Not a block keyword: '$trimmed'"
return 1
}
# Check if line is an End keyword
is_end_keyword() {
local line="$1"
local trimmed
trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
[[ $trimmed =~ ^End[[:space:]]*$ ]]
}
# Check if line is a comment
is_comment() {
local line="$1"
local trimmed
trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
[[ $trimmed =~ ^# ]]
}
# Generate indentation string
make_indent() {
local level="$1"
local total_indent=$((level * INDENT_SIZE))
if [[ $USE_SPACES -eq 1 ]]; then
printf "%*s" $total_indent ""
else
printf "%*s" $level "" | tr ' ' '\t'
fi
}
# Main formatting function
format_shellspec() { format_shellspec() {
local indent=0 local indent_level=0
local state=$STATE_NORMAL
local heredoc_delimiter=""
local line local line
while IFS= read -r line; do while IFS= read -r line; do
local trimmed local trimmed
trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') trimmed=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
# Skip empty lines and comments # Handle empty lines
if [[ -z "$trimmed" || "$trimmed" =~ ^# ]]; then if [[ -z "$trimmed" ]]; then
echo "$line" echo "$line"
continue continue
fi fi
# Decrease indent for End # State machine for HEREDOC handling
if [[ "$trimmed" =~ ^End[[:space:]]*$ ]]; then case $state in
((indent > 0)) && ((indent--)) "$STATE_NORMAL")
fi # Check for HEREDOC start
if heredoc_delimiter=$(detect_heredoc_start "$line"); then
state=$STATE_HEREDOC
debug_log "HEREDOC start detected: '$heredoc_delimiter'"
# Apply current indentation to HEREDOC start line
printf "%s%s\n" "$(make_indent $indent_level)" "$trimmed"
continue
fi
# Apply indentation # Handle End keyword (decrease indent first)
printf "%*s%s\n" $((indent * 2)) "" "$trimmed" if is_end_keyword "$line"; then
((indent_level > 0)) && ((indent_level--))
printf "%s%s\n" "$(make_indent $indent_level)" "$trimmed"
continue
fi
# Increase indent after block keywords # Handle comments
if [[ "$trimmed" =~ ^(Describe|Context|ExampleGroup|It|Specify|Example) ]] || if is_comment "$line"; then
[[ "$trimmed" =~ ^[xf](Describe|Context|ExampleGroup|It|Specify|Example) ]] || if [[ $INDENT_COMMENTS -eq 1 ]]; then
[[ "$trimmed" =~ ^(Data|Parameters)[[:space:]]*$ ]]; then printf "%s%s\n" "$(make_indent $indent_level)" "$trimmed"
((indent++)) else
fi # Preserve original comment formatting
echo "$line"
fi
continue
fi
# Handle non-comment lines (ShellSpec commands, etc.)
printf "%s%s\n" "$(make_indent $indent_level)" "$trimmed"
# Increase indent after block keywords
if is_block_keyword "$line"; then
((indent_level++))
debug_log "Block keyword detected: '$trimmed', new indent: $indent_level"
fi
;;
"$STATE_HEREDOC")
# Check for HEREDOC end
if is_heredoc_end "$line" "$heredoc_delimiter"; then
state=$STATE_NORMAL
debug_log "HEREDOC end detected: '$heredoc_delimiter'"
# Apply current indentation to HEREDOC end line
printf "%s%s\n" "$(make_indent $indent_level)" "$trimmed"
heredoc_delimiter=""
else
# Preserve original indentation within HEREDOC
echo "$line"
fi
;;
esac
done done
} }
# Parse command line options
while [[ $# -gt 0 ]]; do
case $1 in
-h | --help)
usage
exit 0
;;
-v | --version)
version
exit 0
;;
-s | --indent-size)
INDENT_SIZE="$2"
if ! [[ $INDENT_SIZE =~ ^[0-9]+$ ]] || [[ $INDENT_SIZE -lt 1 ]]; then
echo "Error: indent-size must be a positive integer" >&2
exit 1
fi
shift 2
;;
-t | --tabs)
USE_SPACES=0
shift
;;
-n | --no-comment-indent)
INDENT_COMMENTS=0
shift
;;
-d | --debug)
DEBUG=1
shift
;;
--)
shift
break
;;
-*)
echo "Error: Unknown option $1" >&2
echo "Use --help for usage information" >&2
exit 1
;;
*)
break
;;
esac
done
# Main execution # Main execution
if [[ $# -eq 0 ]]; then if [[ $# -eq 0 ]]; then
# Read from stdin, write to stdout
debug_log "Reading from stdin"
format_shellspec format_shellspec
else else
# Process files in place
for file in "$@"; do for file in "$@"; do
if [[ -f "$file" ]]; then if [[ -f "$file" ]]; then
format_shellspec <"$file" >"${file}.tmp" && mv "${file}.tmp" "$file" debug_log "Processing file: $file"
temp_file=$(mktemp)
if format_shellspec <"$file" >"$temp_file"; then
mv "$temp_file" "$file"
debug_log "Successfully formatted: $file"
else
rm -f "$temp_file"
echo "Error: Failed to format $file" >&2
exit 1
fi
else else
echo "Error: File not found: $file" >&2 echo "Error: File not found: $file" >&2
exit 1
fi fi
done done
fi fi

View File

@@ -7,7 +7,7 @@ local format = require("shellspec.format")
local autocmds = require("shellspec.autocmds") local autocmds = require("shellspec.autocmds")
-- Version info -- Version info
M._VERSION = "2.0.0" M._VERSION = "2.0.2"
-- Setup function for Lua configuration -- Setup function for Lua configuration
function M.setup(opts) function M.setup(opts)

View File

@@ -8,6 +8,9 @@ if exists('g:loaded_shellspec')
endif endif
let g:loaded_shellspec = 1 let g:loaded_shellspec = 1
" Version information
let g:shellspec_version = '2.0.2'
" Detect Neovim and use appropriate implementation " Detect Neovim and use appropriate implementation
if has('nvim-0.7') if has('nvim-0.7')
" Use modern Neovim Lua implementation " Use modern Neovim Lua implementation

323
tests/bin_format_spec.sh Executable file
View File

@@ -0,0 +1,323 @@
#!/bin/bash
# Unit tests for bin/shellspec-format standalone formatter
# Tests the CLI formatter against the same test cases used for Lua implementation
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Test counters
TESTS_PASSED=0
TESTS_FAILED=0
# Get the script directory and project root
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
FORMATTER="$PROJECT_ROOT/bin/shellspec-format"
# Helper functions
print_test() {
echo -e "${YELLOW}[BIN-TEST]${NC} $1"
# Force flush
exec 1>&1
}
print_pass() {
echo -e "${GREEN}[PASS]${NC} $1"
((TESTS_PASSED++))
# Force flush
exec 1>&1
}
print_fail() {
echo -e "${RED}[FAIL]${NC} $1"
((TESTS_FAILED++))
# Force flush
exec 1>&1
}
print_summary() {
echo ""
echo "Standalone Formatter Test Results:"
echo " Passed: $TESTS_PASSED"
echo " Failed: $TESTS_FAILED"
echo " Total: $((TESTS_PASSED + TESTS_FAILED))"
if [ $TESTS_FAILED -gt 0 ]; then
echo -e "${RED}Some standalone formatter tests failed!${NC}"
exit 1
else
echo -e "${GREEN}All standalone formatter tests passed!${NC}"
fi
}
# Function to run a formatting test
run_format_test() {
local test_name="$1"
local input_content="$2"
local expected_content="$3"
print_test "Testing $test_name"
# Create temporary files
local input_file
local expected_file
local actual_file
input_file=$(mktemp -t "bin_format_input_XXXXXX.spec.sh")
expected_file=$(mktemp -t "bin_format_expected_XXXXXX.spec.sh")
actual_file=$(mktemp -t "bin_format_actual_XXXXXX.spec.sh")
# Debug: Show what we're testing
if [[ -n "${DEBUG:-}" ]]; then
echo " Input file: $input_file"
echo " Expected file: $expected_file"
echo " Actual file: $actual_file"
fi
# Write test data to files
printf "%s\n" "$input_content" >"$input_file"
printf "%s\n" "$expected_content" >"$expected_file"
# Format using the standalone formatter
if timeout 10 "$FORMATTER" <"$input_file" >"$actual_file" 2>/dev/null; then
# Compare with expected output
if diff -u "$expected_file" "$actual_file" >/dev/null; then
print_pass "$test_name formatting matches expected output"
else
print_fail "$test_name formatting does not match expected output"
echo "Expected:"
cat "$expected_file"
echo ""
echo "Actual:"
cat "$actual_file"
echo ""
echo "Diff:"
diff -u "$expected_file" "$actual_file" || true
echo ""
fi
else
print_fail "$test_name formatting command failed"
fi
# Clean up
rm -f "$input_file" "$expected_file" "$actual_file"
}
# Function to test CLI options
test_cli_options() {
local test_name="$1"
local options="$2"
local input_content="$3"
local expected_content="$4"
print_test "Testing $test_name"
# Create temporary files
local input_file
local expected_file
local actual_file
input_file=$(mktemp -t "bin_format_cli_input_XXXXXX.spec.sh")
expected_file=$(mktemp -t "bin_format_cli_expected_XXXXXX.spec.sh")
actual_file=$(mktemp -t "bin_format_cli_actual_XXXXXX.spec.sh")
# Write test data to files
printf "%s\n" "$input_content" >"$input_file"
printf "%s\n" "$expected_content" >"$expected_file"
# Format using the standalone formatter with options
if timeout 10 bash -c "$FORMATTER $options < '$input_file' > '$actual_file'" 2>/dev/null; then
# Compare with expected output
if diff -u "$expected_file" "$actual_file" >/dev/null; then
print_pass "$test_name formatting with options matches expected output"
else
print_fail "$test_name formatting with options does not match expected output"
echo "Options: $options"
echo "Expected:"
cat "$expected_file"
echo ""
echo "Actual:"
cat "$actual_file"
echo ""
echo "Diff:"
diff -u "$expected_file" "$actual_file" || true
echo ""
fi
else
print_fail "$test_name formatting command with options failed"
fi
# Clean up
rm -f "$input_file" "$expected_file" "$actual_file"
}
echo "Running bin/shellspec-format standalone formatter tests..."
echo "Project root: $PROJECT_ROOT"
echo "Formatter: $FORMATTER"
echo ""
# Verify formatter exists and is executable
if [[ ! -x "$FORMATTER" ]]; then
echo -e "${RED}Error: Formatter not found or not executable: $FORMATTER${NC}"
exit 1
fi
# Test 1: Basic block indentation (ported from format_spec.lua)
input1='Describe "test"
It "should work"
End
End'
expected1='Describe "test"
It "should work"
End
End'
run_format_test "Basic block indentation" "$input1" "$expected1"
# Test 2: Comment indentation (ported from format_spec.lua)
input2='Describe "test"
# Comment at Describe level
It "should work"
# Comment at It level
When call echo "test"
End
End'
expected2='Describe "test"
# Comment at Describe level
It "should work"
# Comment at It level
When call echo "test"
End
End'
run_format_test "Comment indentation" "$input2" "$expected2"
# Test 3: HEREDOC preservation (ported from format_spec.lua)
run_format_test \
"HEREDOC preservation" \
'Describe "test"
It "handles heredoc"
When call cat <<EOF
This should be preserved
Even nested
EOF
The output should include "test"
End
End' \
'Describe "test"
It "handles heredoc"
When call cat <<EOF
This should be preserved
Even nested
EOF
The output should include "test"
End
End'
# Test 4: Nested contexts (ported from format_spec.lua)
run_format_test \
"Nested contexts" \
'Describe "outer"
Context "when something"
It "should work"
When call echo "test"
The output should equal "test"
End
End
End' \
'Describe "outer"
Context "when something"
It "should work"
When call echo "test"
The output should equal "test"
End
End
End'
# Test 5: Hook keywords (ported from format_spec.lua)
run_format_test \
"Hook keywords" \
'Describe "test"
BeforeEach
setup_test
End
It "works"
When call test_function
End
End' \
'Describe "test"
BeforeEach
setup_test
End
It "works"
When call test_function
End
End'
# CLI-specific tests
# Test 6: Custom indent size
test_cli_options \
"Custom indent size (4 spaces)" \
"--indent-size 4" \
'Describe "test"
It "should work"
End
End' \
'Describe "test"
It "should work"
End
End'
# Test 7: Tab indentation
input7='Describe "test"
It "should work"
End
End'
expected7='Describe "test"'$'\n\t''It "should work"'$'\n\t''End'$'\n''End'
test_cli_options "Tab indentation" "--tabs" "$input7" "$expected7"
# Test 8: No comment indentation
test_cli_options \
"No comment indentation" \
"--no-comment-indent" \
'Describe "test"
# Top level comment
It "should work"
# Nested comment
End
End' \
'Describe "test"
# Top level comment
It "should work"
# Nested comment
End
End'
# Test 9: Complex combination - tabs with custom indent size
input9='Describe "test"
Context "nested"
It "should work"
End
End
End'
expected9='Describe "test"'$'\n\t''Context "nested"'$'\n\t\t''It "should work"'$'\n\t\t''End'$'\n\t''End'$'\n''End'
test_cli_options "Tabs with custom indent size" "--tabs --indent-size 1" "$input9" "$expected9"
# Test error handling
print_test "Testing error handling - invalid indent size"
if timeout 5 echo 'test' | "$FORMATTER" --indent-size 0 >/dev/null 2>&1; then
print_fail "Should have failed with invalid indent size"
else
print_pass "Correctly rejected invalid indent size"
fi
print_test "Testing error handling - unknown option"
if timeout 5 echo 'test' | "$FORMATTER" --unknown-option >/dev/null 2>&1; then
print_fail "Should have failed with unknown option"
else
print_pass "Correctly rejected unknown option"
fi
print_summary

View File

@@ -15,6 +15,7 @@ NC='\033[0m' # No Color
UNIT_PASSED=false UNIT_PASSED=false
INTEGRATION_PASSED=false INTEGRATION_PASSED=false
GOLDEN_PASSED=false GOLDEN_PASSED=false
BIN_FORMAT_PASSED=false
# Get the script directory and project root # Get the script directory and project root
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -110,6 +111,9 @@ echo ""
echo -e "${BLUE}----------------------------------------${NC}" echo -e "${BLUE}----------------------------------------${NC}"
echo "" echo ""
# Run bin formatter tests
run_test_suite "Standalone Formatter Tests" "script" "./tests/bin_format_spec.sh" BIN_FORMAT_PASSED
# Summary # Summary
echo -e "${BLUE}========================================${NC}" echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE} Test Results Summary ${NC}" echo -e "${BLUE} Test Results Summary ${NC}"
@@ -134,10 +138,16 @@ else
echo -e "${RED}✗ Golden Master Tests: FAILED${NC}" echo -e "${RED}✗ Golden Master Tests: FAILED${NC}"
fi fi
if [ "$BIN_FORMAT_PASSED" = true ]; then
echo -e "${GREEN}✓ Standalone Formatter Tests: PASSED${NC}"
else
echo -e "${RED}✗ Standalone Formatter Tests: FAILED${NC}"
fi
echo "" echo ""
# Overall result # Overall result
if [ "$UNIT_PASSED" = true ] && [ "$INTEGRATION_PASSED" = true ] && [ "$GOLDEN_PASSED" = true ]; then if [ "$UNIT_PASSED" = true ] && [ "$INTEGRATION_PASSED" = true ] && [ "$GOLDEN_PASSED" = true ] && [ "$BIN_FORMAT_PASSED" = true ]; then
echo -e "${GREEN}🎉 ALL TESTS COMPLETED SUCCESSFULLY! 🎉${NC}" echo -e "${GREEN}🎉 ALL TESTS COMPLETED SUCCESSFULLY! 🎉${NC}"
echo "" echo ""
echo -e "${GREEN}The nvim-shellspec plugin is ready for use!${NC}" echo -e "${GREEN}The nvim-shellspec plugin is ready for use!${NC}"