diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b212b61..896d6e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,11 +34,9 @@ jobs: - name: ๐Ÿ“ฆ Install dependencies run: pnpm install --frozen-lockfile - - name: ๐Ÿงน Lint and format - run: pnpm rr jsc - - - name: ๐Ÿ” Check types - run: pnpm astro check + # Biome's format and lint, then astro check's types. + - name: ๐Ÿ” Check + run: pnpm rr check - name: ๐Ÿ—๏ธ Build site run: pnpm astro build diff --git a/README.md b/README.md index 37d789e..2a43bc1 100644 --- a/README.md +++ b/README.md @@ -63,8 +63,8 @@ Deployed with [Workers Builds](https://developers.cloudflare.com/workers/ci-cd/b mise install pnpm install astro dev # the site, rebuilt as you edit -rr jsc # format and lint with Biome; rr jsc --fix applies the fixes -astro check # types: .astro, .ts and the content schema +rr check # format and lint with Biome, then types with astro check +rr jsc --fix # applies Biome's fixes astro build # the site, into dist/ wrangler dev # dist/, served as the Worker serves it wrangler deploy --dry-run @@ -72,8 +72,8 @@ wrangler deploy --dry-run In a shell where mise isn't activated, run them as `mise exec -- `. -`astro check` is the type check: `rr check` stops at its type-check step, because rr has no plugin for Astro. +`rr check` runs Biome, then `astro check` through `@rrlab/astro-plugin`, which type-checks `.astro` files, `.ts` files and the content schema. `rr tsc` runs only the type check. -CI runs `pnpm rr jsc`, `pnpm astro check` and `pnpm astro build` on each pull request to `main`. It calls the tools through pnpm because mise's GitHub Action puts only mise's shims on the PATH, not `mise.toml`'s `[env]`. +CI runs `pnpm rr check` and `pnpm astro build` on each pull request to `main`. It calls the tools through pnpm because mise's GitHub Action puts only mise's shims on the PATH, not `mise.toml`'s `[env]`. A weekly workflow runs `pnpm audit` on `pnpm-lock.yaml` and keeps an issue labeled `dependency-audit` open while it finds known vulnerabilities. Dependabot opens pull requests for security updates only, never for version updates. diff --git a/docs/content.md b/docs/content.md index 883203f..0276c09 100644 --- a/docs/content.md +++ b/docs/content.md @@ -27,7 +27,7 @@ Keeper: | class | App | | sign | `M2 2h12v8h8v12H10v-8H2V2z` | | tagline | `One way to run the scripts in a repo.` | -| body | `Every tool is a plugin you add: Biome, oxc, tsc or tsdown. The commands stay the same in every repo.` | +| body | `Every tool is a plugin you add. The commands stay the same in every repo.` | | installCommand | `pnpm add -D @rrlab/cli` | | executable | `rr` | | package | `@rrlab/cli` | @@ -35,7 +35,7 @@ Keeper: | repository | `https://github.com/withvariablelab/dx/tree/main/run-run/cli` | | links | `CLI reference` โ†’ `https://github.com/withvariablelab/dx/blob/main/run-run/cli/CLI.md`; `GitHub` โ†’ the repository | | closingLine | `Ships no Biome or TypeScript. Each plugin installs its tool.` | -| description | `One way to run the scripts in a repo. Every tool is a plugin you add: Biome, oxc, tsc or tsdown.` | +| description | `One way to run the scripts in a repo. Every tool is a plugin you add.` | Example: one Terminal snippet. diff --git a/package.json b/package.json index 7c52a96..ffdfb71 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,10 @@ "@biomejs/biome": "2.5.15", "@fontsource/ibm-plex-mono": "5.3.0", "@fontsource/ibm-plex-sans": "5.3.0", + "@rrlab/astro-plugin": "^0.1.0", "@rrlab/biome-config": "0.0.3", "@rrlab/biome-plugin": "1.1.3", - "@rrlab/cli": "1.3.2", + "@rrlab/cli": "^1.5.0", "@types/node": "24.19.2", "@variablelab/brand": "0.3.0", "astro": "7.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 463b40d..1765b6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,15 +20,18 @@ importers: '@fontsource/ibm-plex-sans': specifier: 5.3.0 version: 5.3.0 + '@rrlab/astro-plugin': + specifier: ^0.1.0 + version: 0.1.0(@astrojs/check@0.9.10(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3))(@pnpm/logger@1001.0.1)(@rrlab/cli@1.5.0(@pnpm/logger@1001.0.1))(astro@7.4.0(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1))(typescript@6.0.3) '@rrlab/biome-config': specifier: 0.0.3 version: 0.0.3(@biomejs/biome@2.5.15) '@rrlab/biome-plugin': specifier: 1.1.3 - version: 1.1.3(@biomejs/biome@2.5.15)(@pnpm/logger@1001.0.1)(@rrlab/cli@1.3.2(@pnpm/logger@1001.0.1)) + version: 1.1.3(@biomejs/biome@2.5.15)(@pnpm/logger@1001.0.1)(@rrlab/cli@1.5.0(@pnpm/logger@1001.0.1)) '@rrlab/cli': - specifier: 1.3.2 - version: 1.3.2(@pnpm/logger@1001.0.1) + specifier: ^1.5.0 + version: 1.5.0(@pnpm/logger@1001.0.1) '@types/node': specifier: 24.19.2 version: 24.19.2 @@ -924,6 +927,15 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rrlab/astro-plugin@0.1.0': + resolution: {integrity: sha512-l0vMRX3M24+L6ZkHK914sZeT80a687I0Xa4KrmkSswICveHP1eKYLDvwo6ka4kuZzYA2CVO1zHP2jt9nZb3w3w==} + engines: {node: '>=22.18.0'} + peerDependencies: + '@astrojs/check': '>=0.9.0' + '@rrlab/cli': ^1.5.0 + astro: '>=5.0.0' + typescript: ^5.0.0 || ^6.0.0 + '@rrlab/biome-config@0.0.3': resolution: {integrity: sha512-WpB6f9Gg4/Rp9+FYvocWRaoP31yLw3MLOjBrpV4kxh2gdlXMhoyowO7xeeFhAphybv0Ctc7tsq7MaB9QmgLNKA==} peerDependencies: @@ -936,9 +948,9 @@ packages: '@biomejs/biome': '>=2.0.0' '@rrlab/cli': ^1.3.2 - '@rrlab/cli@1.3.2': - resolution: {integrity: sha512-aKF5KF7bID4gaz8uGkfK6yOCoxE6Nbdf982GJ24qwDYl8X02BD12HCR54J1a4JuzynQJanzQNuCXUIBy6wSCJw==} - engines: {node: '>=20.0.0'} + '@rrlab/cli@1.5.0': + resolution: {integrity: sha512-McellVZThJl8oP9KvRdFbvyBMulA/txl1aEFm7owJ06Ia/6rxLbvyMsikcDiUpT5cKcqpUPyBJvMt9+/pRDwiA==} + engines: {node: '>=22.18.0'} hasBin: true '@shikijs/core@4.5.0': @@ -1027,9 +1039,13 @@ packages: resolution: {integrity: sha512-DG18Hygr3y623IP7G4Fspgzjs2U8OyOHCtmfCf+Y10V23Jr6Ew50+RcoVtXFsYrisPm0BaM9r0LNV6tE2jAU0A==} engines: {node: '>=20.0.0'} - '@variablelab/loggy@0.2.2': - resolution: {integrity: sha512-uqIaSjnHEg2SxsJqyPQ2GgTN3LBozh2dLEP4n6saGvz1yMUZl9DWhhZ7Tty6M73A4I9inSle/y267qXueZtQMg==} - engines: {node: '>=20.0.0'} + '@variablelab/clibuddy@0.8.0': + resolution: {integrity: sha512-g46UDiJ+7vKIZQHpFwFU6pjFpToxdgaLXl8DGSOEvgC4aiDNfbUz5M2sOX11y+UKW0M1Tv324IR/OE8bUZrQ5w==} + engines: {node: '>=22.18.0'} + + '@variablelab/loggy@0.3.0': + resolution: {integrity: sha512-WcMqCiKB+UQmnHy2SiCbRxE0/7R6BL/+p5NNPfU0OPARdctzue9Omkl+xQamzwCOkXI6xvvCRN4o6EFjNyKflA==} + engines: {node: '>=22.18.0'} '@volar/kit@2.4.28': resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} @@ -3033,25 +3049,35 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} + '@rrlab/astro-plugin@0.1.0(@astrojs/check@0.9.10(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3))(@pnpm/logger@1001.0.1)(@rrlab/cli@1.5.0(@pnpm/logger@1001.0.1))(astro@7.4.0(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1))(typescript@6.0.3)': + dependencies: + '@astrojs/check': 0.9.10(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@6.0.3) + '@rrlab/cli': 1.5.0(@pnpm/logger@1001.0.1) + '@variablelab/clibuddy': 0.8.0(@pnpm/logger@1001.0.1) + astro: 7.4.0(@types/node@24.19.2)(esbuild@0.28.2)(yaml@2.9.1) + typescript: 6.0.3 + transitivePeerDependencies: + - '@pnpm/logger' + '@rrlab/biome-config@0.0.3(@biomejs/biome@2.5.15)': dependencies: '@biomejs/biome': 2.5.15 - '@rrlab/biome-plugin@1.1.3(@biomejs/biome@2.5.15)(@pnpm/logger@1001.0.1)(@rrlab/cli@1.3.2(@pnpm/logger@1001.0.1))': + '@rrlab/biome-plugin@1.1.3(@biomejs/biome@2.5.15)(@pnpm/logger@1001.0.1)(@rrlab/cli@1.5.0(@pnpm/logger@1001.0.1))': dependencies: '@biomejs/biome': 2.5.15 - '@rrlab/cli': 1.3.2(@pnpm/logger@1001.0.1) + '@rrlab/cli': 1.5.0(@pnpm/logger@1001.0.1) '@variablelab/clibuddy': 0.7.3(@pnpm/logger@1001.0.1) comment-json: 4.2.5 transitivePeerDependencies: - '@pnpm/logger' - '@rrlab/cli@1.3.2(@pnpm/logger@1001.0.1)': + '@rrlab/cli@1.5.0(@pnpm/logger@1001.0.1)': dependencies: '@clack/prompts': 0.11.0 '@usage-spec/commander': 1.1.0 - '@variablelab/clibuddy': 0.7.3(@pnpm/logger@1001.0.1) - '@variablelab/loggy': 0.2.2 + '@variablelab/clibuddy': 0.8.0(@pnpm/logger@1001.0.1) + '@variablelab/loggy': 0.3.0 commander: 14.0.3 comment-json: 4.2.5 fast-string-width: 3.0.2 @@ -3171,7 +3197,20 @@ snapshots: transitivePeerDependencies: - '@pnpm/logger' - '@variablelab/loggy@0.2.2': + '@variablelab/clibuddy@0.8.0(@pnpm/logger@1001.0.1)': + dependencies: + '@pnpm/fs.find-packages': 1000.0.24(@pnpm/logger@1001.0.1) + '@pnpm/types': 1001.3.0 + ansis: 4.2.0 + memoize: 10.2.0 + pkg-types: 2.3.0 + std-env: 3.9.0 + tinyexec: 1.1.2 + yaml: 2.8.4 + transitivePeerDependencies: + - '@pnpm/logger' + + '@variablelab/loggy@0.3.0': dependencies: consola: 3.4.2 debug: 4.4.3 diff --git a/run-run.config.mts b/run-run.config.mts index f2c17a5..839b648 100644 --- a/run-run.config.mts +++ b/run-run.config.mts @@ -1,6 +1,7 @@ +import astro from "@rrlab/astro-plugin"; import biome from "@rrlab/biome-plugin"; import { defineConfig } from "@rrlab/cli/config"; export default defineConfig({ - plugins: [biome()], + plugins: [biome(), astro()], }); diff --git a/src/content/projects/run-run.yaml b/src/content/projects/run-run.yaml index 4729914..6121bf4 100644 --- a/src/content/projects/run-run.yaml +++ b/src/content/projects/run-run.yaml @@ -2,7 +2,7 @@ name: "run-run" class: "App" sign: "M2 2h12v8h8v12H10v-8H2V2z" tagline: "One way to run the scripts in a repo." -body: "Every tool is a plugin you add: Biome, oxc, tsc or tsdown. The commands stay the same in every repo." +body: "Every tool is a plugin you add. The commands stay the same in every repo." installCommand: "pnpm add -D @rrlab/cli" executable: "rr" package: "@rrlab/cli" @@ -28,4 +28,4 @@ example: commands: - "pnpm rr pack" closingLine: "Ships no Biome or TypeScript. Each plugin installs its tool." -description: "One way to run the scripts in a repo. Every tool is a plugin you add: Biome, oxc, tsc or tsdown." +description: "One way to run the scripts in a repo. Every tool is a plugin you add."