UNPKG

firebase-ci

Version:

Simplified Firebase interaction for continuous integration including deploying hosting, functions, and database/storage rules.

104 lines (84 loc) 3.68 kB
"use strict"; 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; } }