Sha256: fb01f4c8c2c865308268ba4948ff9a9c1b3c033ae880146847aa67bcdabf57b0

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

module Pronto
  class Runner
    include Plugin

    def initialize(patches, commit = nil)
      @patches = patches
      @commit = commit
    end

    def self.runners
      repository
    end

    def self.title
      @runner_name ||= begin
        source_path, _line = instance_method(:run).source_location
        file_name, _extension = File.basename(source_path).split('.')
        file_name
      end
    end

    def ruby_patches
      return [] unless @patches

      @ruby_patches ||= @patches.select { |patch| patch.additions > 0 }
        .select { |patch| ruby_file?(patch.new_file_full_path) }
    end

    def ruby_file?(path)
      rb_file?(path) || rake_file?(path) || ruby_executable?(path)
    end

    def repo_path
      @patches.first.repo.path
    end

    private

    def rb_file?(path)
      File.extname(path) == '.rb'
    end

    def rake_file?(path)
      File.extname(path) == '.rake'
    end

    def ruby_executable?(path)
      return false if File.directory?(path)
      line = File.open(path, &:readline)
      line =~ /#!.*ruby/
    rescue ArgumentError, EOFError
      false
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pronto-0.8.2 lib/pronto/runner.rb
pronto-0.8.1 lib/pronto/runner.rb
pronto-0.8.0 lib/pronto/runner.rb