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

Function getFirebaseTools

src/schematics/firebaseTools.ts:11–52  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

9}
10
11export const getFirebaseTools = () => globalThis.firebaseTools ?
12 Promise.resolve(globalThis.firebaseTools) :
13 new Promise<FirebaseTools>((resolve, reject) => {
14 process.env.FIREBASE_CLI_EXPERIMENTS ||= 'webframeworks';
15 try {
16 resolve(require('firebase-tools'));
17 } catch (e) {
18 try {
19 const root = execSync('npm root --location=global').toString().trim();
20 resolve(require(`${root}/firebase-tools`));
21 } catch (e) {
22 const spinner = ora({
23 text: `Installing firebase-tools...`,
24 // Workaround for https://github.com/sindresorhus/ora/issues/136.
25 discardStdin: process.platform !== 'win32',
26 }).start();
27 spawn('npm', ['i', '--location=global', 'firebase-tools'], {
28 stdio: 'pipe',
29 shell: true,
30 }).on('close', (code) => {
31 if (code === 0) {
32 spinner.succeed('firebase-tools installed globally.');
33 spinner.stop();
34 const root = execSync('npm root -g').toString().trim();
35 resolve(require(`${root}/firebase-tools`));
36 } else {
37 spinner.fail('Package install failed.');
38 reject();
39 }
40 });
41 }
42 }
43 }).then(firebaseTools => {
44 globalThis.firebaseTools = firebaseTools;
45 const version = firebaseTools.cli.version();
46 console.log(`Using firebase-tools version ${version}`);
47 if (semverCompare(version, '14.0.0') === -1) {
48 console.error('firebase-tools version 13.0.0+ is required, please upgrade and run again');
49 return Promise.reject();
50 }
51 return firebaseTools;
52 });

Callers 5

builder.tsFile · 0.90
userPromptFunction · 0.90
projectPromptFunction · 0.90
appPromptFunction · 0.90
ngAddSetupProjectFunction · 0.90

Calls 1

thenMethod · 0.80

Tested by

no test coverage detected