2019-10-05 11:29:13 +02:00
|
|
|
name: Main workflow
|
2019-10-10 09:12:45 +02:00
|
|
|
on:
|
|
|
|
push:
|
|
|
|
paths-ignore:
|
|
|
|
- "docs/**"
|
2019-10-14 17:34:26 +02:00
|
|
|
- "**.md"
|
2019-10-15 17:32:41 +02:00
|
|
|
pull_request:
|
|
|
|
paths-ignore:
|
|
|
|
- "docs/**"
|
|
|
|
- "**.md"
|
2019-10-10 09:12:45 +02:00
|
|
|
|
2022-02-22 21:16:52 +01:00
|
|
|
env:
|
|
|
|
CARGO_INCREMENTAL: 0
|
|
|
|
CARGO_NET_RETRY: 10
|
|
|
|
RUST_BACKTRACE: short
|
|
|
|
RUSTFLAGS: "-D warnings"
|
|
|
|
RUSTUP_MAX_RETRIES: 10
|
2022-05-09 22:08:57 +02:00
|
|
|
MACOSX_DEPLOYMENT_TARGET: 10.7
|
2022-02-22 21:16:52 +01:00
|
|
|
|
2019-10-04 08:12:48 +02:00
|
|
|
jobs:
|
|
|
|
# Run the `rustfmt` code formatter
|
|
|
|
rustfmt:
|
|
|
|
name: Rustfmt [Formatter]
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Checkout
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2020-07-07 18:28:37 +02:00
|
|
|
|
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@stable
|
2019-10-04 08:12:48 +02:00
|
|
|
with:
|
2019-10-20 16:19:40 +02:00
|
|
|
components: rustfmt
|
2020-07-07 18:28:37 +02:00
|
|
|
|
|
|
|
- name: Build | Format
|
|
|
|
run: cargo fmt --all -- --check
|
2019-10-04 08:12:48 +02:00
|
|
|
|
|
|
|
# Run the `clippy` linting tool
|
|
|
|
clippy:
|
|
|
|
name: Clippy [Linter]
|
2020-08-03 02:06:46 +02:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
|
|
|
runs-on: ${{ matrix.os }}
|
2019-10-04 08:12:48 +02:00
|
|
|
steps:
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Checkout
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2020-07-07 18:28:37 +02:00
|
|
|
|
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@stable
|
2019-10-04 08:12:48 +02:00
|
|
|
with:
|
2020-07-07 18:28:37 +02:00
|
|
|
components: clippy
|
|
|
|
|
2022-11-21 17:54:59 +01:00
|
|
|
- name: Setup | Cache
|
|
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Build | Lint
|
2023-11-22 08:03:48 +01:00
|
|
|
uses: giraffate/clippy-action@94e9bd8deab2618756ec5380f12eb35bcb0a88ca
|
2019-10-04 08:12:48 +02:00
|
|
|
|
|
|
|
# Ensure that the project could be successfully compiled
|
|
|
|
cargo_check:
|
|
|
|
name: Compile
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Checkout
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2020-05-25 02:45:47 +02:00
|
|
|
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@stable
|
2020-07-07 18:28:37 +02:00
|
|
|
|
2022-11-21 17:54:59 +01:00
|
|
|
- name: Setup | Cache
|
|
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Build | Check
|
2021-04-21 17:21:18 +02:00
|
|
|
run: cargo check --workspace --locked
|
2019-10-04 08:12:48 +02:00
|
|
|
|
2022-01-16 20:29:28 +01:00
|
|
|
# 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
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2022-01-16 20:29:28 +01:00
|
|
|
|
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@stable
|
2022-01-16 20:29:28 +01:00
|
|
|
|
2022-11-21 17:54:59 +01:00
|
|
|
- name: Setup | Cache
|
|
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
|
2022-01-16 20:29:28 +01:00
|
|
|
- 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
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2022-01-16 20:29:28 +01:00
|
|
|
|
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@stable
|
2022-01-16 20:29:28 +01:00
|
|
|
|
2022-11-21 17:54:59 +01:00
|
|
|
- name: Setup | Cache
|
|
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
|
2022-01-16 20:29:28 +01:00
|
|
|
- name: Build | Check
|
|
|
|
run: cargo check --workspace --locked --all-features
|
|
|
|
|
2022-04-01 17:14:05 +02:00
|
|
|
# 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
|
2023-03-02 18:49:26 +01:00
|
|
|
permissions:
|
|
|
|
checks: write
|
|
|
|
contents: read
|
|
|
|
pull-requests: write
|
2022-04-01 17:14:05 +02:00
|
|
|
steps:
|
|
|
|
- name: Setup | Checkout
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2022-04-01 17:14:05 +02:00
|
|
|
|
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@stable
|
2022-04-01 17:14:05 +02:00
|
|
|
|
2022-11-21 17:54:59 +01:00
|
|
|
- name: Setup | Cache
|
|
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
|
2022-04-01 17:14:05 +02:00
|
|
|
- name: Run | Generate Schema
|
2022-04-18 17:42:47 +02:00
|
|
|
run: cargo run --locked --features config-schema -- config-schema > .github/config-schema.json
|
2022-04-01 17:14:05 +02:00
|
|
|
|
|
|
|
- name: Check | Detect Changes
|
2024-02-08 20:23:39 +01:00
|
|
|
uses: reviewdog/action-suggester@v1.11.0
|
2023-03-02 18:49:26 +01:00
|
|
|
with:
|
|
|
|
tool_name: starship config-schema
|
|
|
|
filter_mode: nofilter
|
|
|
|
fail_on_error: 'true'
|
2022-04-01 17:14:05 +02:00
|
|
|
|
2019-10-15 17:10:16 +02:00
|
|
|
# Run tests on Linux, macOS, and Windows
|
2019-10-04 08:12:48 +02:00
|
|
|
# On both Rust stable and Rust nightly
|
|
|
|
test:
|
|
|
|
name: Test Suite
|
|
|
|
runs-on: ${{ matrix.os }}
|
2020-07-07 18:28:37 +02:00
|
|
|
needs: cargo_check # First check then run expansive tests
|
2019-10-04 08:12:48 +02:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
2019-10-15 17:10:16 +02:00
|
|
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
2020-10-21 09:17:54 +02:00
|
|
|
rust: [stable, nightly]
|
2022-06-02 22:26:10 +02:00
|
|
|
include:
|
|
|
|
- os: windows-latest
|
|
|
|
rustflags: -C target-feature=+crt-static
|
|
|
|
env:
|
|
|
|
RUSTFLAGS: ${{ matrix.rustflags || '' }}
|
2019-10-04 08:12:48 +02:00
|
|
|
steps:
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Checkout
|
2024-01-07 03:05:37 +01:00
|
|
|
uses: actions/checkout@v4
|
2019-10-04 08:12:48 +02:00
|
|
|
|
|
|
|
# Install all the required dependencies for testing
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Rust
|
2023-05-01 22:15:50 +02:00
|
|
|
uses: dtolnay/rust-toolchain@master
|
2019-10-04 08:12:48 +02:00
|
|
|
with:
|
2020-07-08 17:53:03 +02:00
|
|
|
toolchain: ${{ matrix.rust }}
|
2022-04-09 02:20:24 +02:00
|
|
|
components: llvm-tools-preview
|
2019-10-04 08:12:48 +02:00
|
|
|
|
2022-11-21 17:54:59 +01:00
|
|
|
- name: Setup | Cache
|
|
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
|
2022-04-09 02:20:24 +02:00
|
|
|
- name: Install cargo-llvm-cov
|
|
|
|
uses: taiki-e/install-action@cargo-llvm-cov
|
|
|
|
|
2022-06-02 22:26:10 +02:00
|
|
|
# For windows installer test
|
|
|
|
# On stable rust & main repo pushes only
|
|
|
|
- name: Install cargo-wix [Windows]
|
|
|
|
continue-on-error: true
|
2022-06-15 23:30:22 +02:00
|
|
|
if: matrix.os == 'windows-latest' && matrix.rust == 'stable'
|
2022-11-12 17:51:30 +01:00
|
|
|
run: cargo install --version 0.3.4 cargo-wix
|
2022-06-02 22:26:10 +02:00
|
|
|
env:
|
|
|
|
# cargo-wix does not require static crt
|
2023-01-18 04:03:53 +01:00
|
|
|
RUSTFLAGS: ""
|
2022-06-02 22:26:10 +02:00
|
|
|
|
2020-01-18 02:43:29 +01:00
|
|
|
# Install Mercurial (pre-installed on Linux and windows)
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Setup | Mercurial (macos)
|
2019-12-02 23:37:18 +01:00
|
|
|
if: matrix.os == 'macOS-latest'
|
2021-01-19 22:13:09 +01:00
|
|
|
run: brew install mercurial
|
2019-12-13 20:22:38 +01:00
|
|
|
|
2019-10-04 08:12:48 +02:00
|
|
|
# Run the ignored tests that expect the above setup
|
2020-07-07 18:28:37 +02:00
|
|
|
- name: Build | Test
|
2022-04-09 02:20:24 +02:00
|
|
|
run: "cargo llvm-cov
|
|
|
|
--all-features
|
|
|
|
--locked
|
|
|
|
--workspace
|
|
|
|
--lcov --output-path lcov.info
|
|
|
|
-- --include-ignored"
|
2022-02-22 21:16:52 +01:00
|
|
|
env:
|
|
|
|
# Avoid -D warnings on nightly builds
|
|
|
|
RUSTFLAGS: ""
|
2022-04-09 02:20:24 +02:00
|
|
|
|
2022-06-02 22:26:10 +02:00
|
|
|
- name: Build | Installer [Windows]
|
|
|
|
continue-on-error: true
|
2022-06-15 23:30:22 +02:00
|
|
|
if: matrix.os == 'windows-latest' && matrix.rust == 'stable'
|
2023-05-01 22:15:50 +02:00
|
|
|
run: cargo wix --dbg-build -v --nocapture -I install/windows/main.wxs
|
2022-06-02 22:26:10 +02:00
|
|
|
|
2022-11-25 17:19:03 +01:00
|
|
|
- name: Build | Chocolatey Package [Windows]
|
|
|
|
continue-on-error: true
|
|
|
|
if: matrix.os == 'windows-latest' && matrix.rust == 'stable'
|
|
|
|
run: |
|
|
|
|
# Setup dummy release artifacts
|
2023-02-28 06:03:32 +01:00
|
|
|
foreach ($arch in @("aarch64", "i686", "x86_64")) {
|
|
|
|
foreach ($ext in @("zip", "msi")) {
|
|
|
|
New-Item -ItemType Directory -Path ./starship-$arch-pc-windows-msvc.$ext
|
|
|
|
New-Item -ItemType File -Path ./starship-$arch-pc-windows-msvc.$ext/starship-$arch-pc-windows-msvc.$ext
|
|
|
|
}
|
|
|
|
}
|
2022-11-25 17:19:03 +01:00
|
|
|
# Build package
|
|
|
|
pwsh ./install/windows/choco/update.ps1
|
|
|
|
env:
|
|
|
|
STARSHIP_VERSION: v1.2.3
|
|
|
|
|
2022-04-09 02:20:24 +02:00
|
|
|
- name: Upload coverage to Codecov
|
2024-03-09 08:07:25 +01:00
|
|
|
uses: codecov/codecov-action@v4
|
2022-04-12 18:01:49 +02:00
|
|
|
if: github.repository == 'starship/starship'
|
2022-04-09 02:20:24 +02:00
|
|
|
with:
|
2022-04-12 18:01:49 +02:00
|
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
2022-04-09 02:20:24 +02:00
|
|
|
files: lcov.info
|