41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @license
							 | 
						||
| 
								 | 
							
								 * Copyright Google Inc. 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 {exec} from 'shelljs';
							 | 
						||
| 
								 | 
							
								import {getRepoBaseDir} from './config';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 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]));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function allFiles() {
							 | 
						||
| 
								 | 
							
								  return gitOutputAsArray(`git ls-files`);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function gitOutputAsArray(cmd: string) {
							 | 
						||
| 
								 | 
							
								  return exec(cmd, {cwd: getRepoBaseDir(), silent: true})
							 | 
						||
| 
								 | 
							
								      .split('\n')
							 | 
						||
| 
								 | 
							
								      .map(x => x.trim())
							 | 
						||
| 
								 | 
							
								      .filter(x => !!x);
							 | 
						||
| 
								 | 
							
								}
							 |