You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.6 KiB
40 lines
1.6 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.init = void 0;
|
|
const lodash_1 = require("lodash");
|
|
const clc = require("colorette");
|
|
const error_1 = require("../error");
|
|
const logger_1 = require("../logger");
|
|
const features = require("./features");
|
|
const featureFns = new Map([
|
|
["account", features.account],
|
|
["database", features.database],
|
|
["firestore", features.firestore],
|
|
["functions", features.functions],
|
|
["hosting", features.hosting],
|
|
["storage", features.storage],
|
|
["emulators", features.emulators],
|
|
["project", features.project],
|
|
["remoteconfig", features.remoteconfig],
|
|
["hosting:github", features.hostingGithub],
|
|
]);
|
|
async function init(setup, config, options) {
|
|
var _a;
|
|
const nextFeature = (_a = setup.features) === null || _a === void 0 ? void 0 : _a.shift();
|
|
if (nextFeature) {
|
|
if (!featureFns.has(nextFeature)) {
|
|
const availableFeatures = Object.keys(features)
|
|
.filter((f) => f !== "project")
|
|
.join(", ");
|
|
throw new error_1.FirebaseError(`${clc.bold(nextFeature)} is not a valid feature. Must be one of ${availableFeatures}`);
|
|
}
|
|
logger_1.logger.info(clc.bold(`\n${clc.white("===")} ${(0, lodash_1.capitalize)(nextFeature)} Setup`));
|
|
const fn = featureFns.get(nextFeature);
|
|
if (!fn) {
|
|
throw new error_1.FirebaseError(`We've lost the function to init ${nextFeature}`, { exit: 2 });
|
|
}
|
|
await fn(setup, config, options);
|
|
return init(setup, config, options);
|
|
}
|
|
}
|
|
exports.init = init;
|