firebase-ci
Version:
Simplified Firebase interaction for continuous integration including deploying hosting, functions, and database/storage rules.
104 lines (84 loc) • 3.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getBranch = getBranch;
exports.getProjectKey = getProjectKey;
exports.getProjectName = getProjectName;
exports.getProjectId = getProjectId;
exports.getFallbackProjectKey = getFallbackProjectKey;
exports.isPullRequest = isPullRequest;
exports.getDeployMessage = getDeployMessage;
var _get2 = _interopRequireDefault(require("lodash/get"));
var _commands = require("./commands");
var _logger = require("./logger");
var _files = require("./files");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function branchNameForGithubAction() {
const {
GITHUB_HEAD_REF,
GITHUB_REF
} = process.env;
if (GITHUB_HEAD_REF) {
return GITHUB_HEAD_REF;
}
if (GITHUB_REF) {
return GITHUB_REF.replace('refs/heads/', '');
}
}
function getBranch() {
return branchNameForGithubAction() || process.env.CI_COMMIT_REF_SLUG || process.env.TRAVIS_BRANCH || process.env.CIRCLE_BRANCH || process.env.WERCKER_GIT_BRANCH || process.env.DRONE_BRANCH || process.env.CI_BRANCH || process.env.BITBUCKET_BRANCH || 'master';
}
function getProjectKey(opts) {
const branchName = getBranch();
return process.env.FIREBASE_CI_PROJECT || opts && opts.project || branchName;
}
function getProjectName(opts) {
const projectKey = getProjectKey(opts);
const firebaserc = (0, _files.getFile)('.firebaserc');
return (0, _get2.default)(firebaserc, `projects.${projectKey}`) || opts && opts.defaultProject && (0, _get2.default)(firebaserc, `projects.${opts.defaultProject}`) || (0, _get2.default)(firebaserc, 'projects.master') || (0, _get2.default)(firebaserc, 'projects.default');
}
function getProjectId(opts) {
const projectKey = getProjectKey(opts);
const firebaserc = (0, _files.getFile)('.firebaserc');
return process.env.FIREBASE_CI_PROJECT || (0, _get2.default)(firebaserc, `ci.createConfig.${projectKey === 'default' ? 'master' : projectKey}.firebase.projectId`) || opts && opts.defaultProject && (0, _get2.default)(firebaserc, `ci.createConfig.${opts.defaultProject}.firebase.projectId`) || (0, _get2.default)(firebaserc, `ci.createConfig.master.firebase.projectId`) || getProjectName(opts);
}
function getFallbackProjectKey() {
return process.env.CI_ENVIRONMENT_SLUG;
}
function isPullRequest() {
const {
TRAVIS_PULL_REQUEST,
CIRCLE_PR_NUMBER
} = process.env;
return !!TRAVIS_PULL_REQUEST && TRAVIS_PULL_REQUEST !== 'false' || !!CIRCLE_PR_NUMBER && CIRCLE_PR_NUMBER !== 'false';
}
async function getCommitMessage() {
if (!process.env.GITHUB_ACTIONS) {
return process.env.TRAVIS_COMMIT_MESSAGE || process.env.CI_COMMIT_MESSAGE || process.env.CI_MESSAGE;
}
try {
const commandResults = await (0, _commands.runCommand)({
command: 'git',
args: ['--no-pager', 'log', '--format=%B', '-n', '1', process.env.GITHUB_SHA]
});
return commandResults;
} catch (err) {
(0, _logger.error)(`Error getting commit message through git log for SHA: ${process.env.GITHUB_SHA}`, err);
return null;
}
}
async function getDeployMessage() {
const originalMessage = await getCommitMessage();
const DEFAULT_DEPLOY_MESSAGE = 'Update';
if (!originalMessage) {
return DEFAULT_DEPLOY_MESSAGE;
}
try {
const cleanedMessage = originalMessage.replace(/"/g, "'").replace(/`/g, '').replace(/\n/g, '').replace(/\t/g, '').substring(0, 150);
return (0, _commands.shellescape)([cleanedMessage]);
} catch (err) {
(0, _logger.warn)(`Threw an error when trying to create deploy message, falling back to default message. Error: `, err);
return DEFAULT_DEPLOY_MESSAGE;
}
}