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
18 changes: 9 additions & 9 deletions .github/workflows/guard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:

- name: Install runseal
run: |
curl -fsSL https://runseal.perish.uk/manage.sh | sh
curl -fsSL https://runseal.perish.uk/manage.sh | sh -s -- install --channel beta
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
"$HOME/.local/bin/runseal" --version

Expand Down Expand Up @@ -99,6 +99,12 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install runseal
run: |
curl -fsSL https://runseal.perish.uk/manage.sh | sh -s -- install --channel beta
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
"$HOME/.local/bin/runseal" --version

- name: Start API
env:
OPENAI_API_KEY: ci-placeholder
Expand All @@ -111,21 +117,15 @@ jobs:
mkdir -p .tmp
cargo run -p mini-stim-server-soma -- serve &
for attempt in $(seq 1 180); do
if curl -fsS http://127.0.0.1:43307/api/health >/dev/null; then
if curl -fsS http://127.0.0.1:43307/api/v1/health >/dev/null; then
exit 0
fi
sleep 1
done
exit 1

- name: Generate contracts
env:
SANTI_API_URL: http://127.0.0.1:43307
run: |
curl -fsS "$SANTI_API_URL/api/openapi.json" -o packages/contracts/openapi.json
python3 -m json.tool --indent 2 packages/contracts/openapi.json packages/contracts/openapi.json.tmp
mv packages/contracts/openapi.json.tmp packages/contracts/openapi.json
pnpm -C packages/contracts codegen
run: runseal :codegen

- name: Typecheck
run: pnpm typecheck
Expand Down
10 changes: 3 additions & 7 deletions .runseal/hooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,11 @@ echo "==> cargo test"
cargo test --locked --workspace

echo "==> contracts"
if [ -z "${SANTI_API_URL:-}" ]; then
echo "SANTI_API_URL must point at a running server soma for contract generation" >&2
runseal :codegen
if ! git diff --exit-code -- packages/contracts/openapi.json packages/contracts/src/openapi.ts >/dev/null; then
echo "contracts are out of date; run runseal :codegen and stage the result" >&2
exit 1
fi
api_url=$SANTI_API_URL
curl -fsS "$api_url/api/openapi.json" -o packages/contracts/openapi.json
python3 -m json.tool --indent 2 packages/contracts/openapi.json packages/contracts/openapi.json.tmp
mv packages/contracts/openapi.json.tmp packages/contracts/openapi.json
pnpm -C packages/contracts codegen

echo "==> typecheck"
pnpm typecheck
Expand Down
45 changes: 45 additions & 0 deletions .runseal/wrappers/codegen.seal
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
print() {
printf '%s\n' "$1"
}

error() {
printf '%s\n' "$1" >&2
}

fail() {
error "$1"
exit 1
}

usage() {
print "Usage: runseal :codegen"
print ""
print "Regenerate contracts from the Rust OpenAPI source of truth."
}

__seal_help=false
while [ "$#" -gt 0 ]; do
case "$1" in
--)
shift
break
;;
-h|--help|help)
__seal_help=true
shift
;;
*)
fail "unknown option: $1"
;;
esac
done

if [ "$__seal_help" = true ]; then
usage
exit 0
fi

root=$(git rev-parse --show-toplevel)

cargo run --manifest-path "$root/Cargo.toml" --quiet -p mini-stim-server-soma -- export-openapi > "$root/packages/contracts/openapi.json"
pnpm -C "$root/packages/contracts" codegen
6 changes: 2 additions & 4 deletions .runseal/wrappers/init.seal
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ print "repository: $root"

print "==> checking required tools"
require_tool git
require_tool python3
require_tool cargo
require_tool pnpm
require_tool sidecar
Expand All @@ -123,10 +122,8 @@ require_tool runseal
require_tool sh
require_tool sed
require_tool grep
require_tool curl
require_tool mv
require_tool cp
print "ok: git, python3, cargo, pnpm, sidecar, flavor, runseal, sh, sed, grep, curl, mv, cp"
print "ok: git, cargo, pnpm, sidecar, flavor, runseal, sh, sed, grep, cp"

print "==> checking repository entrypoints"
require_path AGENTS.md
Expand All @@ -152,6 +149,7 @@ require_path apps/client/soma/Cargo.toml
require_path apps/client/soma/web/package.json
require_path packages/components/package.json
require_path packages/contracts/package.json
require_path .runseal/wrappers/codegen.seal
require_path .runseal/wrappers/init.seal
require_path .runseal/wrappers/pr.seal
require_path .runseal/hooks/pre-commit
Expand Down
12 changes: 2 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,7 @@ runseal :init
Generate contracts from the Rust OpenAPI source of truth:

```sh
SANTI_HOST=127.0.0.1 SANTI_PORT=43307 SANTI_DB=.tmp/manual.sqlite cargo run -p mini-stim-server-soma -- serve
```

Then, in another shell:

```sh
curl -fsS "${SANTI_API_URL:-http://127.0.0.1:43307}/api/openapi.json" -o packages/contracts/openapi.json
python3 -m json.tool --indent 2 packages/contracts/openapi.json packages/contracts/openapi.json.tmp
mv packages/contracts/openapi.json.tmp packages/contracts/openapi.json
pnpm -C packages/contracts codegen
runseal :codegen
```

## Run
Expand Down Expand Up @@ -138,6 +129,7 @@ cargo fmt --all --check
flavor check --root . --config flavor.toml
cargo clippy --locked --workspace --all-targets -- -D warnings
cargo test --locked --workspace
runseal :codegen
pnpm typecheck
pnpm build
sidecar status --config sidecar.toml
Expand Down
Loading
Loading