build: replace husky with lefthook

This commit is contained in:
2026-04-07 00:09:58 +03:00
parent 48dc35ff41
commit af61dc369b
5 changed files with 1308 additions and 836 deletions

View File

@@ -1,3 +0,0 @@
#!/usr/bin/env bash
export PHP_CS_FIXER_IGNORE_ENV=1
pnpm lint-staged -- --relative

View File

@@ -1,17 +0,0 @@
module.exports = {
'*.{ts,vue}': ['eslint --fix'],
'*.{scss,vue,ts,md}': ['prettier --write'],
'*.json': (files) => {
const filtered = files.filter(file => !file.includes('openapi.json'))
return filtered.length > 0 ? `prettier --write ${filtered.join(' ')}` : []
},
'*.php': (files) => {
const nonGenFiles = files.filter(file => !file.includes('/gen/'))
const commands = []
if (nonGenFiles.length > 0) {
commands.push('make php-cs-fixer', 'make test')
}
return commands
},
'*Controller.php': [() => 'make openapi', () => 'git add openapi.json'],
}

22
lefthook.yml Normal file
View File

@@ -0,0 +1,22 @@
pre-commit:
parallel: true
commands:
eslint:
glob: "*.{ts,vue}"
run: pnpm eslint --fix {staged_files} && git add {staged_files}
prettier:
glob: "*.{scss,vue,ts,md}"
run: pnpm prettier --write {staged_files} && git add {staged_files}
prettier-json:
glob: "*.json"
exclude: "openapi.json"
run: pnpm prettier --write {staged_files} && git add {staged_files}
php-cs-fixer:
glob: "*.php"
exclude: "/gen/"
env:
PHP_CS_FIXER_IGNORE_ENV: "1"
run: make php-cs-fixer && make test
openapi:
glob: "*Controller.php"
run: make openapi && git add openapi.json

View File

@@ -7,12 +7,13 @@
"node": "^22.19.0",
"pnpm": "^10.17.0"
},
"packageManager": "pnpm@10.28.0",
"scripts": {
"dev": "vite build --watch",
"build": "vite build",
"lint": "eslint src",
"format": "eslint --fix src && prettier --write {vite.config.ts,src/,README.md}",
"prepare": "husky",
"prepare": "lefthook install",
"gen": "simple-scaffold -c . -k",
"test": "vitest",
"test:run": "vitest run"
@@ -22,37 +23,41 @@
],
"dependencies": {
"@nextcloud/axios": "^2.5.2",
"@nextcloud/dialogs": "^7.3.0",
"@nextcloud/l10n": "^3.4.1",
"@nextcloud/router": "^3.1.0",
"@nextcloud/vite-config": "^2.5.2",
"@nextcloud/vue": "^9.5.0",
"@nextcloud/vue": "^9.6.0",
"date-fns": "^4.1.0",
"linkifyjs": "^4.3.2",
"vue": "^3.5.28",
"rrule": "^2.8.1",
"vue": "^3.5.32",
"vue-material-design-icons": "^5.3.1"
},
"pnpm": {
"onlyBuiltDependencies": ["lefthook"]
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@nextcloud/browserslist-config": "^3.1.2",
"@nextcloud/eslint-config": "^8.4.2",
"@nextcloud/stylelint-config": "^3.2.1",
"@vitejs/plugin-vue": "^6.0.4",
"@vitejs/plugin-vue": "^6.0.5",
"@vue/test-utils": "^2.4.6",
"@vue/tsconfig": "^0.8.1",
"eslint": "^10.0.2",
"happy-dom": "^20.7.0",
"husky": "^9.1.7",
"lint-staged": "^16.2.7",
"@vue/tsconfig": "^0.9.1",
"eslint": "^10.2.0",
"happy-dom": "^20.8.9",
"lefthook": "^1.12.5",
"prettier": "^3.8.1",
"rollup-plugin-visualizer": "^7.0.0",
"sass": "^1.97.3",
"sass-embedded": "^1.97.3",
"typescript": "^5.9.3",
"typescript-eslint": "^8.56.1",
"vite": "^7.3.1",
"rollup-plugin-visualizer": "^7.0.1",
"sass": "^1.99.0",
"sass-embedded": "^1.99.0",
"typescript": "^6.0.2",
"typescript-eslint": "^8.58.0",
"vite": "^8.0.3",
"vite-plugin-checker": "^0.12.0",
"vitest": "^4.0.18",
"vue-router": "^5.0.3",
"vue-tsc": "^3.2.5"
"vitest": "^4.1.2",
"vue-router": "^5.0.4",
"vue-tsc": "^3.2.6"
}
}

2061
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff