frostx 0.1.0

frostx monitors project directories for inactivity. Once a configured inactivity threshold elapses (e.g. "90 days since any file was modified"), frostx executes a pipeline of **actions** - e.g., checking git state, creating archives, uploading backups, deleting local copies. Automating the lifecycle of projects, frostx helps users manage disk space and maintain a clean workspace.
Documentation
name: ci

on:
  pull_request:
    branches:
      - 'main'
  push:
    branches-ignore:
      - 'gh-readonly-queue/**'
  workflow_dispatch:
  merge_group:
    types: [ checks_requested ]

env:
  RUSTFLAGS: -Dwarnings

jobs:
  build_and_test:
    if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
    strategy:
      matrix:
        os: [ ubuntu-latest ]
        rustalias: [ stable, nightly ]
        feature_flag: [ "" ]
        include:
          - rustalias: stable
            rust: stable
          - rustalias: nightly
            rust: nightly

    name: 'Build and test ${{ matrix.feature_flag }}: ${{ matrix.os }}, ${{ matrix.rustalias }}'
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v6

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          override: true

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command: check
          args: --all ${{ matrix.feature_flag }} --bins --examples

      - name: Tests
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all ${{ matrix.feature_flag }}

  nix_build:
    name: 'Build nix version for <nixpkgs/${{ matrix.nixpkgs }}>'
    runs-on: ubuntu-latest
    strategy:
      matrix:
        nixpkgs:
          - release-25.05
          - release-25.11
          - nixos-unstable
    steps:
      - uses: actions/checkout@v6
      - uses: cachix/install-nix-action@v31
      - run: timeout 5m nix build -L --no-update-lock-file --no-write-lock-file --override-input nixpkgs github:nixos/nixpkgs/${{ matrix.nixpkgs }}

  cargo_fmt:
    if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
    runs-on: ubuntu-latest
    name: 'Cargo fmt'

    steps:
      - uses: actions/checkout@v6
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: rustfmt
      - name: fmt
        run: cargo fmt --all -- --check

  style_and_docs:
    if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
    strategy:
      matrix:
        feature_flag: [ "" ]
    runs-on: ubuntu-latest
    name: 'Style and docs ${{ matrix.feature_flag }}'
    steps:
      - uses: actions/checkout@v6
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: clippy
      - name: clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-targets ${{ matrix.feature_flag }} -- -D warnings
      - name: docs
        uses: actions-rs/cargo@v1
        with:
          command: doc
          args: --no-deps ${{ matrix.feature_flag }}