name: CI
on:
push:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
host:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: app
- uses: actions/checkout@v4
with:
repository: rustscript-lang/rustscript
path: rustscript
- uses: actions/checkout@v4
with:
repository: rustscript-lang/pd-edge
path: pd-edge
- uses: dtolnay/rust-toolchain@stable
- name: Format
run: cargo fmt --all -- --check
working-directory: app
- name: Clippy
run: cargo clippy --all-targets -- -D warnings
working-directory: app
- name: Test
run: cargo test --all-targets
working-directory: app
- name: Examples smoke
run: |
cargo run --example run_file -- programs/blinky.rss | grep 'led:off'
printf 'print(1 + 2);\n.quit\n' | cargo run --example repl | grep '3'
working-directory: app
raspi-zero:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: app
- uses: actions/checkout@v4
with:
repository: rustscript-lang/rustscript
path: rustscript
- uses: actions/checkout@v4
with:
repository: rustscript-lang/pd-edge
path: pd-edge
- name: Install bare-metal emulator packages
run: sudo apt-get update && sudo apt-get install -y qemu-system-arm gcc-arm-none-eabi binutils-arm-none-eabi
- name: Build and run Raspberry Pi Zero bare-metal demo
run: ci/run-qemu-raspi0.sh
working-directory: app
- name: ROM footprint
run: ci/measure-size.sh
working-directory: app