mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2026-06-01 03:10:43 +00:00
feat: Initial release v0.1.0 - 52 Leptos ShadCN UI components
This commit is contained in:
66
.github/workflows/ci.yml
vendored
Normal file
66
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request: {}
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
RUSTFLAGS: '-Dwarnings'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
components: clippy, rustfmt
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Install Cargo Binary Install
|
||||
uses: cargo-bins/cargo-binstall@main
|
||||
|
||||
- name: Install crates
|
||||
run: cargo binstall -y --force cargo-deny cargo-machete cargo-sort
|
||||
|
||||
- name: Lint
|
||||
run: cargo clippy --all-features --locked
|
||||
|
||||
- name: Check dependencies
|
||||
run: cargo deny check
|
||||
|
||||
- name: Check unused dependencies
|
||||
run: cargo machete
|
||||
|
||||
- name: Check manifest formatting
|
||||
run: cargo sort --workspace --check
|
||||
|
||||
- name: Check formatting
|
||||
run: cargo fmt --all --check
|
||||
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
components: clippy, rustfmt
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Test
|
||||
run: cargo test --all-features --locked --release
|
||||
20
.github/workflows/labels.yml
vendored
Normal file
20
.github/workflows/labels.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
name: Labels
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
sync-labels:
|
||||
name: Sync Labels
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
sparse-checkout: .github/labels.yml
|
||||
|
||||
- uses: EndBug/label-sync@v2
|
||||
with:
|
||||
config-file: .github/labels.yml
|
||||
241
.github/workflows/test-radio-group.yml
vendored
Normal file
241
.github/workflows/test-radio-group.yml
vendored
Normal file
@@ -0,0 +1,241 @@
|
||||
name: Test RadioGroup Component
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
paths:
|
||||
- 'packages/yew/radio-group/**'
|
||||
- 'packages/leptos/radio-group/**'
|
||||
- 'packages/test-utils/**'
|
||||
- 'tests/radio_group_integration_test.rs'
|
||||
- 'scripts/test_radio_group.sh'
|
||||
pull_request:
|
||||
branches: [ main, develop ]
|
||||
paths:
|
||||
- 'packages/yew/radio-group/**'
|
||||
- 'packages/leptos/radio-group/**'
|
||||
- 'packages/test-utils/**'
|
||||
- 'tests/radio_group_integration_test.rs'
|
||||
- 'scripts/test_radio_group.sh'
|
||||
|
||||
jobs:
|
||||
test-radio-group:
|
||||
name: RadioGroup Component Tests
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
target: wasm32-unknown-unknown
|
||||
override: true
|
||||
|
||||
- name: Cache Rust dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-cargo-
|
||||
|
||||
- name: Install wasm-pack
|
||||
run: cargo install wasm-pack
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install test dependencies
|
||||
run: |
|
||||
npm install -g wasm-bindgen-cli
|
||||
npm install -g wasm-bindgen-test-runner
|
||||
|
||||
- name: Build test utilities
|
||||
run: cargo build -p shadcn-ui-test-utils
|
||||
|
||||
- name: Run Yew RadioGroup tests
|
||||
run: cargo test -p shadcn-ui-yew-radio-group --lib
|
||||
|
||||
- name: Run Leptos RadioGroup tests
|
||||
run: cargo test -p shadcn-ui-leptos-radio-group --lib
|
||||
|
||||
- name: Run integration tests
|
||||
run: cargo test --test radio_group_integration_test
|
||||
|
||||
- name: Run cross-framework parity tests
|
||||
run: cargo test test_radio_group_cross_framework_parity
|
||||
|
||||
- name: Run theme consistency tests
|
||||
run: cargo test test_radio_group_theme_consistency
|
||||
|
||||
- name: Run accessibility tests
|
||||
run: cargo test test_radio_group_accessibility_features
|
||||
|
||||
- name: Run registry integration tests
|
||||
run: cargo test test_radio_group_registry_integration
|
||||
|
||||
- name: Run property validation tests
|
||||
run: cargo test test_radio_group_property_validation
|
||||
|
||||
- name: Build components
|
||||
run: |
|
||||
cargo build -p shadcn-ui-yew-radio-group
|
||||
cargo build -p shadcn-ui-leptos-radio-group
|
||||
|
||||
- name: Generate documentation
|
||||
run: |
|
||||
cargo doc -p shadcn-ui-yew-radio-group --no-deps
|
||||
cargo doc -p shadcn-ui-leptos-radio-group --no-deps
|
||||
|
||||
- name: Run comprehensive test script
|
||||
run: ./scripts/test_radio_group.sh
|
||||
|
||||
- name: Upload test results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: radio-group-test-results
|
||||
path: |
|
||||
target/test-results/
|
||||
target/doc/
|
||||
retention-days: 7
|
||||
|
||||
test-browser:
|
||||
name: Browser Tests
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-radio-group
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
target: wasm32-unknown-unknown
|
||||
override: true
|
||||
|
||||
- name: Install wasm-pack
|
||||
run: cargo install wasm-pack
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install browser test dependencies
|
||||
run: |
|
||||
npm install -g wasm-bindgen-cli
|
||||
npm install -g wasm-bindgen-test-runner
|
||||
npm install -g playwright
|
||||
npx playwright install
|
||||
|
||||
- name: Run Yew browser tests
|
||||
run: |
|
||||
wasm-pack test --headless --firefox packages/yew/radio-group
|
||||
wasm-pack test --headless --chrome packages/yew/radio-group
|
||||
|
||||
- name: Run Leptos browser tests
|
||||
run: |
|
||||
wasm-pack test --headless --firefox packages/leptos/radio-group
|
||||
wasm-pack test --headless --chrome packages/leptos/radio-group
|
||||
|
||||
test-examples:
|
||||
name: Example Tests
|
||||
runs-on: ubuntu-latest
|
||||
needs: test-radio-group
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
target: wasm32-unknown-unknown
|
||||
override: true
|
||||
|
||||
- name: Install wasm-pack
|
||||
run: cargo install wasm-pack
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'npm'
|
||||
|
||||
- name: Build Leptos examples
|
||||
run: |
|
||||
cd book-examples/leptos
|
||||
cargo build --features radio-group
|
||||
|
||||
- name: Build Yew examples
|
||||
run: |
|
||||
cd book-examples/yew
|
||||
cargo build --features radio-group
|
||||
|
||||
- name: Test example components
|
||||
run: |
|
||||
cargo test -p book-examples-leptos --features radio-group
|
||||
cargo test -p book-examples-yew --features radio-group
|
||||
|
||||
lint-and-format:
|
||||
name: Lint and Format
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- name: Install clippy
|
||||
run: rustup component add clippy
|
||||
|
||||
- name: Run clippy
|
||||
run: |
|
||||
cargo clippy -p shadcn-ui-yew-radio-group
|
||||
cargo clippy -p shadcn-ui-leptos-radio-group
|
||||
cargo clippy -p shadcn-ui-test-utils
|
||||
|
||||
- name: Check formatting
|
||||
run: |
|
||||
cargo fmt --check -p shadcn-ui-yew-radio-group
|
||||
cargo fmt --check -p shadcn-ui-leptos-radio-group
|
||||
cargo fmt --check -p shadcn-ui-test-utils
|
||||
|
||||
security-audit:
|
||||
name: Security Audit
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- name: Install cargo-audit
|
||||
run: cargo install cargo-audit
|
||||
|
||||
- name: Run security audit
|
||||
run: cargo audit
|
||||
305
.github/workflows/test-tooltip.yml
vendored
Normal file
305
.github/workflows/test-tooltip.yml
vendored
Normal file
@@ -0,0 +1,305 @@
|
||||
name: Test Tooltip Component
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
paths:
|
||||
- 'packages/*/tooltip/**'
|
||||
- 'tests/tooltip_integration_test.rs'
|
||||
- 'scripts/test_tooltip.sh'
|
||||
- '.github/workflows/test-tooltip.yml'
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'packages/*/tooltip/**'
|
||||
- 'tests/tooltip_integration_test.rs'
|
||||
- 'scripts/test_tooltip.sh'
|
||||
- '.github/workflows/test-tooltip.yml'
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
RUST_BACKTRACE: 1
|
||||
|
||||
jobs:
|
||||
test-tooltip:
|
||||
name: Test Tooltip Component
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: wasm32-unknown-unknown
|
||||
components: clippy, rustfmt
|
||||
|
||||
- name: Install wasm-pack
|
||||
uses: jetli/wasm-pack-action@v0.4.0
|
||||
with:
|
||||
version: 'latest'
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Cache cargo build
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: target
|
||||
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
|
||||
- name: Run comprehensive tooltip tests
|
||||
run: ./scripts/test_tooltip.sh
|
||||
|
||||
test-browser:
|
||||
name: Browser Compatibility Tests
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
browser: [firefox, chrome]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: wasm32-unknown-unknown
|
||||
|
||||
- name: Install wasm-pack
|
||||
uses: jetli/wasm-pack-action@v0.4.0
|
||||
with:
|
||||
version: 'latest'
|
||||
|
||||
- name: Install Chrome
|
||||
if: matrix.browser == 'chrome'
|
||||
uses: browser-actions/setup-chrome@latest
|
||||
|
||||
- name: Install Firefox
|
||||
if: matrix.browser == 'firefox'
|
||||
uses: browser-actions/setup-firefox@latest
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Test Yew Tooltip in ${{ matrix.browser }}
|
||||
working-directory: packages/yew/tooltip
|
||||
run: |
|
||||
if [ "${{ matrix.browser }}" == "chrome" ]; then
|
||||
wasm-pack test --headless --chrome
|
||||
else
|
||||
wasm-pack test --headless --firefox
|
||||
fi
|
||||
|
||||
- name: Test Leptos Tooltip in ${{ matrix.browser }}
|
||||
working-directory: packages/leptos/tooltip
|
||||
run: |
|
||||
if [ "${{ matrix.browser }}" == "chrome" ]; then
|
||||
wasm-pack test --headless --chrome
|
||||
else
|
||||
wasm-pack test --headless --firefox
|
||||
fi
|
||||
|
||||
test-examples:
|
||||
name: Example Applications
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
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
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Test Leptos examples
|
||||
if: hashFiles('book-examples/leptos/Cargo.toml') != ''
|
||||
working-directory: book-examples/leptos
|
||||
run: cargo check
|
||||
|
||||
- name: Test Yew examples
|
||||
if: hashFiles('book-examples/yew/Cargo.toml') != ''
|
||||
working-directory: book-examples/yew
|
||||
run: cargo check
|
||||
|
||||
- name: Build example documentation
|
||||
run: |
|
||||
if [ -d book-examples ]; then
|
||||
cargo doc --no-deps --workspace
|
||||
fi
|
||||
|
||||
lint-and-format:
|
||||
name: Code Quality Checks
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
components: clippy, rustfmt
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Check formatting
|
||||
run: |
|
||||
cargo fmt --check -p shadcn-ui-yew-tooltip -p shadcn-ui-leptos-tooltip
|
||||
|
||||
- name: Run Clippy
|
||||
run: |
|
||||
cargo clippy -p shadcn-ui-yew-tooltip -p shadcn-ui-leptos-tooltip -- -D warnings
|
||||
|
||||
- name: Check documentation
|
||||
run: |
|
||||
cargo doc --no-deps -p shadcn-ui-yew-tooltip -p shadcn-ui-leptos-tooltip
|
||||
|
||||
security-audit:
|
||||
name: Security Vulnerability Scan
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install cargo-audit
|
||||
run: cargo install cargo-audit
|
||||
|
||||
- name: Run security audit
|
||||
run: cargo audit
|
||||
|
||||
- name: Check for known security vulnerabilities
|
||||
run: |
|
||||
# Check for vulnerable dependencies
|
||||
cargo audit --deny warnings
|
||||
|
||||
performance-benchmark:
|
||||
name: Performance Benchmarks
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'pull_request'
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: wasm32-unknown-unknown
|
||||
|
||||
- name: Install wasm-pack
|
||||
uses: jetli/wasm-pack-action@v0.4.0
|
||||
with:
|
||||
version: 'latest'
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Build optimized WASM bundles
|
||||
run: |
|
||||
cd packages/yew/tooltip
|
||||
wasm-pack build --target web --out-dir ../../../dist/yew-tooltip
|
||||
cd ../../leptos/tooltip
|
||||
wasm-pack build --target web --out-dir ../../../dist/leptos-tooltip
|
||||
|
||||
- name: Measure bundle sizes
|
||||
run: |
|
||||
echo "Bundle size analysis:"
|
||||
if [ -d dist ]; then
|
||||
find dist -name "*.wasm" -exec ls -lh {} \;
|
||||
find dist -name "*.js" -exec ls -lh {} \;
|
||||
fi
|
||||
|
||||
- name: Comment PR with bundle sizes
|
||||
if: github.event_name == 'pull_request'
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// This would analyze bundle sizes and comment on PR
|
||||
// Implementation depends on specific bundle analysis needs
|
||||
console.log('Bundle size analysis completed');
|
||||
|
||||
accessibility-audit:
|
||||
name: Accessibility Compliance
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: wasm32-unknown-unknown
|
||||
|
||||
- name: Install wasm-pack
|
||||
uses: jetli/wasm-pack-action@v0.4.0
|
||||
with:
|
||||
version: 'latest'
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
|
||||
- name: Install accessibility testing tools
|
||||
run: |
|
||||
npm install -g @axe-core/cli
|
||||
npm install -g lighthouse
|
||||
|
||||
- name: Build test applications
|
||||
run: |
|
||||
# This would build test applications for accessibility testing
|
||||
echo "Building accessibility test applications..."
|
||||
|
||||
- name: Run accessibility tests
|
||||
run: |
|
||||
# This would run axe-core and other accessibility tests
|
||||
echo "Running accessibility compliance tests..."
|
||||
|
||||
- name: Generate accessibility report
|
||||
run: |
|
||||
echo "Generating accessibility compliance report..."
|
||||
135
.github/workflows/website.yml
vendored
Normal file
135
.github/workflows/website.yml
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
name: Website
|
||||
on:
|
||||
pull_request: {}
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
book-test:
|
||||
name: Test Book
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Install Cargo Binary Install
|
||||
uses: cargo-bins/cargo-binstall@main
|
||||
|
||||
- name: Install mdBook
|
||||
run: cargo binstall --force -y mdbook mdbook-tabs mdbook-trunk
|
||||
|
||||
- name: Run tests
|
||||
run: mdbook test
|
||||
working-directory: book
|
||||
|
||||
book-build:
|
||||
name: Build Book
|
||||
needs: book-test
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Install Cargo Binary Install
|
||||
uses: cargo-bins/cargo-binstall@main
|
||||
|
||||
- name: Install mdBook and Trunk
|
||||
run: cargo binstall --force -y mdbook mdbook-tabs mdbook-trunk trunk
|
||||
|
||||
- name: Install Node.js dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Build Book
|
||||
run: mdbook build
|
||||
working-directory: book
|
||||
|
||||
- name: Combine Book Outputs
|
||||
run: mdbook-trunk combine
|
||||
working-directory: book
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: book
|
||||
path: book/dist
|
||||
retention-days: 1
|
||||
if-no-files-found: error
|
||||
|
||||
registry-build:
|
||||
name: Build Registry
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
target: wasm32-unknown-unknown
|
||||
|
||||
- name: Build Registry
|
||||
run: cargo run -p scripts --bin build_registry
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: registry
|
||||
path: dist
|
||||
retention-days: 1
|
||||
if-no-files-found: error
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
needs: [book-build, registry-build]
|
||||
if: github.ref == 'refs/heads/main'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
path: dist
|
||||
merge-multiple: true
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v5
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: dist
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
Reference in New Issue
Block a user