forked from auracaster/bumble_mirror
Further adventures in porting tools to Rust to flesh out the supported API. These tools didn't feel like `example`s, so I made a top level `bumble` CLI tool that hosts them all as subcommands. I also moved the usb probe not-really-an-`example` into it as well. I'm open to suggestions on how best to organize the subcommands to make them intuitive to explore with `--help`, and how to leave room for other future tools. I also adopted the per-OS project data dir for a default firmware location so that users can download once and then use those .bin files from anywhere without having to sprinkle .bin files in project directories or reaching inside the python package dir hierarchy.
77 lines
2.4 KiB
YAML
77 lines
2.4 KiB
YAML
# Build and test the python package
|
|
name: Python build and test
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version: ["3.8", "3.9", "3.10", "3.11"]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- name: Check out from Git
|
|
uses: actions/checkout@v3
|
|
- name: Get history and tags for SCM versioning to work
|
|
run: |
|
|
git fetch --prune --unshallow
|
|
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install ".[build,test,development,documentation]"
|
|
- name: Test
|
|
run: |
|
|
invoke test
|
|
- name: Build
|
|
run: |
|
|
inv build
|
|
inv build.mkdocs
|
|
build-rust:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version: [ "3.8", "3.9", "3.10", "3.11" ]
|
|
rust-version: [ "1.70.0", "stable" ]
|
|
fail-fast: false
|
|
steps:
|
|
- name: Check out from Git
|
|
uses: actions/checkout@v3
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install ".[build,test,development,documentation]"
|
|
- name: Install Rust toolchain
|
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
with:
|
|
components: clippy,rustfmt
|
|
toolchain: ${{ matrix.rust-version }}
|
|
- name: Rust Build
|
|
run: cd rust && cargo build --all-targets && cargo build --all-features --all-targets
|
|
# Lints after build so what clippy needs is already built
|
|
- name: Rust Lints
|
|
run: cd rust && cargo fmt --check && cargo clippy --all-targets -- --deny warnings && cargo clippy --all-features --all-targets -- --deny warnings
|
|
- name: Rust Tests
|
|
run: cd rust && cargo test
|
|
# At some point, hook up publishing the binary. For now, just make sure it builds.
|
|
# Once we're ready to publish binaries, this should be built with `--release`.
|
|
- name: Build Bumble CLI
|
|
run: cd rust && cargo build --features bumble-tools --bin bumble |