| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 'use strict'
- const parse = require('./parse')
- const constants = require('../internal/constants')
- const SemVer = require('../classes/semver')
- const truncate = (version, truncation, options) => {
- if (!constants.RELEASE_TYPES.includes(truncation)) {
- return null
- }
- const clonedVersion = cloneInputVersion(version, options)
- return clonedVersion && doTruncation(clonedVersion, truncation)
- }
- const cloneInputVersion = (version, options) => {
- const versionStringToParse = (
- version instanceof SemVer ? version.version : version
- )
- return parse(versionStringToParse, options)
- }
- const doTruncation = (version, truncation) => {
- if (isPrerelease(truncation)) {
- return version.version
- }
- version.prerelease = []
- switch (truncation) {
- case 'major':
- version.minor = 0
- version.patch = 0
- break
- case 'minor':
- version.patch = 0
- break
- }
- return version.format()
- }
- const isPrerelease = (type) => {
- return type.startsWith('pre')
- }
- module.exports = truncate
|