Mhh typos are good om nom nom #603
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # GENERATED BY: cargo xtask ci generate | |
| # DO NOT EDIT - edit xtask/src/ci.rs instead | |
| --- | |
| name: CI | |
| "on": | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - v* | |
| - "[0-9]*.[0-9]*.[0-9]*" | |
| pull_request: | |
| branches: | |
| - main | |
| merge_group: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| CARGO_INCREMENTAL: "0" | |
| CARGO_PROFILE_TEST_DEBUG: "0" | |
| jobs: | |
| generate: | |
| name: Generate | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| outputs: | |
| version: ${{ steps.version.outputs.version }} | |
| is_release: ${{ steps.version.outputs.is_release }} | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Parse version | |
| run: "set -e\n# Default to dev version (matches xtask default)\nVERSION=\"0.0.0\"\nIS_RELEASE=\"false\"\n\n# On tag push, use the tag as version\nif [[ \"$GITHUB_REF\" == refs/tags/* ]]; then\n TAG=\"${GITHUB_REF#refs/tags/}\"\n TAG=\"${TAG#v}\"\n\n # Only publish on semver-ish tags (optionally with prerelease/build suffix).\n if [[ \"$TAG\" =~ ^[0-9]+\\.[0-9]+\\.[0-9]+([-.].*)?$ ]]; then\n VERSION=\"$TAG\"\n IS_RELEASE=\"true\"\n fi\nfi\n\necho \"version=$VERSION\" >> $GITHUB_OUTPUT\necho \"is_release=$IS_RELEASE\" >> $GITHUB_OUTPUT\necho \"Version: $VERSION (release: $IS_RELEASE)\"" | |
| shell: bash | |
| id: version | |
| - | |
| name: Restore grammar generation cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: .cache/arborium | |
| key: "grammar-cache-v1000-${{ hashFiles('langs/group-*/*/def/grammar/grammar.js', 'langs/group-*/*/def/grammar/package.json') }}" | |
| restore-keys: grammar-cache-v1000- | |
| - | |
| name: Build xtask | |
| run: "set -e\ncargo build --release --manifest-path xtask/Cargo.toml" | |
| shell: bash | |
| - | |
| name: Generate grammar sources | |
| run: "set -e\n./xtask/target/release/xtask gen --version ${{ steps.version.outputs.version }} --quiet" | |
| shell: bash | |
| - | |
| name: Create generate output tarball | |
| run: "set -e\ntar --exclude='node_modules' --exclude='dist' -cf generate-output.tar crates/ langs/ packages/ xtask/target/release/xtask version.json" | |
| shell: bash | |
| - | |
| name: Upload generate output | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: generate-output.tar | |
| retention-days: "1" | |
| test-linux: | |
| name: Test (Linux) | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: crates/arborium | |
| - | |
| name: Build | |
| run: "set -e\ncargo build --manifest-path crates/arborium/Cargo.toml --verbose" | |
| shell: bash | |
| - | |
| name: Run tests | |
| run: "set -e\ncargo nextest run --manifest-path crates/arborium/Cargo.toml --verbose --no-tests=pass" | |
| shell: bash | |
| - | |
| name: Build with all features | |
| run: "set -e\ncargo build --manifest-path crates/arborium/Cargo.toml --all-features --verbose" | |
| shell: bash | |
| - | |
| name: Build arborium-rustdoc | |
| run: "set -e\ncargo build --manifest-path crates/arborium-rustdoc/Cargo.toml --verbose" | |
| shell: bash | |
| - | |
| name: Test arborium-rustdoc | |
| run: "set -e\ncargo test --manifest-path crates/arborium-rustdoc/Cargo.toml --verbose" | |
| shell: bash | |
| test-macos: | |
| name: Test (macOS) | |
| runs-on: depot-macos-latest | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: crates/arborium | |
| - | |
| name: Install nextest | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-nextest | |
| - | |
| name: Build | |
| run: "set -e\ncargo build --manifest-path crates/arborium/Cargo.toml --verbose" | |
| shell: bash | |
| - | |
| name: Run tests | |
| run: "set -e\ncargo nextest run --manifest-path crates/arborium/Cargo.toml --verbose --no-tests=pass" | |
| shell: bash | |
| - | |
| name: Build arborium-rustdoc | |
| run: "set -e\ncargo build --manifest-path crates/arborium-rustdoc/Cargo.toml --verbose" | |
| shell: bash | |
| - | |
| name: Test arborium-rustdoc | |
| run: "set -e\ncargo test --manifest-path crates/arborium-rustdoc/Cargo.toml --verbose" | |
| shell: bash | |
| clippy: | |
| name: Clippy | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Run Clippy | |
| run: "set -e\ncargo clippy --manifest-path crates/arborium/Cargo.toml --all-targets -- -D warnings" | |
| shell: bash | |
| - | |
| name: Run Clippy on arborium-rustdoc | |
| run: "set -e\ncargo clippy --manifest-path crates/arborium-rustdoc/Cargo.toml --all-targets -- -D warnings" | |
| shell: bash | |
| docs: | |
| name: Documentation | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build docs | |
| run: "set -e\ncargo doc --manifest-path crates/arborium/Cargo.toml --no-deps" | |
| shell: bash | |
| env: | |
| RUSTDOCFLAGS: "-D warnings" | |
| build-plugins-acorn: | |
| name: "Plugins (acorn): css, html, javascript, json, scss, tsx, typescript, xml" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build css, html, javascript, json, scss, tsx, typescript, xml | |
| run: "set -e\n./xtask/target/release/xtask build css html javascript json scss tsx typescript xml -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-acorn | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-birch: | |
| name: "Plugins (birch): asm, c, cpp, d, go, objc, rust, x86asm, zig" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build asm, c, cpp, d, go, objc, rust, x86asm, zig | |
| run: "set -e\n./xtask/target/release/xtask build asm c cpp d go objc rust x86asm zig -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-birch | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-cedar: | |
| name: "Plugins (cedar): clojure, groovy, java, kotlin, scala" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build clojure, groovy, java, kotlin, scala | |
| run: "set -e\n./xtask/target/release/xtask build clojure groovy java kotlin scala -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-cedar | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-fern: | |
| name: "Plugins (fern): agda, commonlisp, elixir, elm, erlang, gleam, haskell, idris, lean, ocaml, scheme" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build agda, commonlisp, elixir, elm, erlang, gleam, haskell, idris, lean, ocaml, scheme | |
| run: "set -e\n./xtask/target/release/xtask build agda commonlisp elixir elm erlang gleam haskell idris lean ocaml scheme -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-fern | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-hazel: | |
| name: "Plugins (hazel): awk, bash, batch, fish, lua, perl, php, powershell, python, ruby, zsh" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build awk, bash, batch, fish, lua, perl, php, powershell, python, ruby, zsh | |
| run: "set -e\n./xtask/target/release/xtask build awk bash batch fish lua perl php powershell python ruby zsh -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-hazel | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-maple: | |
| name: "Plugins (maple): caddy, cmake, dockerfile, dot, graphql, hcl, ini, jq, kdl, meson, nginx, ninja, nix, query, ron, sql, ssh-config, toml, yaml" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build caddy, cmake, dockerfile, dot, graphql, hcl, ini, jq, kdl, meson, nginx, ninja, nix, query, ron, sql, ssh-config, toml, yaml | |
| run: "set -e\n./xtask/target/release/xtask build caddy cmake dockerfile dot graphql hcl ini jq kdl meson nginx ninja nix query ron sql ssh-config toml yaml -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-maple | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-moss: | |
| name: "Plugins (moss): ada, glsl, hlsl, julia, matlab, prolog, r, sparql, tlaplus, verilog, vhdl" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build ada, glsl, hlsl, julia, matlab, prolog, r, sparql, tlaplus, verilog, vhdl | |
| run: "set -e\n./xtask/target/release/xtask build ada glsl hlsl julia matlab prolog r sparql tlaplus verilog vhdl -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-moss | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-pine: | |
| name: "Plugins (pine): capnp, dart, devicetree, rescript, starlark, swift, textproto, thrift, uiua, wit, yuri" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build capnp, dart, devicetree, rescript, starlark, swift, textproto, thrift, uiua, wit, yuri | |
| run: "set -e\n./xtask/target/release/xtask build capnp dart devicetree rescript starlark swift textproto thrift uiua wit yuri -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-pine | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-sage: | |
| name: "Plugins (sage): c-sharp, elisp, fsharp, postscript, vb, vim" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build c-sharp, elisp, fsharp, postscript, vb, vim | |
| run: "set -e\n./xtask/target/release/xtask build c-sharp elisp fsharp postscript vb vim -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-sage | |
| path: dist/plugins | |
| retention-days: "7" | |
| build-plugins-willow: | |
| name: "Plugins (willow): asciidoc, diff, jinja2, markdown, svelte, typst, vue" | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Build asciidoc, diff, jinja2, markdown, svelte, typst, vue | |
| run: "set -e\n./xtask/target/release/xtask build asciidoc diff jinja2 markdown svelte typst vue -o dist/plugins" | |
| shell: bash | |
| - | |
| name: Upload plugins artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: plugins-group-willow | |
| path: dist/plugins | |
| retention-days: "7" | |
| publish-crates: | |
| name: Publish crates.io | |
| runs-on: depot-ubuntu-24.04-32 | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| - test-linux | |
| - test-macos | |
| - clippy | |
| if: "needs.generate.outputs.is_release == 'true'" | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Authenticate with crates.io | |
| uses: rust-lang/crates-io-auth-action@v1 | |
| id: crates-io-auth | |
| - | |
| name: Publish to crates.io | |
| run: "set -e\n./xtask/target/release/xtask publish crates" | |
| shell: bash | |
| env: | |
| CARGO_REGISTRY_TOKEN: ${{ steps.crates-io-auth.outputs.token }} | |
| publish-npm: | |
| name: Publish npm | |
| runs-on: ubuntu-latest | |
| container: "ghcr.io/bearcove/arborium-plugin-builder:latest" | |
| needs: | |
| - generate | |
| - build-plugins-acorn | |
| - build-plugins-birch | |
| - build-plugins-cedar | |
| - build-plugins-fern | |
| - build-plugins-hazel | |
| - build-plugins-maple | |
| - build-plugins-moss | |
| - build-plugins-pine | |
| - build-plugins-sage | |
| - build-plugins-willow | |
| if: "needs.generate.outputs.is_release == 'true'" | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download generate output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: generate-output | |
| path: . | |
| - | |
| name: Extract generate output | |
| run: "set -e\ntar -xf generate-output.tar && rm generate-output.tar" | |
| shell: bash | |
| - | |
| name: Download plugins group acorn | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-acorn | |
| path: dist/plugins | |
| - | |
| name: Download plugins group birch | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-birch | |
| path: dist/plugins | |
| - | |
| name: Download plugins group cedar | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-cedar | |
| path: dist/plugins | |
| - | |
| name: Download plugins group fern | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-fern | |
| path: dist/plugins | |
| - | |
| name: Download plugins group hazel | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-hazel | |
| path: dist/plugins | |
| - | |
| name: Download plugins group maple | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-maple | |
| path: dist/plugins | |
| - | |
| name: Download plugins group moss | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-moss | |
| path: dist/plugins | |
| - | |
| name: Download plugins group pine | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-pine | |
| path: dist/plugins | |
| - | |
| name: Download plugins group sage | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-sage | |
| path: dist/plugins | |
| - | |
| name: Download plugins group willow | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: plugins-group-willow | |
| path: dist/plugins | |
| - | |
| name: List plugins | |
| run: "set -e\nfind dist/plugins -name 'package.json' | head -20" | |
| shell: bash | |
| - | |
| name: Install main package dependencies | |
| run: "set -e\ncd packages/arborium && npm ci" | |
| shell: bash | |
| - | |
| name: Publish to npm | |
| run: "set -e\n./xtask/target/release/xtask publish npm -o dist/plugins" | |
| shell: bash | |