diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index c766548..5fb7c07 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -20,37 +20,61 @@ jobs: python3 \ py3-pip \ rust + apk add --no-cache qt6-qtdeclarative-dev-tools || \ + apk add --no-cache qt6-qtdeclarative-dev || \ + apk add --no-cache qt6-qtdeclarative || \ + echo "::warning::qmllint not available" - - name: Python sanity check + - name: Python lint run: | - python3 --version python3 -m venv .venv . .venv/bin/activate pip install --no-cache-dir ruff - ruff check . || true + if ! ruff check .; then + echo "::warning::ruff reported issues" + fi - - name: JS sanity check + - name: JS lint run: | - node --version - npm --version if [ -f package.json ]; then - npm install --no-audit --no-fund || true - npx eslint . || true + npm install --no-audit --no-fund + if ! npx eslint .; then + echo "::warning::eslint reported issues" + fi else echo "No JS project found" fi - - name: Rust sanity check + - name: JS format (prettier) + run: | + if [ -f package.json ]; then + if ! npx --yes prettier --check "**/*.{js,jsx,ts,tsx,mjs,cjs}" --ignore-path .gitignore; then + echo "::warning::prettier reported issues" + fi + else + echo "No JS project found" + fi + + - name: Rust lint run: | - rustc --version if [ -f Cargo.toml ]; then - cargo check || true - cargo fmt --check || true + if ! cargo fmt --check; then + echo "::warning::rustfmt reported issues" + fi else echo "No Rust project found" fi - - name: QML sanity check + - name: QML lint run: | - echo "QML check (placeholder)" - find . -name "*.qml" | head -n 20 + if command -v qmllint >/dev/null 2>&1; then + if [ -n "$(find . -name "*.qml" -print -quit)" ]; then + if ! find . -name "*.qml" -print0 | xargs -0 qmllint; then + echo "::warning::qmllint reported issues" + fi + else + echo "No QML files found" + fi + else + echo "No qmllint in PATH" + fi diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..19ffb91 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,13 @@ +{ + "semi": true, + "singleQuote": true, + "jsxSingleQuote": false, + "tabWidth": 4, + "printWidth": 100, + "trailingComma": "es5", + "bracketSpacing": true, + "bracketSameLine": false, + "arrowParens": "always", + "endOfLine": "lf", + "proseWrap": "preserve" +}