|
1 | 1 | import * as clc from "colorette";
|
2 | 2 | import * as path from "path";
|
| 3 | +import * as fs from "fs-extra"; |
| 4 | + |
3 | 5 | import * as refs from "./refs";
|
4 | 6 | import { Config } from "../config";
|
5 | 7 | import { getExtensionSpec, ManifestInstanceSpec } from "../deploy/extensions/planner";
|
6 | 8 | import { logger } from "../logger";
|
7 |
| -import { promptOnce } from "../prompt"; |
| 9 | +import { confirm, promptOnce } from "../prompt"; |
8 | 10 | import { readEnvFile } from "./paramHelper";
|
9 | 11 | import { FirebaseError } from "../error";
|
10 | 12 | import * as utils from "../utils";
|
@@ -60,6 +62,31 @@ export async function writeToManifest(
|
60 | 62 | await writeLocalSecrets(specs, config, options.force);
|
61 | 63 | }
|
62 | 64 |
|
| 65 | +export async function writeEmptyManifest( |
| 66 | + config: Config, |
| 67 | + options: { nonInteractive: boolean; force: boolean } |
| 68 | +): Promise<void> { |
| 69 | + if (!fs.existsSync(config.path("extensions"))) { |
| 70 | + fs.mkdirSync(config.path("extensions")); |
| 71 | + } |
| 72 | + if (config.has("extensions") && Object.keys(config.get("extensions")).length) { |
| 73 | + const currentExtensions = Object.entries(config.get("extensions")) |
| 74 | + .map((i) => `${i[0]}: ${i[1]}`) |
| 75 | + .join("\n\t"); |
| 76 | + if ( |
| 77 | + !(await confirm({ |
| 78 | + message: `firebase.json already contains extensions:\n${currentExtensions}\nWould you like to overwrite them?`, |
| 79 | + nonInteractive: options.nonInteractive, |
| 80 | + force: options.force, |
| 81 | + default: false, |
| 82 | + })) |
| 83 | + ) { |
| 84 | + return; |
| 85 | + } |
| 86 | + } |
| 87 | + config.set("extensions", {}); |
| 88 | +} |
| 89 | + |
63 | 90 | /**
|
64 | 91 | * Write the secrets in a list of ManifestInstanceSpec into extensions/{instance-id}.secret.local.
|
65 | 92 | *
|
@@ -173,7 +200,7 @@ export function getInstanceRef(instanceId: string, config: Config): refs.Ref {
|
173 | 200 | return refs.parse(source);
|
174 | 201 | }
|
175 | 202 |
|
176 |
| -function writeExtensionsToFirebaseJson(specs: ManifestInstanceSpec[], config: Config): void { |
| 203 | +export function writeExtensionsToFirebaseJson(specs: ManifestInstanceSpec[], config: Config): void { |
177 | 204 | const extensions = config.get("extensions", {});
|
178 | 205 | for (const s of specs) {
|
179 | 206 | let target;
|
|
0 commit comments