fix regex mess
This commit is contained in:
		
							parent
							
								
									134c18ba06
								
							
						
					
					
						commit
						c3b9455dfd
					
				@ -1,5 +1,5 @@
 | 
			
		||||
# This configuration was generated by `rubocop --auto-gen-config`
 | 
			
		||||
# on 2015-05-22 17:34:14 +0300 using RuboCop version 0.31.0.
 | 
			
		||||
# on 2015-05-25 12:59:32 +0300 using RuboCop version 0.31.0.
 | 
			
		||||
# The point is for the user to remove these configuration records
 | 
			
		||||
# one by one as the offenses are removed from the code base.
 | 
			
		||||
# Note that changes in the inspected code, or installation of new
 | 
			
		||||
@ -7,29 +7,25 @@
 | 
			
		||||
 | 
			
		||||
# Offense count: 16
 | 
			
		||||
Metrics/AbcSize:
 | 
			
		||||
  Max: 73
 | 
			
		||||
 | 
			
		||||
# Offense count: 1
 | 
			
		||||
Metrics/BlockNesting:
 | 
			
		||||
  Max: 4
 | 
			
		||||
  Max: 68
 | 
			
		||||
 | 
			
		||||
# Offense count: 4
 | 
			
		||||
# Configuration parameters: CountComments.
 | 
			
		||||
Metrics/ClassLength:
 | 
			
		||||
  Max: 162
 | 
			
		||||
  Max: 166
 | 
			
		||||
 | 
			
		||||
# Offense count: 4
 | 
			
		||||
# Offense count: 3
 | 
			
		||||
Metrics/CyclomaticComplexity:
 | 
			
		||||
  Max: 15
 | 
			
		||||
  Max: 9
 | 
			
		||||
 | 
			
		||||
# Offense count: 21
 | 
			
		||||
# Offense count: 22
 | 
			
		||||
# Configuration parameters: CountComments.
 | 
			
		||||
Metrics/MethodLength:
 | 
			
		||||
  Max: 121
 | 
			
		||||
  Max: 117
 | 
			
		||||
 | 
			
		||||
# Offense count: 5
 | 
			
		||||
# Offense count: 4
 | 
			
		||||
Metrics/PerceivedComplexity:
 | 
			
		||||
  Max: 18
 | 
			
		||||
  Max: 12
 | 
			
		||||
 | 
			
		||||
# Offense count: 2
 | 
			
		||||
Style/AccessorMethodName:
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@ module GitHubChangelogGenerator
 | 
			
		||||
        issue_prefix: "**Closed issues:**",
 | 
			
		||||
        bug_prefix: "**Fixed bugs:**",
 | 
			
		||||
        enhancement_prefix: "**Implemented enhancements:**",
 | 
			
		||||
        branch: "origin"
 | 
			
		||||
        git_remote: "origin"
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      parser = OptionParser.new do |opts|
 | 
			
		||||
@ -123,11 +123,6 @@ module GitHubChangelogGenerator
 | 
			
		||||
        exit
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      if ARGV[1]
 | 
			
		||||
        options[:tag1] = ARGV[0]
 | 
			
		||||
        options[:tag2] = ARGV[1]
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      if options[:verbose]
 | 
			
		||||
        puts "Performing task with options:"
 | 
			
		||||
        pp options
 | 
			
		||||
@ -138,6 +133,18 @@ module GitHubChangelogGenerator
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.detect_user_and_project(options)
 | 
			
		||||
      user_project_from_option(options)
 | 
			
		||||
      if !options[:user] || !options[:project]
 | 
			
		||||
        if ENV["RUBYLIB"] =~ /ruby-debug-ide/
 | 
			
		||||
          options[:user] = "skywinder"
 | 
			
		||||
          options[:project] = "changelog_test"
 | 
			
		||||
        else
 | 
			
		||||
          options[:user], options[:project] = user_project_from_remote(options[:git_remote])
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.user_project_from_option(options)
 | 
			
		||||
      if ARGV[0] && !ARGV[1]
 | 
			
		||||
        github_site = options[:github_site] ? options[:github_site] : "github.com"
 | 
			
		||||
        # this match should parse  strings such "https://github.com/skywinder/Github-Changelog-Generator" or "skywinder/Github-Changelog-Generator" to user and name
 | 
			
		||||
@ -155,37 +162,41 @@ module GitHubChangelogGenerator
 | 
			
		||||
          options[:user] = match[1]
 | 
			
		||||
          options[:project] = match[2]
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
      if !options[:user] && !options[:project]
 | 
			
		||||
        if ENV["RUBYLIB"] =~ /ruby-debug-ide/
 | 
			
		||||
          options[:user] = "skywinder"
 | 
			
		||||
          options[:project] = "changelog_test"
 | 
			
		||||
        else
 | 
			
		||||
          remote = `git config --get remote.#{options[:branch]}.url`
 | 
			
		||||
          # try to find repo in format:
 | 
			
		||||
          # origin	git@github.com:skywinder/Github-Changelog-Generator.git (fetch)
 | 
			
		||||
          # git@github.com:skywinder/Github-Changelog-Generator.git
 | 
			
		||||
          match = /.*(?:[:\/])((?:-|\w|\.)*)\/((?:-|\w|\.)*)(?:\.git).*/.match(remote)
 | 
			
		||||
    # Try to find user and project name from git remote
 | 
			
		||||
    #
 | 
			
		||||
    # @return [Tuple] user and project
 | 
			
		||||
    def self.user_project_from_remote(git_remote)
 | 
			
		||||
      # try to find repo in format:
 | 
			
		||||
      # origin	git@github.com:skywinder/Github-Changelog-Generator.git (fetch)
 | 
			
		||||
      # git@github.com:skywinder/Github-Changelog-Generator.git
 | 
			
		||||
      regex1 = /.*(?:[:\/])((?:-|\w|\.)*)\/((?:-|\w|\.)*)(?:\.git).*/
 | 
			
		||||
 | 
			
		||||
          if match && match[1] && match[2]
 | 
			
		||||
            puts "Detected user:#{match[1]}, project:#{match[2]}"
 | 
			
		||||
            options[:user] = match[1]
 | 
			
		||||
            options[:project] = match[2]
 | 
			
		||||
          else
 | 
			
		||||
            # try to find repo in format:
 | 
			
		||||
            # origin	https://github.com/skywinder/ChangelogMerger (fetch)
 | 
			
		||||
            # https://github.com/skywinder/ChangelogMerger
 | 
			
		||||
            match = /.*\/((?:-|\w|\.)*)\/((?:-|\w|\.)*).*/.match(remote)
 | 
			
		||||
            if match && match[1] && match[2]
 | 
			
		||||
              puts "Detected user:#{match[1]}, project:#{match[2]}"
 | 
			
		||||
              options[:user] = match[1]
 | 
			
		||||
              options[:project] = match[2]
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
      # try to find repo in format:
 | 
			
		||||
      # origin	https://github.com/skywinder/ChangelogMerger (fetch)
 | 
			
		||||
      # https://github.com/skywinder/ChangelogMerger
 | 
			
		||||
      regex2 = /.*\/((?:-|\w|\.)*)\/((?:-|\w|\.)*).*/
 | 
			
		||||
 | 
			
		||||
      remote_structures = [regex1, regex2]
 | 
			
		||||
 | 
			
		||||
      remote = `git config --get remote.#{git_remote}.url`
 | 
			
		||||
      user = nil
 | 
			
		||||
      project = nil
 | 
			
		||||
      remote_structures.each do |regex|
 | 
			
		||||
        matches = Regexp.new(regex).match(remote)
 | 
			
		||||
 | 
			
		||||
        if matches && matches[1] && matches[2]
 | 
			
		||||
          puts "Detected user:#{matches[1]}, project:#{matches[2]}"
 | 
			
		||||
          user = matches[1]
 | 
			
		||||
          project = matches[2]
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        break unless matches.nil?
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      [user, project]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user