chore: bump version to 0.0.21 #2025
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
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Lint | |
| run: make lint | |
| - name: Test | |
| run: make test | |
| - name: Build | |
| run: bun run build | |
| security: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Run security audit | |
| run: bun audit | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Build and pack | |
| run: | | |
| bun install --frozen-lockfile | |
| bun run build | |
| bun pm pack | |
| - name: Upload tarball | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: package-tarball | |
| path: "*.tgz" | |
| package-managers: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package-manager: [bun, npm, pnpm] | |
| steps: | |
| - name: Download tarball | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: package-tarball | |
| - name: Setup Bun | |
| if: matrix.package-manager == 'bun' | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Setup Node.js | |
| if: matrix.package-manager != 'bun' | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: "22" | |
| - name: Setup pnpm | |
| if: matrix.package-manager == 'pnpm' | |
| uses: pnpm/action-setup@v5 | |
| with: | |
| version: latest | |
| - name: Install package | |
| run: | | |
| TARBALL=$(ls *.tgz) | |
| mkdir /tmp/test-install && cd /tmp/test-install | |
| echo '{}' > package.json | |
| if [ "${{ matrix.package-manager }}" == "bun" ]; then | |
| bun add "$OLDPWD/$TARBALL" | |
| elif [ "${{ matrix.package-manager }}" == "npm" ]; then | |
| npm install "$OLDPWD/$TARBALL" | |
| else | |
| pnpm add "$OLDPWD/$TARBALL" | |
| fi | |
| - name: Generate FHIR R4 type tree | |
| working-directory: /tmp/test-install | |
| run: | | |
| cat > generate.ts <<'SCRIPT' | |
| import { APIBuilder } from "@atomic-ehr/codegen"; | |
| const generate = async () => { | |
| const builder = new APIBuilder() | |
| .fromPackage("hl7.fhir.r4.core", "4.0.1") | |
| .introspection({ typeTree: "./type-tree.json" }) | |
| .outputTo("./output"); | |
| const report = await builder.generate(); | |
| if (!report.success) { | |
| console.error("Generation failed"); | |
| process.exit(1); | |
| } | |
| console.log("OK: type tree generated"); | |
| }; | |
| generate(); | |
| SCRIPT | |
| if [ "${{ matrix.package-manager }}" == "bun" ]; then | |
| bun generate.ts | |
| elif [ "${{ matrix.package-manager }}" == "npm" ]; then | |
| npx tsx generate.ts | |
| else | |
| pnpm --allow-build=esbuild dlx tsx generate.ts | |
| fi | |
| - name: Verify output | |
| run: | | |
| if [ ! -f /tmp/test-install/output/type-tree.json ]; then | |
| echo "type-tree.json not found" | |
| exit 1 | |
| fi | |
| echo "type-tree.json exists ($(wc -c < /tmp/test-install/output/type-tree.json) bytes)" | |
| - name: Run CLI | |
| working-directory: /tmp/test-install | |
| run: | | |
| cat > codegen.json <<'CONFIG' | |
| { | |
| "version": 1, | |
| "builders": [ | |
| { | |
| "name": "core", | |
| "fromPackages": [{ "name": "hl7.fhir.r4.core", "version": "4.0.1" }], | |
| "typescript": {}, | |
| "outputTo": "./cli-output" | |
| } | |
| ] | |
| } | |
| CONFIG | |
| run_cli() { | |
| if [ "${{ matrix.package-manager }}" == "bun" ]; then | |
| bun node_modules/.bin/atomic-codegen "$@" | |
| elif [ "${{ matrix.package-manager }}" == "npm" ]; then | |
| npx atomic-codegen "$@" | |
| else | |
| pnpm exec atomic-codegen "$@" | |
| fi | |
| } | |
| run_cli --version | |
| # The command must run exactly once: a duplicate entry point in the | |
| # bundle used to execute every CLI command twice under bun/Node 24+. | |
| run_cli generate --config ./codegen.json --dry-run | tee plan.txt | |
| plans=$(grep -c "Generate plan" plan.txt || true) | |
| if [ "$plans" != "1" ]; then | |
| echo "expected exactly one generate plan, saw $plans" | |
| exit 1 | |
| fi | |
| run_cli generate --config ./codegen.json | |
| - name: Verify CLI output | |
| run: | | |
| if [ ! -f /tmp/test-install/cli-output/hl7-fhir-r4-core/Patient.ts ]; then | |
| echo "CLI generation output missing" | |
| exit 1 | |
| fi | |
| echo "CLI output OK ($(find /tmp/test-install/cli-output -name '*.ts' | wc -l) TypeScript files)" |