mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-06-30 11:23:33 +00:00
Style auto format (#2557)
* Autoformat script * Executable + package.json * Fix pnpm format not exiting * Fix exit handling * Allow to only run fontend autoformat * Rename script to autoformat.sh - Fix exit handling * Add style check to CI - Replace deprecated actions-rs-plus/clippy-check@v2 with giraffate/clippy-action@v1 * Use HEAD as ancestor when running in CI * Improve uncommmited erro message * Increate timeout for Type and style check action * Run Clippy when ci.yml file changes * increase cypress timeout
This commit is contained in:
parent
f1255f9e23
commit
8e8747a769
58
.github/workflows/ci.yml
vendored
58
.github/workflows/ci.yml
vendored
|
@ -20,9 +20,9 @@ concurrency:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
typescript:
|
typescript:
|
||||||
name: TypeScript
|
name: Type and style check
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
timeout-minutes: 3
|
timeout-minutes: 7
|
||||||
permissions: {}
|
permissions: {}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
|
@ -36,6 +36,15 @@ jobs:
|
||||||
- name: Perform typechecks
|
- name: Perform typechecks
|
||||||
run: pnpm typecheck
|
run: pnpm typecheck
|
||||||
|
|
||||||
|
- name: Perform style check
|
||||||
|
run: |-
|
||||||
|
set -eux
|
||||||
|
pnpm autoformat only-frontend
|
||||||
|
if [ -n "$(git diff --name-only --cached)" ]; then
|
||||||
|
echo "Some files are not correctly formatted. Please run 'pnpm autoformat' and commit the changes." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
eslint:
|
eslint:
|
||||||
name: ESLint
|
name: ESLint
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
@ -56,7 +65,7 @@ jobs:
|
||||||
cypress:
|
cypress:
|
||||||
name: Cypress
|
name: Cypress
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
timeout-minutes: 30
|
timeout-minutes: 45
|
||||||
permissions: {}
|
permissions: {}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
|
@ -174,11 +183,20 @@ jobs:
|
||||||
run: cargo fmt --all -- --check
|
run: cargo fmt --all -- --check
|
||||||
|
|
||||||
clippy:
|
clippy:
|
||||||
name: Clippy (${{ matrix.platform }})
|
|
||||||
runs-on: ${{ matrix.platform }}
|
|
||||||
strategy:
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
matrix:
|
matrix:
|
||||||
platform: [ubuntu-22.04, macos-14, windows-latest]
|
settings:
|
||||||
|
- host: macos-13
|
||||||
|
target: x86_64-apple-darwin
|
||||||
|
- host: macos-14
|
||||||
|
target: aarch64-apple-darwin
|
||||||
|
- host: windows-latest
|
||||||
|
target: x86_64-pc-windows-msvc
|
||||||
|
- host: ubuntu-22.04
|
||||||
|
target: x86_64-unknown-linux-gnu
|
||||||
|
name: Clippy (${{ matrix.settings.host }})
|
||||||
|
runs-on: ${{ matrix.settings.host }}
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
|
@ -223,6 +241,7 @@ jobs:
|
||||||
- 'extensions/*/**'
|
- 'extensions/*/**'
|
||||||
- 'Cargo.toml'
|
- 'Cargo.toml'
|
||||||
- 'Cargo.lock'
|
- 'Cargo.lock'
|
||||||
|
- '.github/workflows/ci.yml'
|
||||||
|
|
||||||
- name: Setup System and Rust
|
- name: Setup System and Rust
|
||||||
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true'
|
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true'
|
||||||
|
@ -232,22 +251,15 @@ jobs:
|
||||||
|
|
||||||
- name: Run Clippy
|
- name: Run Clippy
|
||||||
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true'
|
if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true'
|
||||||
uses: actions-rs-plus/clippy-check@v2
|
uses: giraffate/clippy-action@v1
|
||||||
with:
|
with:
|
||||||
args: --workspace --all-features --locked
|
reporter: github-pr-review
|
||||||
|
tool_name: 'Clippy (${{ matrix.settings.host }})'
|
||||||
|
filter_mode: diff_context
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
clippy_flags: --workspace --all-features --locked
|
||||||
|
fail_on_error: true
|
||||||
|
|
||||||
# test:
|
# - name: Run tests
|
||||||
# name: Test (${{ matrix.platform }})
|
# if: steps.filter.outcome != 'success' || steps.filter.outputs.changes == 'true'
|
||||||
# runs-on: ${{ matrix.platform }}
|
# run: cargo test --workspace --all-features --locked --target ${{ matrix.settings.target }}
|
||||||
# strategy:
|
|
||||||
# matrix:
|
|
||||||
# platform: [ubuntu-22.04, macos-latest, windows-latest]
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout repository
|
|
||||||
# uses: actions/checkout@v4
|
|
||||||
#
|
|
||||||
# - name: Setup
|
|
||||||
# uses: ./.github/actions/setup
|
|
||||||
#
|
|
||||||
# - name: Test
|
|
||||||
# run: cargo test --workspace --all-features
|
|
||||||
|
|
|
@ -97,6 +97,8 @@ After cleaning out your build artifacts using `pnpm clean`, `git clean`, or `car
|
||||||
|
|
||||||
Make sure to read the [guidelines](https://spacedrive.com/docs/developers/prerequisites/guidelines) to ensure that your code follows a similar style to ours.
|
Make sure to read the [guidelines](https://spacedrive.com/docs/developers/prerequisites/guidelines) to ensure that your code follows a similar style to ours.
|
||||||
|
|
||||||
|
After you finish making your changes and committed them to your branch, make sure to execute `pnpm autoformat` to fix any style inconsistency in your code.
|
||||||
|
|
||||||
##### Mobile App
|
##### Mobile App
|
||||||
|
|
||||||
To run the mobile app:
|
To run the mobile app:
|
||||||
|
|
|
@ -31,7 +31,8 @@
|
||||||
"lint:fix": "turbo run lint -- --fix",
|
"lint:fix": "turbo run lint -- --fix",
|
||||||
"clean": "cargo clean; git clean -qfX .",
|
"clean": "cargo clean; git clean -qfX .",
|
||||||
"test-data": "./scripts/test-data.sh",
|
"test-data": "./scripts/test-data.sh",
|
||||||
"i18n:sync": "npx i18next-locales-sync -p en -s $(find ./interface/locales -wholename '*/common.json' | awk -F'/' '$4 != \"en\" { ORS=\" \"; print $4 }') -l ./interface/locales"
|
"i18n:sync": "npx i18next-locales-sync -p en -s $(find ./interface/locales -wholename '*/common.json' | awk -F'/' '$4 != \"en\" { ORS=\" \"; print $4 }') -l ./interface/locales",
|
||||||
|
"autoformat": "./scripts/autoformat.sh"
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"patchedDependencies": {
|
"patchedDependencies": {
|
||||||
|
|
75
scripts/autoformat.sh
Executable file
75
scripts/autoformat.sh
Executable file
|
@ -0,0 +1,75 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -Eeumo pipefail
|
||||||
|
|
||||||
|
has() {
|
||||||
|
command -v "$1" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_exit() {
|
||||||
|
_exit=$?
|
||||||
|
set +e
|
||||||
|
trap '' SIGINT
|
||||||
|
trap - EXIT
|
||||||
|
if [ "$_exit" -ne 0 ]; then
|
||||||
|
git restore --staged .
|
||||||
|
git restore .
|
||||||
|
fi
|
||||||
|
exit "$_exit"
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
set +e
|
||||||
|
trap '' SIGINT
|
||||||
|
trap - EXIT
|
||||||
|
jobs -p | xargs kill -SIGTERM
|
||||||
|
git restore --staged .
|
||||||
|
git restore .
|
||||||
|
kill -- -$$ 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! has git pnpm; then
|
||||||
|
echo "Missing at on of the required dependencies: git, pnpm" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
__dirname="$(CDPATH='' cd "$(dirname "$0")" && pwd -P)"
|
||||||
|
|
||||||
|
# Change to the root directory of the repository
|
||||||
|
cd "$__dirname/.."
|
||||||
|
|
||||||
|
if [ -n "$(git diff --name-only HEAD)" ] || [ -n "$(git ls-files --others --exclude-standard)" ]; then
|
||||||
|
echo "Uncommitted changes found. Please commit or stash your changes before running this script." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find the common ancestor of the current branch and main
|
||||||
|
if [ -n "${CI:-}" ]; then
|
||||||
|
ancestor="HEAD"
|
||||||
|
elif ! ancestor="$(git merge-base HEAD origin/main)"; then
|
||||||
|
echo "Failed to find the common ancestor of the current branch and main." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Handle errors and cleanup after formating has started
|
||||||
|
trap 'handle_exit' EXIT
|
||||||
|
trap 'cleanup' SIGINT
|
||||||
|
|
||||||
|
# Run the linter and formatter for frontend
|
||||||
|
# Use a background processes to avoid pnpm weird handling of CTRL+C
|
||||||
|
pnpm run -r lint --fix &
|
||||||
|
wait
|
||||||
|
pnpm run format &
|
||||||
|
wait
|
||||||
|
|
||||||
|
if [ "${1:-}" != "only-frontend" ]; then
|
||||||
|
# Run clippy and formatter for backend
|
||||||
|
cargo clippy --fix --all --all-targets --all-features --allow-dirty --allow-staged
|
||||||
|
cargo fmt --all
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add all fixes for changes made in this branch
|
||||||
|
git diff --cached --name-only "$ancestor" | xargs git add
|
||||||
|
|
||||||
|
# Restore unrelated changes
|
||||||
|
git restore .
|
Loading…
Reference in a new issue