firebase-ci
Version:
Simplified Firebase interaction for continuous integration including deploying hosting, functions, and database/storage rules.
66 lines (47 loc) • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = serve;
var _get2 = _interopRequireDefault(require("lodash/get"));
var _chalk = _interopRequireDefault(require("chalk"));
var _logger = require("../utils/logger");
var _files = require("../utils/files");
var _async = require("../utils/async");
var _commands = require("../utils/commands");
var _ci = require("../utils/ci");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const skipPrefix = 'Skipping firebase-ci serve';
async function serve(opts) {
const settings = (0, _files.getFile)('.firebaserc');
const fallbackProjectName = (0, _ci.getFallbackProjectKey)();
const projectKey = (0, _ci.getProjectKey)(opts);
const projectName = (0, _get2.default)(settings, `projects.${projectKey}`);
const fallbackProjectSetting = (0, _get2.default)(settings, `projects.${fallbackProjectName}`);
if (!projectName) {
const nonProjectBranch = `${skipPrefix} - Project ${_chalk.default.cyan(projectKey)} is not an alias, checking for fallback...`;
(0, _logger.warn)(nonProjectBranch);
if (!fallbackProjectSetting) {
const nonFallbackBranch = `${skipPrefix} - Fallback Project: ${_chalk.default.cyan(fallbackProjectName)} is a not an alias, exiting...`;
(0, _logger.warn)(nonFallbackBranch);
return nonProjectBranch;
}
return null;
}
(0, _logger.info)(`Calling serve for project ${_chalk.default.cyan(projectName)} (alias ${_chalk.default.cyan(projectKey)})`);
const serveArgs = ['serve', '-P', projectKey];
const onlyString = opts && opts.only ? `--only ${opts.only}` : '';
if (onlyString) {
serveArgs.push(onlyString);
}
const [serveErr] = await (0, _async.to)((0, _commands.runCommand)({
command: 'firebase',
args: serveArgs
}));
if (serveErr) {
const errMsg = `Error calling serve for ${_chalk.default.cyan(projectName)} (alias ${_chalk.default.cyan(projectKey)}) :`;
(0, _logger.error)(errMsg, serveErr);
throw new Error(errMsg);
}
(0, _logger.info)(`Successfully called serve for project ${_chalk.default.cyan(projectName)} (alias ${_chalk.default.cyan(projectKey)})`);
}