/// Return the version incremented by the release type (major, minor, patch, prerelease)
/// @param {String} $version
/// @param {String} $release - Type of release to bump (major, minor, patch, prerelease)
/// @return {String}
/// @example scss
///   $version: inc('1.2.3', 'major');
///   -> '2.0.0'
///   $version: inc('1.2.3', 'minor');
///   -> '1.3.0'
///   $version: inc('1.2.3', 'patch');
///   -> '1.2.4'
///   $version: inc('1.2.3', 'prerelease');
///   -> '1.2.3-beta.0'
///   $version: inc('1.2.3', 'prerelease', 'foobar');
///   -> '1.2.3-foobar.0'
///   $version: inc('1.2.3-foobar.0', 'prerelease');
///   -> '1.2.3-foobar.1'
///   $version: inc('1.2.3', 'premajor');
///   -> '2.0.0-beta.0'
///   $version: inc('1.2.3', 'preminor');
///   -> '1.3.0-beta.0'
///   $version: inc('1.2.3', 'prepatch');
///   -> '1.2.4-beta.0'
@function inc($version, $release, $prerelease: '') {
  $release: to-lower-case($release);
  $major: major($version);
  $minor: minor($version);
  $patch: patch($version);
  $pre: _prerelease($version);
  $name: map-get($pre, 'name');
  $number: map-get($pre, 'number');

  @if ($release == 'major') {
    @return _format($major + 1, 0, 0);
  } @else if ($release == 'premajor') {
    @return _format($major + 1, 0, 0, $name, 0);
  } @else if ($release == 'minor') {
    @return _format($major, $minor + 1, 0);
  } @else if ($release == 'preminor') {
    @return _format($major, $minor + 1, 0, $name, 0);
  } @else if ($release == 'patch') {
    @return _format($major, $minor, $patch + if($name or $number > -1, 0, 1));
  } @else if ($release == 'prepatch') {
    @return _format($major, $minor, $patch + 1, $name, 0);
  } @else if ($release == 'prerelease') {
    @return _format($major, $minor, $patch + if($name or $number > -1, 0, 1), $name, $number + 1);
  }

  @return null;
}
