class Gemsmith::Rake::Tasks

Provides Rake tasks for use in all gems built by this gem.

Attributes

builder[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

gem_spec[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

publisher[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

Public Class Methods

default_gem_spec() click to toggle source
# File lib/gemsmith/rake/tasks.rb, line 20
def self.default_gem_spec
  Pathname.pwd.files("*.gemspec").first
end
new(gem_spec: Gem::Specification.new(self.class.default_gem_spec.to_s), builder: Rake::Builder.new, publisher: Rake::Publisher.new) click to toggle source
# File lib/gemsmith/rake/tasks.rb, line 28
def initialize gem_spec: Gem::Specification.new(self.class.default_gem_spec.to_s),
               builder: Rake::Builder.new,
               publisher: Rake::Publisher.new
  @gem_spec = gem_spec
  @builder = builder
  @publisher = publisher
end
setup() click to toggle source
# File lib/gemsmith/rake/tasks.rb, line 24
def self.setup
  new.install
end

Public Instance Methods

install() click to toggle source

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength :reek: TooManyStatements

# File lib/gemsmith/rake/tasks.rb, line 39
def install
  Tocer::Rake::Tasks.setup

  desc "Clean gem artifacts"
  task :clean do
    builder.clean
  end

  task :validate do
    builder.validate
  end

  desc "Build #{gem_package} package"
  task build: %i[clean toc validate] do
    builder.build gem_spec
  end

  desc "Install #{gem_package} package"
  task install: :build do
    builder.install gem_spec
  end

  desc "Build, tag as #{gem_spec.version} (#{signed_label}), " \
       "and push #{gem_package} to RubyGems"
  task publish: :build do
    publisher.publish
  end
end

Private Instance Methods

gem_package() click to toggle source
# File lib/gemsmith/rake/tasks.rb, line 74
def gem_package
  gem_spec.package_file_name
end
signed_label() click to toggle source
# File lib/gemsmith/rake/tasks.rb, line 78
def signed_label
  publisher.signed? ? "signed" : "unsigned"
end