Skip to content

Commit 93b63a4

Browse files
authored
chore: align precommit with devtools (#774)
1 parent baf4934 commit 93b63a4

File tree

4 files changed

+76
-5
lines changed

4 files changed

+76
-5
lines changed

.husky/pre-commit

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env sh
2+
. "$(dirname -- "$0")/_/husky.sh"
3+
4+
# List staged files only.
5+
fileList=$(git diff --diff-filter=AM --cached --name-only)
6+
7+
npm run precommit $fileList

package-lock.json

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@
6262
"reformat": "prettier --write .",
6363
"snyk-test": "node scripts/snyk-test.js",
6464
"generate-vulnerability-report": "mongodb-sbom-tools generate-vulnerability-report --snyk-reports=.sbom/snyk-test-result.json --dependencies=.sbom/dependencies.json --fail-on=high",
65-
"create-vulnerability-tickets": "mongodb-sbom-tools generate-vulnerability-report --snyk-reports=.sbom/snyk-test-result.json --dependencies=.sbom/dependencies.json --create-jira-issues"
65+
"create-vulnerability-tickets": "mongodb-sbom-tools generate-vulnerability-report --snyk-reports=.sbom/snyk-test-result.json --dependencies=.sbom/dependencies.json --create-jira-issues",
66+
"prepare": "husky",
67+
"precommit": "ts-node ./scripts/precommit.ts"
6668
},
6769
"engines": {
6870
"vscode": "^1.92.1",
@@ -1154,6 +1156,7 @@
11541156
"eslint-plugin-mocha": "^10.5.0",
11551157
"fork-ts-checker-webpack-plugin": "^9.0.2",
11561158
"glob": "^7.2.3",
1159+
"husky": "^9.1.4",
11571160
"jsdom": "^23.2.0",
11581161
"mkdirp": "^1.0.4",
11591162
"mocha": "^10.7.3",
@@ -1184,8 +1187,5 @@
11841187
},
11851188
"overrides": {
11861189
"react": "^18.3.1"
1187-
},
1188-
"precommit": [
1189-
"check"
1190-
]
1190+
}
11911191
}

scripts/precommit.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#! /usr/bin/env ts-node
2+
/* eslint-disable no-console */
3+
4+
import path from 'path';
5+
import { promisify } from 'util';
6+
import { execFile } from 'child_process';
7+
const execFileAsync = promisify(execFile);
8+
9+
async function main(fileList: string[]) {
10+
if (fileList.length === 0) {
11+
console.log('No files to re-format. Skipping ...');
12+
return;
13+
}
14+
15+
console.log('Re-formatting following files ...');
16+
fileList.map((filePath) => {
17+
console.log(` - ${path.relative(process.cwd(), filePath)}`);
18+
});
19+
20+
await execFileAsync('npx', [
21+
'prettier',
22+
'--config',
23+
require.resolve('@mongodb-js/prettier-config-devtools/.prettierrc.json'),
24+
// Silently ignore files that are of format that is not supported by prettier.
25+
'--ignore-unknown',
26+
'--write',
27+
...fileList,
28+
]);
29+
30+
// Re-add potentially reformatted files.
31+
await execFileAsync('git', ['add', ...fileList]);
32+
}
33+
34+
const fileList = process.argv
35+
.slice(
36+
process.argv.findIndex((filename) => filename.includes('precommit')) + 1
37+
)
38+
.filter((arg) => !arg.startsWith('-'))
39+
.map((filePath) => {
40+
return path.resolve(process.cwd(), filePath);
41+
});
42+
43+
main(fileList).catch((err) =>
44+
process.nextTick(() => {
45+
throw err;
46+
})
47+
);

0 commit comments

Comments
 (0)