UNPKG

@jwpkg/gitversion

Version:

Gitversion is a complete customizable git-based release management system

135 lines 11.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Application = void 0; const promises_1 = require("fs/promises"); const path_1 = require("path"); const plugins_1 = require("../plugins"); const configuration_1 = require("./configuration"); const constants_1 = require("./constants"); const error_utils_1 = require("./error-utils"); const executor_1 = require("./executor"); const git_1 = require("./git"); const log_reporter_1 = require("./log-reporter"); class Application { static detectVersionBranch(configOptions, branchName) { const mainBranchPatterns = configOptions.mainBranchPatterns.map(pattern => new RegExp(pattern)); for (const branchPattern of mainBranchPatterns) { if (branchPattern.test(branchName)) { return { type: configuration_1.BranchType.MAIN, name: branchName, }; } } const featureBranchPatterns = configOptions.featureBranchPatterns.map(pattern => new RegExp(pattern)); for (const branchPattern of featureBranchPatterns) { if (branchPattern.test(branchName)) { const matches = branchPattern.exec(branchName); if (matches && matches.length === 2) { return { name: matches[1], type: configuration_1.BranchType.FEATURE, }; } else { throw new Error(`The feature pattern '${branchPattern.source}' matched the current branch but it should result in exact 1 group match`); } } } const releaseBranchPatterns = configOptions.releaseBranchPatterns.map(pattern => new RegExp(pattern)); for (const branchPattern of releaseBranchPatterns) { if (branchPattern.test(branchName)) { const matches = branchPattern.exec(branchName); if (matches && matches.length === 2) { return { name: matches[1], type: configuration_1.BranchType.RELEASE, }; } else { throw new Error(`The release pattern '${branchPattern.source}' matched the current branch but it should result in exact 1 group match`); } } } return { name: 'unknown', type: configuration_1.BranchType.UNKNOWN, }; } static async init(application, cliOptions) { if (application) { if (cliOptions && (0, configuration_1.isUpdateableConfiguration)(application.configuration)) { application.configuration.updateOptions(cliOptions); } return application; } const logger = new log_reporter_1.LogReporter(); const version = JSON.parse(await (0, promises_1.readFile)((0, path_1.resolve)(__dirname, '../../package.json'), 'utf-8')).version; logger.reportHeader(`Gitversion ${version}`); const cwd = await git_1.Git.root(); const executor = new executor_1.Executor(cwd, logger); const options = { ...constants_1.DEFAULT_CONFIGURATION_OPTIONS, ...(await configuration_1.Configuration.loadCustomConfig(cwd, logger)), ...cliOptions, }; const configuration = new configuration_1.Configuration(cwd, options); const git = new git_1.Git(cwd, configuration.options.dryRun, logger, executor); if (configuration.options.gitFlags) { Object.entries(configuration.options.gitFlags).forEach(([key, value]) => { git.addConfiguration(key, value); }); } const pluginManager = new plugins_1.PluginManager(); if (options.plugins) { for (const plugin of options.plugins) { pluginManager.register(plugin); } } await pluginManager.initialize({ cwd, git, executor, options, logger, packFolder: configuration.packFolder, stagingFolder: configuration.stagingFolder, }); // We should have a project type after initialize if (!pluginManager.project) { throw new Error('Can\'t load project'); } if (pluginManager.packManagers.length == 0) { throw new Error('No pack managers found for current project'); } const branchName = await pluginManager.gitPlatform.currentBranch(); if (!branchName) { const section = logger.beginSection('Debug info'); (0, error_utils_1.debugEnvironment)(logger); await (0, error_utils_1.debugGitCommands)(logger); logger.reportInfo('Active plugins:'); for (const plugin of pluginManager.availablePlugins) { logger.reportInfo(`- ${plugin.name}`); } logger.reportInfo(`Current branch reference: ${await pluginManager.gitPlatform.currentRef()}`); logger.endSection(section); throw new error_utils_1.UnexpectedError('Can\'t determine current gitbranch. Breaking off'); } const branch = this.detectVersionBranch(options, branchName); return { cwd, configuration, pluginManager, branch, executor, logger, project: pluginManager.project, gitPlatform: pluginManager.gitPlatform, hooks: pluginManager, packManagers: pluginManager.packManagers, git, }; } } exports.Application = Application; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9CLHdDQUFnRztBQUVoRyxtREFBNks7QUFDN0ssMkNBQTREO0FBQzVELCtDQUFvRjtBQUNwRix5Q0FBaUQ7QUFDakQsK0JBQTRCO0FBQzVCLGlEQUE2QztBQW1CN0MsTUFBYSxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxhQUEwQyxFQUFFLFVBQWtCO1FBQ3ZGLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFaEcsS0FBSyxNQUFNLGFBQWEsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQy9DLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPO29CQUNMLElBQUksRUFBRSwwQkFBVSxDQUFDLElBQUk7b0JBQ3JCLElBQUksRUFBRSxVQUFVO2lCQUNqQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLEtBQUssTUFBTSxhQUFhLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0s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