Files
zeekay 120bddb520 the Hanzo API on the host's own fetch, with nothing installed beside it
A projection of hanzoai/cloud's openapi.yaml at the ref .spec-lock names —
2479 operations, 192 api classes, 2460 models — generated by hanzoai/openapi's
generate.py from the `fetch` row of its sdks.yaml. Nothing under src/ is
written by hand.

It exists because axios brings 27 packages and 4.1 MB where this brings none,
and because `…Raw()` hands back the Response, so a stream is readable. Relative
imports carry .js, so the ESM half loads in Node, Deno and a Worker rather than
only in a bundler — hanzo.yml gates that by importing the built client, which
is the one failure tsc cannot see.
2026-08-14 21:13:40 -07:00

28 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# The call site. Nothing about HOW this SDK is generated lives here.
#
# The invocation is logic and lives once, in hanzoai/openapi's `generate.py`;
# every per-language knob is data in `sdks.yaml` beside it. This file says
# "fetch, into this checkout" and nothing else.
#
# ./scripts/generate.sh # regenerate src/
# ./scripts/generate.sh --check # fail if committed src/ has drifted
#
# BOTH INPUTS ARRIVE AS VALUES. $SPEC is the document, already fetched at a
# pinned ref and digest-checked; $OPENAPI is the checkout holding the driver.
# hanzoai/ci's client lane sets both, because it holds the one credential that
# reads the forge.
#
# uv rather than a bare python3: the driver needs PyYAML and the runner image
# promises no interpreter at all, let alone one with it installed.
#
# Requires: java 17+, uv.
set -euo pipefail
cd "$(dirname "$0")/.."
: "${OPENAPI:?the generator lives in hanzoai/openapi; the ci client lane sets OPENAPI, or point it at a checkout}"
if [ -n "${SPEC:-}" ]; then set -- --spec "$SPEC" "$@"; fi
exec uv run --with pyyaml python3 "$OPENAPI/generate.py" fetch --repo "$PWD" "$@"