name: CI
on:
push:
pull_request:
permissions:
contents: read
jobs:
supply-chain:
name: Supply chain
runs-on: ubuntu-latest
permissions:
contents: read
checks: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
persist-credentials: false
- name: cargo audit
uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: cargo deny
uses: EmbarkStudios/cargo-deny-action@6c8f9facfa5047ec02d8485b6bf52b587b7777d1 with:
rust-version: "1.85"
command: check advisories licenses bans sources
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 with:
toolchain: stable
- name: Install PCRE2
run: |
if [[ "${{ runner.os }}" == "macOS" ]]; then
brew install pcre2 pkg-config
else
sudo apt-get update
sudo apt-get install -y libpcre2-dev pkg-config
fi
- run: cargo fmt --check
- run: cargo test
- name: Verify generated completions
run: |
cargo run --features completion-generation --bin gen-completions
git diff --exit-code completions/
- name: Privacy scan
run: bash scripts/privacy-scan.sh
- name: Verify Homebrew formula generator
run: |
tmp="$(mktemp -d)"
version="$(awk -F '"' '/^version = / { print $2; exit }' Cargo.toml)"
checksum="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
for target in darwin-aarch64 darwin-x86_64 linux-x86_64; do
printf '%s prismtty-%s-%s.tar.gz\n' "$checksum" "$version" "$target" > "$tmp/prismtty-${version}-${target}.tar.gz.sha256"
done
bash scripts/generate-homebrew-formula.sh "$tmp/prismtty.rb" "$tmp"
grep -F "version \"${version}\"" "$tmp/prismtty.rb"
grep -F 'depends_on "pcre2"' "$tmp/prismtty.rb"
grep -F "linux-x86_64" "$tmp/prismtty.rb"
if grep -n -E "REPLACE_WITH|linux-aarch64" "$tmp/prismtty.rb"; then
echo "Generated Homebrew formula has placeholder checksums or unsupported artifacts."
exit 1
fi
- run: cargo build --release