chore: Update cargo #171
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: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| rust: | |
| name: Rust | |
| runs-on: ubuntu-latest | |
| # Skip CI for release-please commits (already tested on the source commit) | |
| if: github.actor != 'release-please[bot]' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo- | |
| - name: Check | |
| run: cargo check --workspace | |
| - name: Test | |
| run: cargo test --workspace | |
| - name: Clippy | |
| run: cargo clippy --workspace -- -D warnings | |
| typescript-core: | |
| name: TypeScript Core | |
| runs-on: ubuntu-latest | |
| if: github.actor != 'release-please[bot]' | |
| defaults: | |
| run: | |
| working-directory: typescript/core | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: typescript/core/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build | |
| run: npm run build | |
| - name: Test | |
| run: npm test | |
| typescript-react: | |
| name: TypeScript React | |
| runs-on: ubuntu-latest | |
| if: github.actor != 'release-please[bot]' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Build core dependency | |
| working-directory: typescript/core | |
| run: npm ci && npm run build | |
| - name: Install dependencies | |
| working-directory: typescript/react | |
| run: npm ci | |
| - name: Build | |
| working-directory: typescript/react | |
| run: npm run build | |
| - name: Test | |
| working-directory: typescript/react | |
| run: npm test | |
| typescript-stacks: | |
| name: TypeScript Stacks | |
| runs-on: ubuntu-latest | |
| if: github.actor != 'release-please[bot]' | |
| defaults: | |
| run: | |
| working-directory: stacks/sdk/typescript | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: stacks/sdk/typescript/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build | |
| run: npm run build | |
| # Validates that generated SDKs are up-to-date with their source ASTs. | |
| # This prevents publishing stale SDKs when stack definitions change. | |
| validate-generated-sdks: | |
| name: Validate Generated SDKs | |
| runs-on: ubuntu-latest | |
| if: github.actor != 'release-please[bot]' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-sdk-validate-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-sdk-validate- | |
| ${{ runner.os }}-cargo- | |
| - name: Build stack crates (regenerate ASTs) | |
| run: | | |
| cargo build --manifest-path stacks/pumpfun/Cargo.toml | |
| cargo build --manifest-path stacks/ore/Cargo.toml | |
| - name: Install hyperstack-cli | |
| run: cargo install --path cli | |
| - name: Regenerate TypeScript SDKs | |
| run: | | |
| hs sdk create typescript pumpfun --config stacks/pumpfun/hyperstack.toml | |
| hs sdk create typescript ore --config stacks/ore/hyperstack.toml | |
| - name: Check for uncommitted changes | |
| run: | | |
| if [ -n "$(git status --porcelain stacks/sdk/)" ]; then | |
| echo "::error::Generated SDKs are out of date with their source ASTs!" | |
| echo "" | |
| echo "The TypeScript SDKs in stacks/sdk/typescript/src/ do not match the" | |
| echo "current stack definitions. This can happen when:" | |
| echo " 1. Stack spec files (stacks/*/src/*.rs) were modified" | |
| echo " 2. The hyperstack-macros or interpreter crates were updated" | |
| echo " 3. SDKs were not regenerated after changes" | |
| echo "" | |
| echo "To fix this, run the following locally and commit the changes:" | |
| echo "" | |
| echo " cargo build --manifest-path stacks/pumpfun/Cargo.toml" | |
| echo " cargo build --manifest-path stacks/ore/Cargo.toml" | |
| echo " hs sdk create typescript pumpfun --config stacks/pumpfun/hyperstack.toml" | |
| echo " hs sdk create typescript ore --config stacks/ore/hyperstack.toml" | |
| echo "" | |
| echo "Files that differ:" | |
| git status --porcelain stacks/sdk/ | |
| echo "" | |
| echo "Diff:" | |
| git diff stacks/sdk/ | |
| exit 1 | |
| fi | |
| echo "✓ Generated SDKs are up-to-date" | |
| python: | |
| name: Python | |
| runs-on: ubuntu-latest | |
| if: github.actor != 'release-please[bot]' | |
| defaults: | |
| run: | |
| working-directory: python/hyperstack-sdk | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install package | |
| run: pip install -e . | |
| - name: Install test dependencies | |
| run: pip install pytest | |
| # continue-on-error: true | |
| - name: Run tests | |
| run: pytest || echo "No tests found or tests skipped" | |
| # continue-on-error: true | |
| docs: | |
| name: Docs | |
| runs-on: ubuntu-latest | |
| if: github.actor != 'release-please[bot]' | |
| defaults: | |
| run: | |
| working-directory: docs | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: docs/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Check types | |
| run: npm run check | |
| - name: Lint | |
| run: npm run lint | |
| - name: Build | |
| run: npm run build |