class Gem::Release::Context::Paths::ByGemspecs

def by_gemspecs

def by_gemspecs
  paths = gemspecs(true).map { |path| [path.dirname, name_for(path)] }
  paths unless paths.empty?
end

def by_names

def by_names
  paths = names.map { |arg| by_gemspecs.detect { |_, name| name == arg } }.compact
  paths unless paths.empty?
end

def dirs

def dirs
  dirs = by_gemspecs if opts[:recurse]
  dirs ||= by_names  if names.any?
  dirs ||= gemspec
  dirs || by_gemspecs || current
end

def gemspec

def gemspec
  path = gemspecs.first
  [[path.expand_path.dirname, name_for(path)]] if path
end

def gemspecs(recurse = false)

def gemspecs(recurse = false)
  pattern = recurse ? '**/*.gemspec' : '*.gemspec'
  Pathname.glob(pattern).map(&:expand_path).sort
end

def in_dirs(&block)

def in_dirs(&block)
  dirs.each do |dir, name|
    in_dir(dir) { yield name }
  end
end

def name_for(path)

def name_for(path)
  path.basename('.gemspec').to_s
end