module Everyleaf::EmbulkHelper::Tasks::Common

Attributes

options[R]

Public Class Methods

included(klass) click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 25
def self.included(klass)
  Tasks.register(klass)
end
new(options = {}) click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 19
def initialize(options = {})
  raise "options should be a Hash, given #{options.class}: #{options} " unless options.is_a?(Hash)
  @options = options
  validate_options
end

Public Instance Methods

embulk_tags() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 62
def embulk_tags
  @embulk_tags ||= JSON.parse(open("https://api.github.com/repos/embulk/embulk/tags").read)
end
embulk_versions() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 66
def embulk_versions
  embulk_tags.map{|tag| Gem::Version.new(tag["name"][/v(.*)/, 1])}.sort
end
gemfiles_dir() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 54
def gemfiles_dir
  root_dir.join("gemfiles")
end
gemspec_path() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 46
def gemspec_path
  Pathname.new(File.expand_path(options[:gemspec]))
end
install_tasks() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 29
def install_tasks
  raise NotImplementedError
end
logger() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 42
def logger
  ::Logger.new(STDERR)
end
required_options() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 58
def required_options
  [] # Implement this in subclass if needed
end
root_dir() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 50
def root_dir
  gemspec_path.dirname
end
validate_options() click to toggle source
# File lib/everyleaf/embulk_helper/tasks/common.rb, line 33
def validate_options
  raise OptionError, "gemspec file path is required" unless options[:gemspec]
  raise OptionError, "gemspec file '#{options[:gemspec]}' is not found" unless File.exists?(options[:gemspec])

  required_options.map(&:to_sym).each do |opt|
    raise OptionError, "#{opt} is required" unless options[opt]
  end
end