lib/badger/helpers.rb
module Badger
def Badger.is_repo? dir
begin
Git.open(dir)
rescue ArgumentError
puts 'Run this from inside a git repo'
exit 1
end
end
def Badger.git_remote dir
begin
remote = nil
is_repo?(dir).remotes.each do |r|
if r.url.match /github.com/
remote = r.url
end
end
rescue NoMethodError
puts 'This repo does not appear to have a github remote'
exit 2
end
if remote.nil?
puts 'This repo does not appear to have a github remote'
exit 2
end
remote
end
def Badger.slug_extract remote_url
remote_url.match(/.*github.com[\/:](.*)/)[1].gsub(/.git$/, '')
end
def Badger.has_travis? dir
((Dir.entries dir).select { |i| '.travis.yml' == i }).any?
end
def Badger.has_gemfile? dir
gemfiles(dir).any?
end
def Badger.has_coveralls? dir
lines = []
gemfiles(dir).each do |gemfile|
lines += File.readlines(File.join(dir, gemfile))
end
lines.grep(/coveralls/).any?
end
def Badger.spec_files dir
(Dir.entries dir).select { |i| i =~ /gemspec/ }
end
def Badger.gemfiles dir
targets = []
targets += (Dir.entries dir).select { |i| i =~ /Gemfile/ }
targets += spec_files dir
targets
end
def Badger.find_license dir
license_file = (Dir.entries dir).select { |i| i =~ /LICENSE/ }[0]
if license_file
words = File.open(File.join(dir, license_file), 'r').read
Config.instance.licenses.each_pair do |k, v|
if words =~ /#{v['regex']}/im
return k
end
end
end
nil
end
def Badger.search_gemspec dir
spec_file = spec_files(dir)[0]
if spec_file
params = {}
gs = File.readlines(File.join(dir, spec_file))
params[:rubygem] = eval (gs.grep /\.name /)[0].sub(/^\s.*\./, '')
lines = (gs.grep /licenses?/)
if lines.any?
l = eval (lines[0]).sub(/^\s.*\./, '')
params[:licenses] = l.class.name == 'Array' ? l : [l]
end
end
params || nil
end
end