@relative-ci/agent
Version:
Send bundle stats and CI build information to RelativeCI
62 lines (56 loc) • 2.86 kB
JavaScript
'use strict';
var path = require('path');
var get = require('lodash/get');
var fsExtra = require('fs-extra');
var cosmiconfig = require('cosmiconfig');
var yargs = require('yargs/yargs');
var helpers = require('yargs/helpers');
var en = require('./locales/en.js');
var constants = require('./constants.js');
var filterArtifacts = require('./artifacts/filter-artifacts.js');
var validateWebpackStats = require('./artifacts/validate-webpack-stats.js');
var debug = require('./utils/debug.js');
var logResponse = require('./utils/log-response.js');
var normalizeParams = require('./utils/normalize-params.js');
var ingest = require('./ingest/ingest.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var path__default = /*#__PURE__*/_interopDefault(path);
var get__default = /*#__PURE__*/_interopDefault(get);
var yargs__default = /*#__PURE__*/_interopDefault(yargs);
async function cli(processArgs) {
const args = await yargs__default.default(helpers.hideBin(processArgs))
.usage('Usage: $0 OPTIONS')
.option('config-dir', { describe: 'Config directory', default: '', alias: 'c' })
.option('commit', { describe: 'Commit SHA', default: '' })
.option('commit-message', { describe: 'Commit message', default: '', alias: 'commitMessage' })
.option('branch', { describe: 'Branch name', default: '' })
.option('pr', { describe: 'Pull Request number', default: '' })
.option('slug', { describe: 'Project slug', default: '' })
.help()
.argv;
const searchConfig = cosmiconfig.cosmiconfigSync('relativeci', {
searchStrategy: 'global',
}).search('config-dir' in args ? args['config-dir'] : undefined);
debug.debug('Config', searchConfig);
if (!searchConfig) {
throw new Error(en.CLI_MISSING_CONFIGURATION_ERROR);
}
const { config } = searchConfig;
if (!get__default.default(config, 'webpack.stats')) {
throw new Error(en.CLI_INVALID_CONFIGURATION_ERROR);
}
// Load webpack stats file relative to the config file
const webpackArtifactFilepath = path__default.default.join(path__default.default.dirname(searchConfig.filepath), get__default.default(config, 'webpack.stats'));
if (!fsExtra.pathExistsSync(webpackArtifactFilepath)) {
throw new Error(en.CLI_MISSING_STATS_FILE_ERROR);
}
const data = fsExtra.readJSONSync(webpackArtifactFilepath);
validateWebpackStats.validateWebpackStats(data);
debug.debug('CLI arguments', args);
const params = normalizeParams.normalizeParams(args, config);
const artifactsData = filterArtifacts.filterArtifacts([{ key: constants.SOURCE_WEBPACK_STATS, data }]);
const response = await ingest(artifactsData, params, config);
logResponse.logResponse(response);
}
module.exports = cli;
//# sourceMappingURL=cli.js.map