feat(dev-infra): Add support for formatting all staged files (#38402)
Adds an ng-dev formatter option to format all of the staged files. This will can be used to format only the staged files during the pre-commit hook. PR Close #38402
This commit is contained in:
parent
a6292faa97
commit
28534d83ee
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
import * as yargs from 'yargs';
|
import * as yargs from 'yargs';
|
||||||
|
|
||||||
import {allChangedFilesSince, allFiles} from '../utils/repo-files';
|
import {allChangedFilesSince, allFiles, allStagedFiles} from '../utils/repo-files';
|
||||||
|
|
||||||
import {checkFiles, formatFiles} from './format';
|
import {checkFiles, formatFiles} from './format';
|
||||||
|
|
||||||
|
@ -34,6 +34,12 @@ export function buildFormatParser(localYargs: yargs.Argv) {
|
||||||
const executionCmd = check ? checkFiles : formatFiles;
|
const executionCmd = check ? checkFiles : formatFiles;
|
||||||
executionCmd(allChangedFilesSince(sha));
|
executionCmd(allChangedFilesSince(sha));
|
||||||
})
|
})
|
||||||
|
.command(
|
||||||
|
'staged', 'Run the formatter on all staged files', {},
|
||||||
|
({check}) => {
|
||||||
|
const executionCmd = check ? checkFiles : formatFiles;
|
||||||
|
executionCmd(allStagedFiles());
|
||||||
|
})
|
||||||
.command('files <files..>', 'Run the formatter on provided files', {}, ({check, files}) => {
|
.command('files <files..>', 'Run the formatter on provided files', {}, ({check, files}) => {
|
||||||
const executionCmd = check ? checkFiles : formatFiles;
|
const executionCmd = check ? checkFiles : formatFiles;
|
||||||
executionCmd(files);
|
executionCmd(files);
|
||||||
|
|
|
@ -27,6 +27,18 @@ export function allChangedFilesSince(sha = 'HEAD') {
|
||||||
return Array.from(new Set([...diffFiles, ...untrackedFiles]));
|
return Array.from(new Set([...diffFiles, ...untrackedFiles]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of all staged files which have been modified.
|
||||||
|
*
|
||||||
|
* Only added, created and modified files are listed as others (deleted, renamed, etc) aren't
|
||||||
|
* changed or available as content to act upon.
|
||||||
|
*/
|
||||||
|
export function allStagedFiles() {
|
||||||
|
return gitOutputAsArray(`git diff --staged --name-only --diff-filter=ACM`);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export function allFiles() {
|
export function allFiles() {
|
||||||
return gitOutputAsArray(`git ls-files`);
|
return gitOutputAsArray(`git ls-files`);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue