"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.bumpPackageVersion = void 0;
const tslib_1 = require("tslib");
const semver_1 = tslib_1.__importDefault(require("semver"));
const xmldoc_1 = require("xmldoc");
const logger_1 = require("../../../logger");
const string_1 = require("../../../util/string");
function bumpPackageVersion(content, currentValue, bumpVersion) {
    logger_1.logger.debug({ bumpVersion, currentValue }, 'Checking if we should bump project version');
    let bumpedContent = content;
    if (!currentValue) {
        logger_1.logger.warn('Unable to bump project version, project has no version');
        return { bumpedContent };
    }
    if (!semver_1.default.valid(currentValue)) {
        logger_1.logger.warn({ currentValue }, 'Unable to bump project version, not a valid semver');
        return { bumpedContent };
    }
    try {
        const project = new xmldoc_1.XmlDocument(content);
        const versionNode = project.descendantWithPath('PropertyGroup.Version');
        const startTagPosition = versionNode.startTagPosition;
        const versionPosition = content.indexOf(versionNode.val, startTagPosition);
        const newProjVersion = semver_1.default.inc(currentValue, bumpVersion);
        if (!newProjVersion) {
            throw new Error('semver inc failed');
        }
        logger_1.logger.debug({ newProjVersion });
        bumpedContent = (0, string_1.replaceAt)(content, versionPosition, currentValue, newProjVersion);
        if (bumpedContent === content) {
            logger_1.logger.debug('Version was already bumped');
        }
        else {
            logger_1.logger.debug('project version bumped');
        }
    }
    catch (err) {
        logger_1.logger.warn({
            content,
            currentValue,
            bumpVersion,
        }, 'Failed to bumpVersion');
    }
    return { bumpedContent };
}
exports.bumpPackageVersion = bumpPackageVersion;
//# sourceMappingURL=update.js.map