class GemReleaseHelper::Tasks::Generator::Gemfiles

Constants

DEFAULT_EMBULK_GEMFILE_TEMPLATE

Public Instance Methods

gemfiles() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 20
def gemfiles
  logger.info "Generate Embulk gemfiles from '#{min_version}' to latest"
  init
  create_gemfiles
  logger.info "Updated Gemfiles '#{min_version}' to '#{embulk_versions.max}'"
end
install_tasks() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 11
def install_tasks
  namespace :generate do
    desc "Generate gemfiles to test this plugin with released Embulk versions (since MIN_VERSION)"
    task :gemfiles do
      gemfiles
    end
  end
end

Private Instance Methods

create_gemfile(version, name = nil) click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 66
def create_gemfile(version, name = nil)
  erb = ERB.new(gemfile_template_path.read)
  File.open(gemfiles_dir.join("embulk-#{name || version}"), "w") do |f|
    f.write erb.result(binding())
  end
end
create_gemfiles() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 48
def create_gemfiles
  FileUtils.mkdir_p(gemfiles_dir)

  Dir[gemfiles_dir.join("embulk-*")].each{|f| File.unlink(f)}

  target_versions.each do |version|
    create_gemfile(version)
  end

  # e.g. embulk-0.6-latest
  target_versions_without_patch.each do |version|
    create_gemfile("~> #{version}", "#{version}-latest")
  end

  # embulk-latest
  create_gemfile("> #{min_version}", "latest")
end
gemfile_template_path() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 77
def gemfile_template_path
  root_dir.join(options[:gemfile_template] || DEFAULT_EMBULK_GEMFILE_TEMPLATE)
end
init() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 29
def init
  FileUtils.mkdir_p File.dirname(gemfile_template_path)
  unless File.exists?(gemfile_template_path)
    logger.info "Generate gemfiles template file (#{gemfile_template_path})"
    File.open(gemfile_template_path, "w") do |f|
      f.write initial_template
    end
  end
end
initial_template() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 39
        def initial_template
          <<-ERB
source 'https://rubygems.org/'
gemspec :path => '#{gemspec_path.dirname.relative_path_from(gemfiles_dir)}/'

gem "embulk", "<%= version %>"
          ERB
        end
min_version() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 73
def min_version
  Gem::Version.new(ENV["MIN_VERSION"] || options[:min_version] || "0.0.1")
end
target_versions() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 81
def target_versions
  embulk_versions.find_all do |version|
    version >= min_version
  end
end
target_versions_without_patch() click to toggle source
# File lib/gem_release_helper/tasks/generator/gemfile.rb, line 87
def target_versions_without_patch
  target_versions.map do |version|
    major, minor, _ = version.segments
    Gem::Version.new([major, minor, 0].join(".")) # NOTE: "~> 0.1.0" -> 0.1.x (< 0.2) / "~> 0.1" -> 0.x (< 1.0)
  end.uniq
end