kopi 0.2.1

Kopi is a JDK version management tool
Documentation
name: Build and Test on push

on:
  push:
    branches-ignore:
      - main
  pull_request:
    branches: [ main ]
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always
  RUST_TEST_THREADS: 1
  RUST_BACKTRACE: full
  SKIP_NETWORK_TESTS: 1

jobs:
  ci:
    strategy:
      matrix:
        os: [ ubuntu-24.04, windows-2025, macos-15-large ]
    runs-on: ${{ matrix.os }}
    
    steps:
    - name: Configure Git to use LF on checkout
      run: |
        git config --global core.autocrlf false
        git config --global core.eol lf
        git config --global core.safecrlf true

    - uses: actions/checkout@v4

    - name: Install Bun
      uses: oven-sh/setup-bun@v2
      with:
        bun-version: latest

    - name: Install Dependencies
      run: bun install

    - name: Make Traceability Markdown
      run: bun scripts/trace-status.ts --write

    - name: Format Markdown Files
      run: bun format

    - name: Lint Markdown Files
      run: bun lint

    - name: Install Rust
      uses: actions-rust-lang/setup-rust-toolchain@v1
    
    - name: Check formatting
      run: cargo fmt -- --check
    
    - name: Run clippy
      run: cargo clippy --all-targets
    
    - name: Build all targets
      run: cargo build --all-targets
    
    - name: Run Unit tests
      run: cargo test --quiet --lib 
    
    - name: Run integration tests
      run: cargo test --quiet --features integration_tests

    - name: Lint External Links
      run: bun lint:external