Skip to content

Commit c1df4df

Browse files
committed
Cleaned up the schematics more
1 parent dbda308 commit c1df4df

File tree

4 files changed

+45
-55
lines changed

4 files changed

+45
-55
lines changed

src/schematics/ng-add-ssr.ts

+8-19
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import { SchematicsException, Tree, SchematicContext, noop } from '@angular-devkit/schematics';
22
import {
33
addDependencies,
4-
DeployOptions,
54
generateFirebaseRc,
65
NgAddNormalizedOptions,
76
overwriteIfExists,
87
safeReadJSON,
98
stringifyFormatted
109
} from './ng-add-common';
1110
import { FirebaseJSON, Workspace, WorkspaceProject } from './interfaces';
12-
import { getProject, projectTypePrompt } from './utils';
1311
import { firebaseFunctions as firebaseFunctionsDependencies } from './versions.json';
1412
import { dirname, join } from 'path';
1513
import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
@@ -98,23 +96,14 @@ export function generateFirebaseJson(
9896
overwriteIfExists(tree, path, stringifyFormatted(firebaseJson));
9997
}
10098

101-
export const addFirebaseFunctionsDependencies = (options: DeployOptions) => (tree: Tree, context: SchematicContext) => {
102-
const {project} = getProject(options, tree);
103-
projectTypePrompt(project).then(({universalProject}) => {
104-
if (universalProject) {
105-
(global as any).setupAsAngularUniversalApp = true;
106-
addDependencies(
107-
tree,
108-
firebaseFunctionsDependencies,
109-
context
110-
);
111-
context.addTask(new NodePackageInstallTask());
112-
return tree;
113-
} else {
114-
(global as any).setupAsAngularUniversalApp = false;
115-
return noop();
116-
}
117-
});
99+
export const addFirebaseFunctionsDependencies = (tree: Tree, context: SchematicContext) => {
100+
addDependencies(
101+
tree,
102+
firebaseFunctionsDependencies,
103+
context
104+
);
105+
context.addTask(new NodePackageInstallTask());
106+
return tree;
118107
};
119108

120109
export const setupUniversalDeployment = (config: {

src/schematics/ng-add-static.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { SchematicsException, Tree, SchematicContext } from '@angular-devkit/schematics';
22
import {
33
addDependencies,
4+
DeployOptions,
45
generateFirebaseRc,
56
NgAddNormalizedOptions,
67
overwriteIfExists,
@@ -10,7 +11,7 @@ import {
1011
import { FirebaseJSON, Workspace, WorkspaceProject } from './interfaces';
1112

1213
import { default as defaultDependencies } from './versions.json';
13-
import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
14+
import { NodePackageInstallTask, RunSchematicTask } from '@angular-devkit/schematics/tasks';
1415

1516
function emptyFirebaseJson() {
1617
return {
@@ -73,13 +74,15 @@ export function generateFirebaseJson(
7374
overwriteIfExists(tree, path, stringifyFormatted(firebaseJson));
7475
}
7576

76-
export const addFirebaseHostingDependencies = () => async (tree: Tree, context: SchematicContext) => {
77+
export const addFirebaseHostingDependencies = (options: DeployOptions) => (tree: Tree, context: SchematicContext) => {
7778
addDependencies(
7879
tree,
7980
defaultDependencies,
8081
context
8182
);
82-
context.addTask(new NodePackageInstallTask());
83+
context.addTask(new RunSchematicTask('ng-add-setup-project', options), [
84+
context.addTask(new NodePackageInstallTask())
85+
]);
8386
return tree;
8487
};
8588

src/schematics/ng-add.jasmine.ts

+21-21
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ describe('ng-add', () => {
370370
it('generates new files if starting from scratch', async () => {
371371
const result = await setupProject(tree, {
372372
firebaseProject: FIREBASE_PROJECT,
373-
isUniversalProject: false,
373+
universalProject: false,
374374
project: PROJECT_NAME
375375
});
376376
expect(result.read('firebase.json').toString()).toEqual(initialFirebaseJson);
@@ -381,7 +381,7 @@ describe('ng-add', () => {
381381
it('uses default project', async () => {
382382
const result = await setupProject(tree, {
383383
firebaseProject: FIREBASE_PROJECT,
384-
isUniversalProject: false,
384+
universalProject: false,
385385
project: undefined
386386
});
387387
expect(result.read('firebase.json').toString()).toEqual(overwriteFirebaseJson);
@@ -392,12 +392,12 @@ describe('ng-add', () => {
392392
it('overrides existing files', async () => {
393393
const tempTree = await setupProject(tree, {
394394
firebaseProject: FIREBASE_PROJECT,
395-
isUniversalProject: false, project: PROJECT_NAME
395+
universalProject: false, project: PROJECT_NAME
396396
});
397397
const result = await setupProject(tempTree, {
398398
firebaseProject: OTHER_FIREBASE_PROJECT_NAME,
399399
project: OTHER_PROJECT_NAME,
400-
isUniversalProject: false
400+
universalProject: false
401401
});
402402
expect(result.read('firebase.json').toString()).toEqual(projectFirebaseJson);
403403
expect(result.read('.firebaserc').toString()).toEqual(projectFirebaserc);
@@ -414,7 +414,7 @@ describe('ng-add', () => {
414414
expect(() =>
415415
setupProject(tree, {
416416
firebaseProject: FIREBASE_PROJECT,
417-
isUniversalProject: false,
417+
universalProject: false,
418418
project: undefined
419419
})
420420
).toThrowError(
@@ -426,7 +426,7 @@ describe('ng-add', () => {
426426
expect(() =>
427427
setupProject(Tree.empty(), {
428428
firebaseProject: FIREBASE_PROJECT,
429-
isUniversalProject: false,
429+
universalProject: false,
430430
project: PROJECT_NAME
431431
})
432432
).toThrowError(/Could not find angular.json/);
@@ -438,7 +438,7 @@ describe('ng-add', () => {
438438
expect(() =>
439439
setupProject(tree, {
440440
firebaseProject: FIREBASE_PROJECT,
441-
isUniversalProject: false,
441+
universalProject: false,
442442
project: PROJECT_NAME
443443
})
444444
).toThrowError(/Could not parse angular.json/);
@@ -450,7 +450,7 @@ describe('ng-add', () => {
450450
expect(() =>
451451
setupProject(tree, {
452452
firebaseProject: FIREBASE_PROJECT,
453-
isUniversalProject: false,
453+
universalProject: false,
454454
project: PROJECT_NAME
455455
})
456456
).toThrowError(/The specified Angular project is not defined in this workspace/);
@@ -467,7 +467,7 @@ describe('ng-add', () => {
467467
expect(() =>
468468
setupProject(tree, {
469469
firebaseProject: FIREBASE_PROJECT,
470-
isUniversalProject: false,
470+
universalProject: false,
471471
project: PROJECT_NAME
472472
})
473473
).toThrowError(/Deploy requires an Angular project type of "application" in angular.json/);
@@ -484,7 +484,7 @@ describe('ng-add', () => {
484484
expect(() =>
485485
setupProject(tree, {
486486
firebaseProject: FIREBASE_PROJECT,
487-
isUniversalProject: false,
487+
universalProject: false,
488488
project: PROJECT_NAME
489489
})
490490
).toThrowError(/Cannot read the output path/);
@@ -496,14 +496,14 @@ describe('ng-add', () => {
496496
tree.create('angular.json', JSON.stringify(generateAngularJson()));
497497
const tempTree = await setupProject(tree, {
498498
firebaseProject: FIREBASE_PROJECT,
499-
isUniversalProject: false,
499+
universalProject: false,
500500
project: PROJECT_NAME
501501
});
502502
503503
expect(() =>
504504
setupProject(tempTree, {
505505
firebaseProject: FIREBASE_PROJECT,
506-
isUniversalProject: false,
506+
universalProject: false,
507507
project: PROJECT_NAME
508508
})
509509
).toThrowError(/already exists in firebase.json/);
@@ -516,7 +516,7 @@ describe('ng-add', () => {
516516
expect(() =>
517517
setupProject(tree, {
518518
firebaseProject: FIREBASE_PROJECT,
519-
isUniversalProject: false,
519+
universalProject: false,
520520
project: PROJECT_NAME
521521
})
522522
).toThrowError(/firebase.json: Unexpected token/);
@@ -529,7 +529,7 @@ describe('ng-add', () => {
529529
expect(() =>
530530
setupProject(tree, {
531531
firebaseProject: FIREBASE_PROJECT,
532-
isUniversalProject: false,
532+
universalProject: false,
533533
project: PROJECT_NAME
534534
})
535535
).toThrowError(/.firebaserc: Unexpected token/);
@@ -542,14 +542,14 @@ describe('ng-add', () => {
542542
tree.create('angular.json', JSON.stringify(generateAngularJson()));
543543
const tempTree = await setupProject(tree, {
544544
firebaseProject: FIREBASE_PROJECT,
545-
isUniversalProject: false,
545+
universalProject: false,
546546
project: PROJECT_NAME
547547
});
548548
549549
expect(() =>
550550
setupProject(tempTree, {
551551
firebaseProject: FIREBASE_PROJECT,
552-
isUniversalProject: false,
552+
universalProject: false,
553553
project: OTHER_PROJECT_NAME
554554
})
555555
).toThrowError(/ already defined in .firebaserc/);
@@ -561,14 +561,14 @@ describe('ng-add', () => {
561561
562562
const tempTree = await setupProject(tree, {
563563
firebaseProject: FIREBASE_PROJECT,
564-
isUniversalProject: false,
564+
universalProject: false,
565565
project: PROJECT_NAME
566566
});
567567
568568
expect(() =>
569569
setupProject(tempTree, {
570570
firebaseProject: FIREBASE_PROJECT,
571-
isUniversalProject: false,
571+
universalProject: false,
572572
project: OTHER_PROJECT_NAME
573573
})
574574
).toThrowError(/ already defined in .firebaserc/);
@@ -581,7 +581,7 @@ describe('ng-add', () => {
581581

582582
expect(() => setupProject(tree, {
583583
firebaseProject: FIREBASE_PROJECT,
584-
isUniversalProject: true,
584+
universalProject: true,
585585
project: PROJECT_NAME
586586
})).toThrowError(/\(architect.server.options.outputPath\) of the Angular project "pie-ka-chu" in angular.json/);
587587
});
@@ -592,7 +592,7 @@ describe('ng-add', () => {
592592

593593
const result = await setupProject(tree, {
594594
firebaseProject: FIREBASE_PROJECT,
595-
isUniversalProject: true,
595+
universalProject: true,
596596
project: PROJECT_NAME
597597
});
598598

@@ -606,7 +606,7 @@ describe('ng-add', () => {
606606

607607
const result = await setupProject(tree, {
608608
firebaseProject: FIREBASE_PROJECT,
609-
isUniversalProject: true,
609+
universalProject: true,
610610
project: PROJECT_NAME
611611
});
612612

src/schematics/ng-add.ts

+10-12
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { chain, Tree } from '@angular-devkit/schematics';
2-
import { listProjects, projectPrompt, getWorkspace, getProject } from './utils';
1+
import { SchematicContext, Tree } from '@angular-devkit/schematics';
2+
import { listProjects, projectPrompt, getWorkspace, getProject, projectTypePrompt } from './utils';
33
import { DeployOptions, NgAddNormalizedOptions } from './ng-add-common';
44
import { addFirebaseFunctionsDependencies, setupUniversalDeployment } from './ng-add-ssr';
55
import { addFirebaseHostingDependencies, setupStaticDeployment } from './ng-add-static';
66

77
export const setupProject =
8-
(host: Tree, options: DeployOptions & { firebaseProject: string, isUniversalProject: boolean }) => {
8+
(host: Tree, options: DeployOptions & { firebaseProject: string, universalProject: boolean }) => {
99
const { path: workspacePath, workspace } = getWorkspace(host);
1010

1111
const {project, projectName} = getProject(options, host);
@@ -15,7 +15,7 @@ export const setupProject =
1515
firebaseProject: options.firebaseProject
1616
};
1717

18-
if (options.isUniversalProject) {
18+
if (options.universalProject) {
1919
return setupUniversalDeployment({
2020
workspace,
2121
workspacePath,
@@ -36,15 +36,13 @@ export const setupProject =
3636

3737
export const ngAddSetupProject = (
3838
options: DeployOptions
39-
) => async (host: Tree) => {
39+
) => async (host: Tree, context: SchematicContext) => {
4040
const projects = await listProjects();
4141
const { firebaseProject } = await projectPrompt(projects);
42-
const isUniversalProject = (global as any).setupAsAngularUniversalApp;
43-
return setupProject(host, {...options, firebaseProject, isUniversalProject });
42+
const { project } = getProject(options, host);
43+
const { universalProject } = await projectTypePrompt(project);
44+
if (universalProject) { host = addFirebaseFunctionsDependencies(host, context); }
45+
return setupProject(host, {...options, firebaseProject, universalProject });
4446
};
4547

46-
export const ngAdd = (options: DeployOptions) => chain([
47-
addFirebaseHostingDependencies(),
48-
addFirebaseFunctionsDependencies(options),
49-
ngAddSetupProject(options),
50-
]);
48+
export const ngAdd = addFirebaseHostingDependencies;

0 commit comments

Comments
 (0)