lib/ggem/gemspec.rb in ggem-1.9.1 vs lib/ggem/gemspec.rb in ggem-1.9.2

- old
+ new

@@ -1,85 +1,80 @@ require "pathname" require "scmd" -module GGem +module GGem; end +class GGem::Gemspec + PUSH_HOST_META_KEY = "allowed_push_host" + DEFAULT_PUSH_HOST = "https://rubygems.org".freeze + BUILD_TO_DIRNAME = "pkg".freeze - class Gemspec + NotFoundError = Class.new(ArgumentError) + LoadError = Class.new(ArgumentError) + CmdError = Class.new(RuntimeError) - PUSH_HOST_META_KEY = "allowed_push_host" - DEFAULT_PUSH_HOST = "https://rubygems.org".freeze - BUILD_TO_DIRNAME = "pkg".freeze + attr_reader :path, :name, :version, :version_tag + attr_reader :gem_file_name, :gem_file, :push_host - attr_reader :path, :name, :version, :version_tag - attr_reader :gem_file_name, :gem_file, :push_host + def initialize(root_path) + @root = Pathname.new(File.expand_path(root_path)) + raise NotFoundError unless @root.exist? + @path = Pathname.new(Dir[File.join(@root, "{,*}.gemspec")].first.to_s) + raise NotFoundError unless @path.exist? - def initialize(root_path) - @root = Pathname.new(File.expand_path(root_path)) - raise NotFoundError unless @root.exist? - @path = Pathname.new(Dir[File.join(@root, "{,*}.gemspec")].first.to_s) - raise NotFoundError unless @path.exist? + @spec = load_gemspec(@path) + @name = @spec.name + @version = @spec.version + @version_tag = "v#{@version}" - @spec = load_gemspec(@path) - @name = @spec.name - @version = @spec.version - @version_tag = "v#{@version}" + @gem_file_name = "#{@name}-#{@version}.gem" + @gem_file = File.join(BUILD_TO_DIRNAME, @gem_file_name) + @built_gem_path = @root.join(@gem_file) - @gem_file_name = "#{@name}-#{@version}.gem" - @gem_file = File.join(BUILD_TO_DIRNAME, @gem_file_name) - @built_gem_path = @root.join(@gem_file) + @push_host = get_push_host(@spec) + end - @push_host = get_push_host(@spec) + def run_build_cmd + run_cmd("gem build --verbose #{@path}").tap do + gem_path = @root.join(@gem_file_name) + run_cmd("mkdir -p #{@built_gem_path.dirname}") + run_cmd("mv #{gem_path} #{@built_gem_path}") end + end - def run_build_cmd - run_cmd("gem build --verbose #{@path}").tap do - gem_path = @root.join(@gem_file_name) - run_cmd("mkdir -p #{@built_gem_path.dirname}") - run_cmd("mv #{gem_path} #{@built_gem_path}") - end - end + def run_install_cmd + run_cmd("gem install #{@built_gem_path}") + end - def run_install_cmd - run_cmd("gem install #{@built_gem_path}") - end + def run_push_cmd + run_cmd("gem push #{@built_gem_path} --host #{@push_host}") + end - def run_push_cmd - run_cmd("gem push #{@built_gem_path} --host #{@push_host}") - end + private - private - - def run_cmd(cmd_string) - cmd = Scmd.new(cmd_string) - cmd.run - if !cmd.success? - raise CmdError, "#{cmd_string}\n" \ - "#{cmd.stderr.empty? ? cmd.stdout : cmd.stderr}" - end - [cmd_string, cmd.exitstatus, cmd.stdout] + def run_cmd(cmd_string) + cmd = Scmd.new(cmd_string) + cmd.run + if !cmd.success? + raise CmdError, "#{cmd_string}\n" \ + "#{cmd.stderr.empty? ? cmd.stdout : cmd.stderr}" end + [cmd_string, cmd.exitstatus, cmd.stdout] + end - def load_gemspec(path) - eval(path.read, TOPLEVEL_BINDING, path.expand_path.to_s) - rescue ScriptError, StandardError => e - original_line = e.backtrace.find{ |line| line.include?(path.to_s) } - msg = "There was a #{e.class} while loading #{path.basename}: \n#{e.message}" - msg << " from\n #{original_line}" if original_line - msg << "\n" - raise LoadError, msg - end + def load_gemspec(path) + eval(path.read, TOPLEVEL_BINDING, path.expand_path.to_s) + rescue ScriptError, StandardError => e + original_line = e.backtrace.find{ |line| line.include?(path.to_s) } + msg = "There was a #{e.class} while loading #{path.basename}: \n#{e.message}" + msg << " from\n #{original_line}" if original_line + msg << "\n" + raise LoadError, msg + end - def get_push_host(spec) - ENV["GGEM_PUSH_HOST"] || get_meta(spec)[PUSH_HOST_META_KEY] || DEFAULT_PUSH_HOST - end - - def get_meta(spec) - (spec.respond_to?(:metadata) ? spec.metadata : {}) || {} - end - - NotFoundError = Class.new(ArgumentError) - LoadError = Class.new(ArgumentError) - CmdError = Class.new(RuntimeError) - + def get_push_host(spec) + ENV["GGEM_PUSH_HOST"] || get_meta(spec)[PUSH_HOST_META_KEY] || DEFAULT_PUSH_HOST end + def get_meta(spec) + (spec.respond_to?(:metadata) ? spec.metadata : {}) || {} + end end