dracon-terminal-engine 0.1.10

A terminal application framework for Rust with composable widgets, z-indexed compositor, themes, and TextEditor
Documentation
name: Plugin Registry CI

on:
  push:
    branches: [main, master]
    paths:
      - 'extensions/**'
      - 'src/framework/plugin.rs'
      - '.github/workflows/plugin-ci.yml'
  pull_request:
    paths:
      - 'extensions/**'
      - 'src/framework/plugin.rs'
      - '.github/workflows/plugin-ci.yml'

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

jobs:
  plugin-build:
    name: Build Plugins
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@master
        with:
          rust-toolchain: stable

      - name: Cache cargo registry
        uses: Swatinem/rust-cache@v2

      - name: Build core library
        run: cargo build --lib --release

      - name: Check plugin compilation
        run: |
          # Check each plugin directory
          for plugin in extensions/*/; do
            if [ -f "$plugin/Cargo.toml" ]; then
              echo "Checking $plugin..."
              cargo check --manifest-path "$plugin/Cargo.toml" 2>&1 || echo "FAILED: $plugin"
            fi
          done

      - name: Build examples
        run: cargo build --examples 2>&1 | head -50

  plugin-smoke-test:
    name: Plugin Smoke Tests
    runs-on: ubuntu-latest
    needs: plugin-build
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@master
        with:
          rust-toolchain: stable

      - name: Cache cargo registry
        uses: Swatinem/rust-cache@v2

      - name: Run plugin examples
        run: |
          # Run plugin_demo example
          timeout 10s cargo run --example plugin_demo 2>&1 || true

          # Run stat_widget_plugin example
          timeout 10s cargo run --example stat_widget_plugin 2>&1 || true

      - name: Verify plugin system
        run: |
          # Build and verify plugins compile
          cargo build --example plugin_demo --release 2>&1
          test -f target/release/examples/plugin_demo && echo "plugin_demo built successfully"