lade 0.15.0

Automatically load secrets from your preferred vault as environment variables, and clear them once your shell command is over.
on:
  push:
    branches:
      - main
  pull_request:
    types:
      - opened
      - synchronize
      - ready_for_review

jobs:
  lint:
    runs-on: ubuntu-24.04
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - uses: Swatinem/rust-cache@v2
        with:
          key: lint
      - uses: pre-commit/action@v3.0.1
      - uses: rhysd/actionlint@v1.7.12

  test:
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-24.04
          - os: macos-15
          - os: windows-2025

    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          key: ${{ runner.os }}
      - run: |
          cargo run -- --help
          cargo test --workspace --locked

  test-scripts:
    runs-on: ubuntu-24.04
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v6

      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          key: ubuntu-scripts
      - name: Pre-build
        run: cargo build --workspace --locked

      - name: Set up Docker
        uses: docker/setup-docker-action@v5

      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y bash fish zsh

      - name: bash, fish, zsh version
        run: |
          echo ""
          bash --version
          echo ""
          fish --version
          echo ""
          zsh --version

      - name: Install Vault CLI
        run: |
          wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
          echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
          sudo apt-get update && sudo apt-get install -y vault=1.18.3-1
          vault --version

      - name: Run test vault
        run: |
          env -i PATH="$PATH" VAULT_TOKEN="token" LADE_VAULT_HTTP=1 bash tests/test_vault.bash
          env -i PATH="$PATH" VAULT_TOKEN="token" LADE_VAULT_HTTP=1 zsh tests/test_vault.zsh
          env -i PATH="$PATH" VAULT_TOKEN="token" LADE_VAULT_HTTP=1 fish tests/test_vault.fish

      - name: Run bash test
        run: env -i PATH="$PATH" bash scripts/test.bash

      - name: Run zsh test
        run: env -i PATH="$PATH" zsh scripts/test.zsh

      - name: Run fish test
        run: env -i PATH="$PATH" fish scripts/test.fish