mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-19 00:41:41 +00:00
This PR updates everything for 2027. This includes removing GradleRIO, simplifying our wpilib version defintion, updating APIs, updating to Java 21, and more. Note that photonlibpy is failing because robotpy has not been fully updated yet. Examples are omitted because they need to be updated for our new PhotonPoseEstimator API and still need some changes from WPILIB. photonlib windows build is failing because we're waiting for some upstream changes. Finally, images are failing since they don't have Java 21 yet.
113 lines
3.3 KiB
YAML
113 lines
3.3 KiB
YAML
name: Lint and Format
|
|
|
|
on:
|
|
# Run on pushes to main and pushed tags, and on pull requests against main, but ignore the docs folder
|
|
push:
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
validation:
|
|
name: "Validation"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: gradle/actions/wrapper-validation@v5
|
|
wpiformat:
|
|
name: "wpiformat"
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Fetch all history and metadata
|
|
run: |
|
|
git fetch --prune --unshallow
|
|
git checkout -b pr
|
|
git branch -f main origin/main
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: 3.14
|
|
- name: Install wpiformat
|
|
run: pip3 install wpiformat==2025.79
|
|
- name: Run
|
|
run: wpiformat
|
|
- name: Check output
|
|
run: |
|
|
set +e
|
|
git --no-pager diff --exit-code HEAD
|
|
exit_code=$?
|
|
if test "$exit_code" -ne "0"; then
|
|
echo "::error ::Linting failed. See https://docs.photonvision.org/en/latest/docs/contributing/linting.html"
|
|
exit $exit_code
|
|
fi
|
|
- name: Generate diff
|
|
run: git diff HEAD > wpiformat-fixes.patch
|
|
if: ${{ failure() }}
|
|
- uses: actions/upload-artifact@v7
|
|
with:
|
|
archive: false
|
|
path: wpiformat-fixes.patch
|
|
if: ${{ failure() }}
|
|
javaformat:
|
|
name: "Java Formatting"
|
|
needs: [validation]
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-java@v5
|
|
with:
|
|
java-version: 21
|
|
distribution: temurin
|
|
- run: |
|
|
set +e
|
|
./gradlew spotlessCheck
|
|
exit_code=$?
|
|
if test "$exit_code" -ne "0"; then
|
|
echo "::error ::Linting failed. See https://docs.photonvision.org/en/latest/docs/contributing/linting.html"
|
|
exit $exit_code
|
|
fi
|
|
name: Run spotless
|
|
client-lint-format:
|
|
name: "PhotonClient Lint and Formatting"
|
|
defaults:
|
|
run:
|
|
working-directory: photon-client
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install pnpm
|
|
uses: pnpm/action-setup@v5
|
|
with:
|
|
version: 10
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
cache-dependency-path: photon-client/pnpm-lock.yaml
|
|
- name: Install Dependencies
|
|
run: pnpm i --frozen-lockfile
|
|
- name: Check Linting
|
|
run: |
|
|
set +e
|
|
pnpm run lint-ci
|
|
exit_code=$?
|
|
if test "$exit_code" -ne "0"; then
|
|
echo "::error ::Linting failed. See https://docs.photonvision.org/en/latest/docs/contributing/linting.html"
|
|
exit $exit_code
|
|
fi
|
|
- name: Check Formatting
|
|
run: |
|
|
set +e
|
|
pnpm run format-ci
|
|
exit_code=$?
|
|
if test "$exit_code" -ne "0"; then
|
|
echo "::error ::Linting failed. See https://docs.photonvision.org/en/latest/docs/contributing/linting.html"
|
|
exit $exit_code
|
|
fi
|