function getSnapshotVersion()

in git/services/versionInfo.js [80:127]


function getSnapshotVersion() {
  let version;
  for(let i = previousVersions.length - 1; i >= 0; i--) {
    if (satisfiesVersion(previousVersions[i])) {
      version = previousVersions[i];
      break;
    }
  }

  if (!version) {
    // a snapshot version before the first tag on the branch
    if (currentPackage.version !== undefined) {
      version = semver(currentPackage.version);
    } else if (currentPackage.branchPattern !== undefined)  {
      version = semver(currentPackage.branchPattern.replace('*','0-beta.1'));
    } else {
      version = semver('0.1.0-beta.1');
    }

  }

  // We need to clone to ensure that we are not modifying another version
  version = semver(version.raw);

  const jenkinsBuild = process.env.TRAVIS_BUILD_NUMBER || process.env.BUILD_NUMBER;
  if (!version.prerelease || !version.prerelease.length) {
    // last release was a non beta release. Increment the patch level to
    // indicate the next release that we will be doing.
    // E.g. last release was 1.3.0, then the snapshot will be
    // 1.3.1-build.1, which is lesser than 1.3.1 according to semver!

    // If the last release was a beta release we don't update the
    // beta number by purpose, as otherwise the semver comparison
    // does not work any more when the next beta is released.
    // E.g. don't generate 1.3.0-beta.2.build.1
    // as this is bigger than 1.3.0-beta.2 according to semver
    version.patch++;
  }
  version.prerelease = jenkinsBuild ? ['build', jenkinsBuild] : ['local'];
  version.build = getBuild();
  version.codeName = 'snapshot';
  version.isSnapshot = true;
  version.format();
  version.full = version.version + '+' + version.build;
  version.branch = 'master';

  return version;
}