fix(schematics): fix format command to handle large number of files

This commit is contained in:
vsavkin 2018-01-03 09:34:27 -05:00
parent a6cdd5ac5e
commit 2a892b7a41
2 changed files with 42 additions and 10 deletions

View File

@ -88,7 +88,21 @@ describe('Command line', () => {
updateFile( updateFile(
'apps/myapp/src/main.ts', 'apps/myapp/src/main.ts',
` `
const x = 3232; const x = 1111;
`
);
updateFile(
'apps/myapp/src/app/app.module.ts',
`
const y = 1111;
`
);
updateFile(
'apps/myapp/src/app/app.component.ts',
`
const z = 1111;
` `
); );
@ -97,7 +111,22 @@ describe('Command line', () => {
fail('boom'); fail('boom');
} catch (e) { } catch (e) {
expect(e.stdout.toString()).toContain('apps/myapp/src/main.ts'); expect(e.stdout.toString()).toContain('apps/myapp/src/main.ts');
expect(e.stdout.toString()).toContain('apps/myapp/src/app/app.module.ts');
expect(e.stdout.toString()).toContain('apps/myapp/src/app/app.component.ts');
} }
runCommand(
'npm run format:write -- --files="apps/myapp/src/app/app.module.ts,apps/myapp/src/app/app.component.ts"'
);
try {
runCommand('npm run -s format:check');
fail('boom');
} catch (e) {
expect(e.stdout.toString()).toContain('apps/myapp/src/main.ts');
expect(e.stdout.toString()).not.toContain('apps/myapp/src/app/app.module.ts');
expect(e.stdout.toString()).not.toContain('apps/myapp/src/app/app.component.ts');
}
runCommand('npm run format:write'); runCommand('npm run format:write');
expect(runCommand('npm run -s format:check')).toEqual(''); expect(runCommand('npm run -s format:check')).toEqual('');
}, },

View File

@ -14,18 +14,18 @@ switch (command) {
break; break;
} }
function parseFiles() { function parseFiles(): string[] {
const args = process.argv.slice(3); const args = process.argv.slice(3);
if (args.length === 0) { if (args.length === 0) {
return '"{apps,libs}/**/*.ts"'; return ['"{apps,libs}/**/*.ts"'];
} }
const dashDashFiles = args.filter(a => a.startsWith('--files='))[0]; const dashDashFiles = args.filter(a => a.startsWith('--files='))[0];
if (dashDashFiles) { if (dashDashFiles) {
args.splice(args.indexOf(dashDashFiles), 1); args.splice(args.indexOf(dashDashFiles), 1);
return `"${parseDashDashFiles(dashDashFiles).join(',')}"`; return parseDashDashFiles(dashDashFiles).map(t => `\"${t}\"`);
} else { } else {
const withoutShahs = args.slice(2); const withoutShahs = args.slice(2);
return `"${getFilesFromShash(args[0], args[1]).join(',')}"`; return getFilesFromShash(args[0], args[1]).map(t => `\"${t}\"`);
} }
} }
@ -42,19 +42,22 @@ function getFilesFromShash(sha1: string, sha2: string): string[] {
.toString('utf-8') .toString('utf-8')
.split('\n') .split('\n')
.map(a => a.trim()) .map(a => a.trim())
.filter(a => a.length > 0); .filter(a => a.length > 0)
.filter(a => path.extname(a) === '.ts');
} }
function write(files: string) { function write(files: string[]) {
execSync(`node ./node_modules/prettier/bin/prettier.js --single-quote --print-width 120 --write ${files}`, { execSync(`node ./node_modules/prettier/bin/prettier.js --single-quote --print-width 120 --write ${files.join(' ')}`, {
stdio: [0, 1, 2] stdio: [0, 1, 2]
}); });
} }
function check(files: string) { function check(files: string[]) {
try { try {
execSync( execSync(
`node ./node_modules/prettier/bin/prettier.js --single-quote --print-width 120 --list-different ${files}`, `node ./node_modules/prettier/bin/prettier.js --single-quote --print-width 120 --list-different ${files.join(
' '
)}`,
{ {
stdio: [0, 1, 2] stdio: [0, 1, 2]
} }