GSI - Employe Self Service Mobile
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.
 
 
 
 
 

103 lines
4.1 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.command = void 0;
const ora = require("ora");
const fs = require("fs-extra");
const command_1 = require("../command");
const apps_1 = require("../management/apps");
const projectUtils_1 = require("../projectUtils");
const projects_1 = require("../management/projects");
const error_1 = require("../error");
const requireAuth_1 = require("../requireAuth");
const logger_1 = require("../logger");
const prompt_1 = require("../prompt");
function checkForApps(apps, appPlatform) {
if (!apps.length) {
throw new error_1.FirebaseError(`There are no ${appPlatform === apps_1.AppPlatform.ANY ? "" : appPlatform + " "}apps ` +
"associated with this Firebase project");
}
}
async function selectAppInteractively(apps, appPlatform) {
checkForApps(apps, appPlatform);
const choices = apps.map((app) => {
return {
name: `${app.displayName || app.bundleId || app.packageName}` +
` - ${app.appId} (${app.platform})`,
value: app,
};
});
return await (0, prompt_1.promptOnce)({
type: "list",
message: `Select the ${appPlatform === apps_1.AppPlatform.ANY ? "" : appPlatform + " "}` +
"app to get the configuration data:",
choices,
});
}
exports.command = new command_1.Command("apps:sdkconfig [platform] [appId]")
.description("print the Google Services config of a Firebase app. " +
"[platform] can be IOS, ANDROID or WEB (case insensitive)")
.option("-o, --out [file]", "(optional) write config output to a file")
.before(requireAuth_1.requireAuth)
.action(async (platform = "", appId = "", options) => {
let appPlatform = (0, apps_1.getAppPlatform)(platform);
if (!appId) {
let projectId = (0, projectUtils_1.needProjectId)(options);
if (options.nonInteractive && !projectId) {
throw new error_1.FirebaseError("Must supply app and project ids in non-interactive mode.");
}
else if (!projectId) {
const result = await (0, projects_1.getOrPromptProject)(options);
projectId = result.projectId;
}
const apps = await (0, apps_1.listFirebaseApps)(projectId, appPlatform);
checkForApps(apps, appPlatform);
if (apps.length === 1) {
appId = apps[0].appId;
appPlatform = apps[0].platform;
}
else if (options.nonInteractive) {
throw new error_1.FirebaseError(`Project ${projectId} has multiple apps, must specify an app id.`);
}
else {
const appMetadata = await selectAppInteractively(apps, appPlatform);
appId = appMetadata.appId;
appPlatform = appMetadata.platform;
}
}
let configData;
const spinner = ora(`Downloading configuration data of your Firebase ${appPlatform} app`).start();
try {
configData = await (0, apps_1.getAppConfig)(appId, appPlatform);
}
catch (err) {
spinner.fail();
throw err;
}
spinner.succeed();
const fileInfo = (0, apps_1.getAppConfigFile)(configData, appPlatform);
if (appPlatform === apps_1.AppPlatform.WEB) {
fileInfo.sdkConfig = configData;
}
if (options.out === undefined) {
logger_1.logger.info(fileInfo.fileContents);
return fileInfo;
}
const shouldUseDefaultFilename = options.out === true || options.out === "";
const filename = shouldUseDefaultFilename ? configData.fileName : options.out;
if (fs.existsSync(filename)) {
if (options.nonInteractive) {
throw new error_1.FirebaseError(`${filename} already exists`);
}
const overwrite = await (0, prompt_1.promptOnce)({
type: "confirm",
default: false,
message: `${filename} already exists. Do you want to overwrite?`,
});
if (!overwrite) {
return configData;
}
}
fs.writeFileSync(filename, fileInfo.fileContents);
logger_1.logger.info(`App configuration is written in ${filename}`);
return configData;
});