source: imaps-frontend/node_modules/node-addon-api/tools/clang-format.js@ 0c6b92a

main
Last change on this file since 0c6b92a was 0c6b92a, checked in by stefan toskovski <stefantoska84@…>, 5 weeks ago

Pred finalna verzija

  • Property mode set to 100644
File size: 2.0 KB
Line 
1#!/usr/bin/env node
2
3const spawn = require('child_process').spawnSync;
4const path = require('path');
5
6const filesToCheck = ['*.h', '*.cc'];
7const FORMAT_START = process.env.FORMAT_START || 'main';
8
9function main (args) {
10 let fix = false;
11 while (args.length > 0) {
12 switch (args[0]) {
13 case '-f':
14 case '--fix':
15 fix = true;
16 break;
17 default:
18 }
19 args.shift();
20 }
21
22 const clangFormatPath = path.dirname(require.resolve('clang-format'));
23 const binary = process.platform === 'win32'
24 ? 'node_modules\\.bin\\clang-format.cmd'
25 : 'node_modules/.bin/clang-format';
26 const options = ['--binary=' + binary, '--style=file'];
27 if (fix) {
28 options.push(FORMAT_START);
29 } else {
30 options.push('--diff', FORMAT_START);
31 }
32
33 const gitClangFormatPath = path.join(clangFormatPath, 'bin/git-clang-format');
34 const result = spawn(
35 'python',
36 [gitClangFormatPath, ...options, '--', ...filesToCheck],
37 { encoding: 'utf-8' }
38 );
39
40 if (result.stderr) {
41 console.error('Error running git-clang-format:', result.stderr);
42 return 2;
43 }
44
45 const clangFormatOutput = result.stdout.trim();
46 // Bail fast if in fix mode.
47 if (fix) {
48 console.log(clangFormatOutput);
49 return 0;
50 }
51 // Detect if there is any complains from clang-format
52 if (
53 clangFormatOutput !== '' &&
54 clangFormatOutput !== 'no modified files to format' &&
55 clangFormatOutput !== 'clang-format did not modify any files'
56 ) {
57 console.error(clangFormatOutput);
58 const fixCmd = 'npm run lint:fix';
59 console.error(`
60 ERROR: please run "${fixCmd}" to format changes in your commit
61 Note that when running the command locally, please keep your local
62 main branch and working branch up to date with nodejs/node-addon-api
63 to exclude un-related complains.
64 Or you can run "env FORMAT_START=upstream/main ${fixCmd}".`);
65 return 1;
66 }
67}
68
69if (require.main === module) {
70 process.exitCode = main(process.argv.slice(2));
71}
Note: See TracBrowser for help on using the repository browser.