Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 20 additions & 47 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ on:
branches: [ main ]
workflow_dispatch:

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always
MDBOOK_VERSION: 0.5.4

jobs:
build:
Expand Down Expand Up @@ -42,51 +45,10 @@ jobs:
# `ez-adam`, like `begin`, defaults to `desktop` (-> `dioxus/desktop` -> wry/tao ->
# WebKitGTK/GTK on Linux) -- excluded here for the same reason `begin` is: those
# system libraries aren't installed until the later "Install Linux dependencies"
# step.
# step in the parallel desktop job.
- name: Build workspace (excluding begin and ez-adam apps)
run: cargo build --workspace --exclude begin --exclude ez-adam --verbose

# --lib skips `xtask` automatically (it has no library target). `begin` and `ez-adam`
# are excluded explicitly, not just left to `--lib`: `--lib` only filters which
# *targets* get documented, not which packages are selected for feature resolution,
# so either crate staying selected via `--workspace` still unifies its
# `default = ["desktop"]` feature (-> `dioxus/desktop` -> wry/tao -> WebKitGTK/GTK)
# into the build even though nothing of theirs ever gets documented -- and those
# system libraries aren't installed until the later "Install Linux dependencies"
# step, so this failed on the ubuntu-latest runner despite building fine locally on
# Windows/macOS, neither of which route dioxus's desktop feature through GTK at all.
# RUSTDOCFLAGS promotes rustdoc's own warnings (broken/private intra-doc links, bare
# URLs, etc.) to errors -- `cargo doc` alone exits 0 on those, so without this they'd
# only ever surface as a human happening to read `cargo doc`'s output locally.
- name: Build documentation (deny warnings)
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --workspace --exclude begin --exclude ez-adam --no-deps --lib

- name: Install mdBook
run: cargo install mdbook --version "$MDBOOK_VERSION" --locked

- name: Install the live-examples mdBook preprocessor
run: cargo install --path adam-lang-book-preprocessor

- name: Build the adam-lang-book-live wasm bundle
run: |
cargo install wasm-pack --locked
cd adam-lang-book-live && wasm-pack build --target web --release

- name: Prepare live-book assets (manifest + Spectrum bundle + wasm/js output)
run: cargo run -p xtask -- prepare-live-book-assets

# Catches a broken {{#include}} path/anchor in the adam-lang book (adam-lang-book/book-src)
# the moment a chapter or its backing tests/*.rs example drifts out of sync -- mdbook build
# fails outright on either, so no separate lint is needed. A missing mdbook-live-examples
# binary or wasm bundle from the steps above would fail this the same way.
- name: Build the adam-lang book
run: mdbook build adam-lang-book

- name: Build the CEL language book
run: mdbook build cel-lang-book

- name: Check begin app (renderer-agnostic)
run: cargo check -p begin --no-default-features

Expand All @@ -111,11 +73,22 @@ jobs:
- name: Clippy ez-adam app (renderer-agnostic)
run: cargo clippy -p ez-adam --no-default-features --all-targets -- -D warnings

desktop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal --component clippy
rustup default stable

- name: Cache dependencies
uses: Swatinem/rust-cache@63fed3e2fecf6f7b51dc6f043341b79ef82a9ae7 # v2.9.2

# dioxus's desktop feature pulls in wry/tao, which link against WebKitGTK/GTK on Linux.
# No earlier step needs these: the workspace build/test excludes begin and ez-adam, and
# the other begin/ez-adam checks use --no-default-features (renderer-agnostic), so this
# is the first step that actually compiles the desktop feature on the ubuntu-latest
# runner.
# This job runs independently from the renderer-agnostic Rust checks so package
# installation and desktop compilation do not extend their critical path.
- name: Install Linux dependencies for begin/ez-adam desktop builds
run: |
sudo apt-get update
Expand Down
25 changes: 12 additions & 13 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: Docs
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:

env:
Expand All @@ -12,7 +14,7 @@ env:
# Only one Pages deployment may run at a time; let a newer push supersede an
# in-flight one rather than queuing behind it.
concurrency:
group: pages
group: docs-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -29,18 +31,13 @@ jobs:
- name: Cache dependencies
uses: Swatinem/rust-cache@63fed3e2fecf6f7b51dc6f043341b79ef82a9ae7 # v2.9.2

# --lib skips `xtask` automatically (it has no library target). `begin` is excluded
# explicitly, not just left to `--lib`: `--lib` only filters which *targets* get
# documented, not which packages are selected for feature resolution, so `begin`
# staying selected via `--workspace` still unifies its `default = ["desktop"]`
# feature (-> `dioxus/desktop` -> wry/tao -> WebKitGTK/GTK) into the build even
# though nothing of `begin`'s ever gets documented -- and this workflow never
# installs those system libraries at all, so it fails outright on the
# ubuntu-latest runner despite building fine locally on Windows/macOS, neither of
# which route dioxus's desktop feature through GTK at all (confirmed against the
# `ci.yml` build job hitting the identical failure).
- name: Build documentation
run: cargo doc --workspace --exclude begin --no-deps --lib
# --lib skips `xtask` automatically (it has no library target). `begin` and `ez-adam`
# are excluded explicitly, not just left to `--lib`: either crate remaining selected
# via `--workspace` enables its desktop feature and requires WebKitGTK/GTK on Linux.
- name: Build documentation (deny warnings)
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --workspace --exclude begin --exclude ez-adam --no-deps --lib

- name: Redirect docs root to the cel-rs facade crate
run: echo '<meta http-equiv="refresh" content="0; url=cel_rs/index.html">' > target/doc/index.html
Expand Down Expand Up @@ -85,11 +82,13 @@ jobs:
cp -r cel-lang-book/book-dist target/doc/cel-book

- uses: actions/upload-pages-artifact@v5
if: github.event_name == 'push'
with:
path: target/doc

deploy:
needs: build
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
pages: write
Expand Down
54 changes: 0 additions & 54 deletions .vscode/scripts/create-worktree-from-pr.ps1

This file was deleted.

31 changes: 0 additions & 31 deletions .vscode/scripts/prune-worktree-branches.ps1

This file was deleted.

44 changes: 0 additions & 44 deletions .vscode/scripts/remove-worktree.ps1

This file was deleted.

4 changes: 1 addition & 3 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@
"cel-rs/Workspace/begin: serve (desktop)",
"cel-rs/Workspace/begin: serve (web)",
"cel-rs/Workspace/book: serve (full)",
"cel-rs/Workspace/cel-lang-book: serve",
"cel-rs/Workspace/worktree: create",
"cel-rs/Workspace/worktree: remove"
"cel-rs/Workspace/cel-lang-book: serve"
]
}
60 changes: 0 additions & 60 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -1,66 +1,6 @@
{
"version": "2.0.0",
"inputs": [
{
"id": "worktreeName",
"type": "promptString",
"description": "Worktree name (e.g. my-feature) — branch will be worktree-<name>"
}
],
"tasks": [
// ============ Worktree Tasks ============
{
"label": "worktree: create",
"type": "shell",
"command": "git worktree add \".claude/worktrees/${input:worktreeName}\" -b \"worktree-${input:worktreeName}\" && tokensave init \".claude/worktrees/${input:worktreeName}\" && tokensave branch add \"worktree-${input:worktreeName}\" --path \".claude/worktrees/${input:worktreeName}\" && code --new-window \".claude/worktrees/${input:worktreeName}\"",
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "worktree: create from PR",
"type": "shell",
"command": "pwsh -NoProfile -ExecutionPolicy Bypass -File \"${workspaceFolder}/.vscode/scripts/create-worktree-from-pr.ps1\"",
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "worktree: remove",
"type": "shell",
"command": "pwsh -NoProfile -ExecutionPolicy Bypass -File \"${workspaceFolder}/.vscode/scripts/remove-worktree.ps1\"",
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "worktree: prune branches",
"type": "shell",
"command": "pwsh -NoProfile -ExecutionPolicy Bypass -File \"${workspaceFolder}/.vscode/scripts/prune-worktree-branches.ps1\"",
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
// ============ Begin Tasks ============
{
"label": "begin: serve (desktop)",
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ long-term direction behind each crate in this workspace.

- Rust (stable), installed via [rustup](https://rustup.rs/)

### VS Code worktree tasks

The repository does not define `worktree:` tasks. Worktree creation, removal,
and branch pruning live in each contributor's VS Code user tasks (**Tasks: Open
User Tasks**) with their scripts under `~/.vscode/scripts`, so they work across
repositories. Whatever tooling you use, create worktrees under
`.claude/worktrees/` on a `worktree-<name>` branch.

### Clone and build

```bash
Expand Down
Loading