ref: inline generic-info computation in TS writer #1293
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@v5 | |
| - 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@v5 | |
| - 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@v5 | |
| - 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: "20" | |
| - 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 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)" |