mirror of
https://github.com/starship/starship.git
synced 2024-10-17 15:53:10 +02:00
7e1ff68b4d
Have updated the CI config to run clippy on all OSs. This will catch any issues in OS specific codes. This might increase the amount of annotations that are created in any of the common code but it should be better than the alternative.
142 lines
3.5 KiB
YAML
142 lines
3.5 KiB
YAML
---
|
|
name: Main workflow
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
pull_request:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
|
|
jobs:
|
|
# Run the `rustfmt` code formatter
|
|
rustfmt:
|
|
name: Rustfmt [Formatter]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup | Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1
|
|
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@v2
|
|
|
|
# Cache files between builds
|
|
- name: Setup | Cache Cargo
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
target
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
override: true
|
|
profile: minimal
|
|
components: clippy
|
|
|
|
- name: Build | Lint
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: clippy
|
|
args: --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@v2
|
|
|
|
# Cache files between builds
|
|
- name: Setup | Cache Cargo
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
target
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Build | Check
|
|
run: cargo check --all
|
|
|
|
# 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@v2
|
|
|
|
- name: Setup | Cache Cargo
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
target
|
|
key: ${{ runner.os }}-${{ matrix.rust }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
# Install all the required dependencies for testing
|
|
- name: Setup | Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.rust }}
|
|
profile: minimal
|
|
override: true
|
|
|
|
# Install dotnet at a fixed version
|
|
- name: Setup | DotNet
|
|
uses: actions/setup-dotnet@v1
|
|
with:
|
|
dotnet-version: "2.2.402"
|
|
|
|
# Install Mercurial (pre-installed on Linux and windows)
|
|
- name: Setup | Mercurial (macos)
|
|
if: matrix.os == 'macOS-latest'
|
|
run: pip3 install mercurial
|
|
|
|
# Run the ignored tests that expect the above setup
|
|
- name: Build | Test
|
|
run: cargo test -- -Z unstable-options --include-ignored
|