rabbitt-githooks 1.5.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -4
- data/lib/githooks.rb +2 -1
- data/lib/githooks/action.rb +13 -5
- data/lib/githooks/core_ext/rainbow.rb +4 -0
- data/lib/githooks/error.rb +4 -0
- data/lib/githooks/hook.rb +20 -10
- data/lib/githooks/repository.rb +31 -12
- data/lib/githooks/repository/limiter.rb +1 -1
- data/lib/githooks/section.rb +9 -4
- data/lib/githooks/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: cc92115463443ffe80792a5f569a4242e905d21b
         | 
| 4 | 
            +
              data.tar.gz: 466abff7748a7204939a894cc8adfda9ec927b50
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9390cef0e16c4574f9908f47ca1de0e4ceb842fa0dafaeed923e57568be96b09e73db566ed292df66a439b057a9ad5107ad3ccb5d4b8e86c342679262bfa6d62
         | 
| 7 | 
            +
              data.tar.gz: 601aa784254ca0c9b1c3831c724ef90cfaa9a000e80fdc022d76c16e157aefe58d08323c97fbfdd84304dcf60e9d369914f8223be40ae5360dbdba27d8ae2d4b
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/lib/githooks.rb
    CHANGED
    
    | @@ -76,7 +76,8 @@ module GitHooks | |
| 76 76 | 
             
              SUCCESS_SYMBOL = '✓'.color_success! unless defined? SUCCESS_SYMBOL
         | 
| 77 77 | 
             
              FAILURE_SYMBOL = 'X'.color_failure! unless defined? FAILURE_SYMBOL
         | 
| 78 78 | 
             
              UNKNOWN_SYMBOL = '?'.color_unknown! unless defined? UNKNOWN_SYMBOL
         | 
| 79 | 
            -
              WARNING_SYMBOL = ' | 
| 79 | 
            +
              WARNING_SYMBOL = 'W'.color_warning! unless defined? WARNING_SYMBOL
         | 
| 80 | 
            +
              SKIPPED_SYMBOL = 'S'.color_skipped! unless defined? SKIPPED_SYMBOL
         | 
| 80 81 |  | 
| 81 82 | 
             
              LIB_PATH = Pathname.new(__FILE__).dirname.realpath unless defined? LIB_PATH
         | 
| 82 83 | 
             
              GEM_PATH = LIB_PATH.parent                         unless defined? GEM_PATH
         | 
    
        data/lib/githooks/action.rb
    CHANGED
    
    | @@ -22,7 +22,7 @@ require 'stringio' | |
| 22 22 | 
             
            require_relative 'repository'
         | 
| 23 23 |  | 
| 24 24 | 
             
            module GitHooks
         | 
| 25 | 
            -
              class Action | 
| 25 | 
            +
              class Action
         | 
| 26 26 | 
             
                attr_reader :title, :section, :on, :limiters
         | 
| 27 27 | 
             
                attr_reader :success, :errors, :warnings, :benchmark
         | 
| 28 28 | 
             
                private :section, :on
         | 
| @@ -50,26 +50,30 @@ module GitHooks | |
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| 52 52 | 
             
                def colored_title
         | 
| 53 | 
            +
                  return title.color_skipped! if skipped?
         | 
| 53 54 | 
             
                  return title.color_unknown! unless finished?
         | 
| 54 55 | 
             
                  success? ? title.color_success! : title.color_failure!
         | 
| 55 56 | 
             
                end
         | 
| 56 57 |  | 
| 57 58 | 
             
                def status_symbol
         | 
| 59 | 
            +
                  return GitHooks::SKIPPED_SYMBOL if skipped?
         | 
| 58 60 | 
             
                  return GitHooks::UNKNOWN_SYMBOL unless finished?
         | 
| 59 61 | 
             
                  success? ? GitHooks::SUCCESS_SYMBOL : GitHooks::FAILURE_SYMBOL
         | 
| 60 62 | 
             
                end
         | 
| 61 63 |  | 
| 62 | 
            -
                %w | 
| 64 | 
            +
                %w[finished running waiting skipped].each do |method|
         | 
| 63 65 | 
             
                  define_method(:"#{method}?") { @status == method.to_sym }
         | 
| 64 66 | 
             
                  define_method(:"#{method}!") { @status = method.to_sym }
         | 
| 65 67 | 
             
                end
         | 
| 66 68 |  | 
| 67 | 
            -
                def run # rubocop:disable MethodLength | 
| 69 | 
            +
                def run # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
         | 
| 68 70 | 
             
                  running!
         | 
| 69 71 | 
             
                  with_benchmark do
         | 
| 70 72 | 
             
                    with_captured_output {
         | 
| 71 73 | 
             
                      begin
         | 
| 72 | 
            -
                         | 
| 74 | 
            +
                        was_skipped = catch(:skip) do
         | 
| 75 | 
            +
                          @success &= @on.call
         | 
| 76 | 
            +
                        end
         | 
| 73 77 | 
             
                      rescue StandardError => e
         | 
| 74 78 | 
             
                        $stderr.puts "Exception thrown during action call: #{e.class.name}: #{e.message}"
         | 
| 75 79 | 
             
                        if GitHooks.debug?
         | 
| @@ -81,7 +85,7 @@ module GitHooks | |
| 81 85 | 
             
                        end
         | 
| 82 86 | 
             
                        @success = false
         | 
| 83 87 | 
             
                      ensure
         | 
| 84 | 
            -
                        finished!
         | 
| 88 | 
            +
                        was_skipped ? skipped! : finished!
         | 
| 85 89 | 
             
                      end
         | 
| 86 90 | 
             
                    }
         | 
| 87 91 | 
             
                  end
         | 
| @@ -124,6 +128,10 @@ module GitHooks | |
| 124 128 |  | 
| 125 129 | 
             
                # DSL Methods
         | 
| 126 130 |  | 
| 131 | 
            +
                def skip!
         | 
| 132 | 
            +
                  throw :skip, true
         | 
| 133 | 
            +
                end
         | 
| 134 | 
            +
             | 
| 127 135 | 
             
                def config_path
         | 
| 128 136 | 
             
                  GitHooks.hooks_root.join('configs')
         | 
| 129 137 | 
             
                end
         | 
    
        data/lib/githooks/error.rb
    CHANGED
    
    
    
        data/lib/githooks/hook.rb
    CHANGED
    
    | @@ -108,7 +108,7 @@ module GitHooks | |
| 108 108 | 
             
                private :setup_command
         | 
| 109 109 |  | 
| 110 110 | 
             
                def find_command(name)
         | 
| 111 | 
            -
                  @commands. | 
| 111 | 
            +
                  @commands.find { |command| command.name == name.to_s }
         | 
| 112 112 | 
             
                end
         | 
| 113 113 |  | 
| 114 114 | 
             
                def sections
         | 
| @@ -169,22 +169,32 @@ module GitHooks | |
| 169 169 | 
             
                    @hook = hook
         | 
| 170 170 | 
             
                  end
         | 
| 171 171 |  | 
| 172 | 
            -
                  def  | 
| 172 | 
            +
                  def repository
         | 
| 173 173 | 
             
                    @hook.repository
         | 
| 174 174 | 
             
                  end
         | 
| 175 175 |  | 
| 176 | 
            -
                  def  | 
| 177 | 
            -
                    @files ||=  | 
| 178 | 
            -
                       | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 181 | 
            -
             | 
| 176 | 
            +
                  def files
         | 
| 177 | 
            +
                    @files ||= begin
         | 
| 178 | 
            +
                      options = {
         | 
| 179 | 
            +
                        staged:    hook.staged,
         | 
| 180 | 
            +
                        tracked:   hook.tracked,
         | 
| 181 | 
            +
                        untracked: hook.untracked
         | 
| 182 | 
            +
                      }
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                      if %w[ commit-msg pre-push ].include? hook.phase
         | 
| 185 | 
            +
                        if (parent_sha = repository.last_unpushed_commit_parent)
         | 
| 186 | 
            +
                          options.merge!(ref: parent_sha)
         | 
| 187 | 
            +
                        end
         | 
| 188 | 
            +
                      end
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                      repository.manifest(options)
         | 
| 191 | 
            +
                    end
         | 
| 182 192 | 
             
                  end
         | 
| 183 193 |  | 
| 184 194 | 
             
                  def filter(limiters)
         | 
| 185 | 
            -
                     | 
| 195 | 
            +
                    files.dup.tap do |files|
         | 
| 186 196 | 
             
                      limiters.each do |type, limiter|
         | 
| 187 | 
            -
                        puts "Limiter [#{type}] -> (#{limiter.only.inspect}) match against: " if GitHooks.debug?
         | 
| 197 | 
            +
                        STDERR.puts "Limiter [#{type}] -> (#{limiter.only.inspect}) match against: " if GitHooks.debug?
         | 
| 188 198 | 
             
                        limiter.limit(files)
         | 
| 189 199 | 
             
                      end
         | 
| 190 200 | 
             
                    end
         | 
    
        data/lib/githooks/repository.rb
    CHANGED
    
    | @@ -21,7 +21,7 @@ require 'set' | |
| 21 21 | 
             
            require 'singleton'
         | 
| 22 22 |  | 
| 23 23 | 
             
            module GitHooks
         | 
| 24 | 
            -
              class Repository | 
| 24 | 
            +
              class Repository
         | 
| 25 25 | 
             
                extend SystemUtils
         | 
| 26 26 |  | 
| 27 27 | 
             
                command :git
         | 
| @@ -75,23 +75,20 @@ module GitHooks | |
| 75 75 | 
             
                  git(*%w(stash pop -q)).status.success?
         | 
| 76 76 | 
             
                end
         | 
| 77 77 |  | 
| 78 | 
            -
                def manifest(options = {}) | 
| 78 | 
            +
                def manifest(options = {})
         | 
| 79 79 | 
             
                  ref = options.delete(:ref)
         | 
| 80 | 
            +
             | 
| 80 81 | 
             
                  return staged_manifest(ref: ref) if options.delete(:staged)
         | 
| 81 82 |  | 
| 82 83 | 
             
                  manifest_list = unstaged_manifest(ref: ref)
         | 
| 83 84 |  | 
| 84 | 
            -
                   | 
| 85 | 
            -
                     | 
| 86 | 
            -
             | 
| 87 | 
            -
                    end
         | 
| 88 | 
            -
                  end
         | 
| 85 | 
            +
                  tracked_manifest(ref: ref).each_with_object(manifest_list) do |file, list|
         | 
| 86 | 
            +
                    list << file
         | 
| 87 | 
            +
                  end if options.delete(:tracked)
         | 
| 89 88 |  | 
| 90 | 
            -
                   | 
| 91 | 
            -
                     | 
| 92 | 
            -
             | 
| 93 | 
            -
                    end
         | 
| 94 | 
            -
                  end
         | 
| 89 | 
            +
                  untracked_manifest(ref: ref).each_with_object(manifest_list) do |file, list|
         | 
| 90 | 
            +
                    list << file
         | 
| 91 | 
            +
                  end if options.delete(:untracked)
         | 
| 95 92 |  | 
| 96 93 | 
             
                  manifest_list.sort
         | 
| 97 94 | 
             
                end
         | 
| @@ -121,6 +118,28 @@ module GitHooks | |
| 121 118 | 
             
                  }.compact
         | 
| 122 119 | 
             
                end
         | 
| 123 120 |  | 
| 121 | 
            +
                def unpushed_commits
         | 
| 122 | 
            +
                  result = git('log', '--format=%H', '@{upstream}..')
         | 
| 123 | 
            +
                  if result.failure?
         | 
| 124 | 
            +
                    if result.error =~ /^fatal: no upstream configured for branch '([^']+)'/
         | 
| 125 | 
            +
                      fail Error::RemoteNotSet, "No upstream remote configured for '#{$1}'"
         | 
| 126 | 
            +
                    else
         | 
| 127 | 
            +
                      fail Error::CommandExecutionFailure, result.error
         | 
| 128 | 
            +
                    end
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
                  result.output.split(/\s*\n\s*/).collect(&:strip)
         | 
| 131 | 
            +
                end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                def revision_parent(revision)
         | 
| 134 | 
            +
                  return unless (result = git('rev-parse', "#{revision}~1")).status.success?
         | 
| 135 | 
            +
                  result.output.strip
         | 
| 136 | 
            +
                end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                def last_unpushed_commit_parent
         | 
| 139 | 
            +
                  oldest_sha = unpushed_commits.last
         | 
| 140 | 
            +
                  revision_parent(oldest_sha) unless oldest_sha.nil?
         | 
| 141 | 
            +
                end
         | 
| 142 | 
            +
             | 
| 124 143 | 
             
              private
         | 
| 125 144 |  | 
| 126 145 | 
             
                def diff_index(options = {}) # rubocop:disable AbcSize
         | 
| @@ -44,7 +44,7 @@ module GitHooks | |
| 44 44 | 
             
                      match_file(file, @only).tap do |result|
         | 
| 45 45 | 
             
                        if GitHooks.debug?
         | 
| 46 46 | 
             
                          result = (result ? 'success' : 'failure')
         | 
| 47 | 
            -
                          puts "  #{file.path} (#{file.attribute_value(@type).inspect}) was a #{result}"
         | 
| 47 | 
            +
                          STDERR.puts "  #{file.path} (#{file.attribute_value(@type).inspect}) was a #{result}"
         | 
| 48 48 | 
             
                        end
         | 
| 49 49 | 
             
                      end
         | 
| 50 50 | 
             
                    end
         | 
    
        data/lib/githooks/section.rb
    CHANGED
    
    | @@ -48,7 +48,6 @@ module GitHooks | |
| 48 48 | 
             
                # overrides previous action method to only return
         | 
| 49 49 | 
             
                # actions that have a non-empty manifest
         | 
| 50 50 | 
             
                def actions
         | 
| 51 | 
            -
                  return @actions unless @hook.phase == 'pre-commit'
         | 
| 52 51 | 
             
                  @actions.reject { |action| action.manifest.empty? }
         | 
| 53 52 | 
             
                end
         | 
| 54 53 | 
             
                alias_method :__getobj__, :actions
         | 
| @@ -57,7 +56,7 @@ module GitHooks | |
| 57 56 | 
             
                  @actions << action
         | 
| 58 57 | 
             
                end
         | 
| 59 58 |  | 
| 60 | 
            -
                %w(finished running waiting).each do |method|
         | 
| 59 | 
            +
                %w(finished running waiting skipped).each do |method|
         | 
| 61 60 | 
             
                  define_method(:"#{method}?") { @status == method.to_sym }
         | 
| 62 61 | 
             
                  define_method(:"#{method}!") { @status = method.to_sym }
         | 
| 63 62 | 
             
                end
         | 
| @@ -67,7 +66,7 @@ module GitHooks | |
| 67 66 | 
             
                end
         | 
| 68 67 |  | 
| 69 68 | 
             
                def wait_count
         | 
| 70 | 
            -
                  @actions. | 
| 69 | 
            +
                  @actions.count(&:waiting?)
         | 
| 71 70 | 
             
                end
         | 
| 72 71 |  | 
| 73 72 | 
             
                def name(phase = GitHooks::HOOK_NAME)
         | 
| @@ -76,6 +75,7 @@ module GitHooks | |
| 76 75 |  | 
| 77 76 | 
             
                def colored_name(phase = GitHooks::HOOK_NAME)
         | 
| 78 77 | 
             
                  title = name(phase)
         | 
| 78 | 
            +
                  return title.color_skipped! if @actions.all?(&:skipped?)
         | 
| 79 79 | 
             
                  return title.color_unknown! unless finished? && completed?
         | 
| 80 80 | 
             
                  success? ? title.color_success! : title.color_failure!
         | 
| 81 81 | 
             
                end
         | 
| @@ -88,7 +88,12 @@ module GitHooks | |
| 88 88 | 
             
                  running!
         | 
| 89 89 | 
             
                  begin
         | 
| 90 90 | 
             
                    time_start = Time.now
         | 
| 91 | 
            -
                    actions.collect { |action| | 
| 91 | 
            +
                    actions.collect { |action|
         | 
| 92 | 
            +
                      catch(:skip) do
         | 
| 93 | 
            +
                        @success &= action.run
         | 
| 94 | 
            +
                      end
         | 
| 95 | 
            +
                      @success
         | 
| 96 | 
            +
                    }.all?
         | 
| 92 97 | 
             
                  ensure
         | 
| 93 98 | 
             
                    @benchmark = Time.now - time_start
         | 
| 94 99 | 
             
                    finished!
         | 
    
        data/lib/githooks/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rabbitt-githooks
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.5. | 
| 4 | 
            +
              version: 1.5.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Carl P. Corliss
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-09- | 
| 11 | 
            +
            date: 2015-09-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rainbow
         | 
| @@ -209,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 209 209 | 
             
                  version: '0'
         | 
| 210 210 | 
             
            requirements: []
         | 
| 211 211 | 
             
            rubyforge_project: 
         | 
| 212 | 
            -
            rubygems_version: 2. | 
| 212 | 
            +
            rubygems_version: 2.2.2
         | 
| 213 213 | 
             
            signing_key: 
         | 
| 214 214 | 
             
            specification_version: 4
         | 
| 215 215 | 
             
            summary: framework for building git hooks tests
         |