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
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright Google LLC All Rights Reserved.
 | 
						|
 *
 | 
						|
 * Use of this source code is governed by an MIT-style license that can be
 | 
						|
 * found in the LICENSE file at https://angular.io/license
 | 
						|
 */
 | 
						|
 | 
						|
import {getRepoBaseDir} from './config';
 | 
						|
import {exec} from './shelljs';
 | 
						|
 | 
						|
/**
 | 
						|
 * A list of all files currently in the repo which have been modified since the provided sha.
 | 
						|
 *
 | 
						|
 * git diff
 | 
						|
 * Deleted files (--diff-filter=d) are not included as they are not longer present in the repo
 | 
						|
 * and can not be checked anymore.
 | 
						|
 *
 | 
						|
 * git ls-files
 | 
						|
 * Untracked files (--others), which are not matched by .gitignore (--exclude-standard)
 | 
						|
 * as they are expected to become tracked files.
 | 
						|
 */
 | 
						|
export function allChangedFilesSince(sha = 'HEAD') {
 | 
						|
  const diffFiles = gitOutputAsArray(`git diff --name-only --diff-filter=d ${sha}`);
 | 
						|
  const untrackedFiles = gitOutputAsArray(`git ls-files --others --exclude-standard`);
 | 
						|
  // Use a set to deduplicate the list as its possible for a file to show up in both lists.
 | 
						|
  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() {
 | 
						|
  return gitOutputAsArray(`git ls-files`);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function gitOutputAsArray(cmd: string) {
 | 
						|
  return exec(cmd, {cwd: getRepoBaseDir()}).split('\n').map(x => x.trim()).filter(x => !!x);
 | 
						|
}
 |