protected function incrementTag($current, $major, $minor, $patch, $preRelease, $preIncrement)
    {
        // Current version
        $this->line('');
        $this->info("The current release version is: {$current}.");

        // Simple options
        $tag['major'] = 'v'.($major+1).'.0.0';
        $tag['minor'] = "v{$major}.".($minor+1).'.0';
        $tag['patch'] = "v{$major}.{$minor}.".($patch+1);

        // Next RC versions
        $majorPlus = $major + 1;
        $minorPlus = $minor + 1;
        $tag['rcmajor'] = "v{$majorPlus}.0.0-rc";
        $tag['rcminor'] = "v{$major}.{$minorPlus}.0-rc";

        // Increment RC version
        if ($preRelease) {
            $extra = ((($preIncrement + 1) > 1) ? '.'.($preIncrement + 1) : '');
            $tag['rc'] = "v{$major}.{$minor}.{$patch}-rc{$extra}";
        }

        // Check if user provided the release
        $release = $this->argument("release");

        // If release not specified, ask the user
        if (!$release) {
            $this->line('');
            $release = array_search($this->choice("Please select the next release version:", $tag), $tag);
        }

        // Check valid release
        if (!isset($tag[$release])) {
            $this->error("Unknown release type: {$release}");
            return false;
        }

        return $tag[$release];
    }