Sha256: 53f357b016789e0e18e48e7f6ce2382fe6a606fe0b7a7885b7fd0b96ba158168

Contents?: true

Size: 1.13 KB

Versions: 7

Compression:

Stored size: 1.13 KB

Contents

module Pronto
  class Runner
    include Plugin

    def initialize(patches, commit = nil)
      @patches = patches
      @commit = commit
      @config = Config.new
    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

7 entries across 7 versions & 1 rubygems

Version Path
pronto-0.10.0 lib/pronto/runner.rb
pronto-0.9.5 lib/pronto/runner.rb
pronto-0.9.4 lib/pronto/runner.rb
pronto-0.9.3 lib/pronto/runner.rb
pronto-0.9.2 lib/pronto/runner.rb
pronto-0.9.1 lib/pronto/runner.rb
pronto-0.9.0 lib/pronto/runner.rb