MCPcopy
hub / github.com/angular/angularfire / ngAddSetupProject

Function ngAddSetupProject

src/schematics/setup/index.ts:49–138  ·  view source on GitHub ↗
(
  options: DeployOptions
)

Source from the content-addressed store, hash-verified

47};
48
49export const ngAddSetupProject = (
50 options: DeployOptions
51) => async (host: Tree, context: SchematicContext) => {
52
53 // TODO is there a public API for this?
54 let projectRoot: string = (host as any)._backend._root;
55 if (process.platform.startsWith('win32')) { projectRoot = asWindowsPath(normalize(projectRoot)); }
56
57 const features = await featuresPrompt();
58
59 if (features.length > 0) {
60
61 const firebaseTools = await getFirebaseTools();
62
63 // Add the firebase files if they don't exist already so login.use works
64 if (!host.exists('/firebase.json')) { writeFileSync(join(projectRoot, 'firebase.json'), '{}'); }
65
66 let firebaseJson: FirebaseJSON = JSON.parse(
67 readFileSync(join(projectRoot, "firebase.json")).toString()
68 );
69
70 const user = await userPrompt({ projectRoot });
71 const defaultUser = await firebaseTools.login(options);
72 if (user.email !== defaultUser?.email) {
73 await firebaseTools.login.use(user.email, { projectRoot });
74 }
75
76 const { projectName: ngProjectName } = getProject(options, host);
77
78 const [ defaultProjectName ] = getFirebaseProjectNameFromHost(host, ngProjectName);
79
80 const firebaseProject = await projectPrompt(defaultProjectName, { projectRoot, account: user.email });
81
82 let firebaseApp: FirebaseApp|undefined;
83 let sdkConfig: Record<string, string>|undefined;
84
85 const setupConfig: SetupConfig = {
86 ...options, firebaseProject, firebaseApp, sdkConfig,
87 firebaseJsonConfig: firebaseJson,
88 firebaseJsonPath: projectRoot
89 };
90 if (features.length) {
91
92 firebaseApp = await appPrompt(firebaseProject, undefined, { projectRoot });
93
94 const result = await firebaseTools.apps.sdkconfig('web', firebaseApp.appId, { nonInteractive: true, projectRoot });
95 sdkConfig = result.sdkConfig;
96 delete sdkConfig.locationId;
97 setupConfig.sdkConfig = sdkConfig;
98 setupConfig.firebaseApp = firebaseApp;
99 // set up data connect locally if data connect hasn't already been initialized.
100 if(features.includes(FEATURES.DataConnect)) {
101 if (!firebaseJson.dataconnect) {
102 try {
103 await firebaseTools.init("dataconnect", {
104 projectRoot,
105 project: firebaseProject.projectId,
106 });

Callers

nothing calls this directly

Calls 14

featuresPromptFunction · 0.90
getFirebaseToolsFunction · 0.90
userPromptFunction · 0.90
getProjectFunction · 0.90
projectPromptFunction · 0.90
appPromptFunction · 0.90
parseDataConnectConfigFunction · 0.90
writeFileSyncFunction · 0.85
setupProjectFunction · 0.85
useMethod · 0.80

Tested by

no test coverage detected