mirror of
https://github.com/Llewellynvdm/starship.git
synced 2024-11-05 21:07:52 +00:00
194 lines
5.0 KiB
YAML
194 lines
5.0 KiB
YAML
name: Main workflow
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
pull_request:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
|
|
env:
|
|
CARGO_INCREMENTAL: 0
|
|
CARGO_NET_RETRY: 10
|
|
RUST_BACKTRACE: short
|
|
RUSTFLAGS: "-D warnings"
|
|
RUSTUP_MAX_RETRIES: 10
|
|
|
|
jobs:
|
|
# Run the `rustfmt` code formatter
|
|
rustfmt:
|
|
name: Rustfmt [Formatter]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
override: true
|
|
profile: minimal
|
|
components: rustfmt
|
|
|
|
- name: Build | Format
|
|
run: cargo fmt --all -- --check
|
|
|
|
# Run the `clippy` linting tool
|
|
clippy:
|
|
name: Clippy [Linter]
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
override: true
|
|
profile: minimal
|
|
components: clippy
|
|
|
|
- name: Build | Lint
|
|
uses: actions-rs/cargo@v1.0.3
|
|
with:
|
|
command: clippy
|
|
args: --workspace --locked --all-targets --all-features -- -D clippy::all
|
|
|
|
# Ensure that the project could be successfully compiled
|
|
cargo_check:
|
|
name: Compile
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Build | Check
|
|
run: cargo check --workspace --locked
|
|
|
|
# Ensure that the project could be successfully compiled with no features enabled
|
|
cargo_check_no_features:
|
|
name: Compile with no features enabled
|
|
needs: cargo_check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Build | Check
|
|
run: cargo check --workspace --locked --no-default-features
|
|
|
|
# Ensure that the project could be successfully compiled with all features enabled
|
|
cargo_check_all_features:
|
|
name: Compile with all features enabled
|
|
needs: cargo_check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Build | Check
|
|
run: cargo check --workspace --locked --all-features
|
|
|
|
# Check if config schema needs to be updated to reflect updated configuration options
|
|
check_if_config_schema_up_to_date:
|
|
name: Check if config schema is up to date
|
|
needs: cargo_check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Run | Generate Schema
|
|
run: cargo run --locked --features config-schema -- config-schema > .github/config-schema.json
|
|
|
|
- name: Check | Detect Changes
|
|
run: git diff --exit-code .github/config-schema.json
|
|
|
|
# Run tests on Linux, macOS, and Windows
|
|
# On both Rust stable and Rust nightly
|
|
test:
|
|
name: Test Suite
|
|
runs-on: ${{ matrix.os }}
|
|
needs: cargo_check # First check then run expansive tests
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
|
rust: [stable, nightly]
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup | Cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
# Install all the required dependencies for testing
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1.0.7
|
|
with:
|
|
toolchain: ${{ matrix.rust }}
|
|
profile: minimal
|
|
override: true
|
|
|
|
# Install Mercurial (pre-installed on Linux and windows)
|
|
- name: Setup | Mercurial (macos)
|
|
if: matrix.os == 'macOS-latest'
|
|
run: brew install mercurial
|
|
|
|
# Run the ignored tests that expect the above setup
|
|
- name: Build | Test
|
|
run: cargo test --workspace --locked --all-features -- -Z unstable-options --include-ignored
|
|
env:
|
|
# Avoid -D warnings on nightly builds
|
|
RUSTFLAGS: ""
|