mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-03-25 09:05:47 +00:00
71 lines
1.3 KiB
Ruby
71 lines
1.3 KiB
Ruby
module Helpers
|
|
|
|
def increasing?(list)
|
|
comparisons(list).all? { |x| x && x <= 0 }
|
|
end
|
|
|
|
def decreasing?(list)
|
|
comparisons(list).all? { |x| x && x >= 0 }
|
|
end
|
|
|
|
def comparisons(list)
|
|
x = list.first
|
|
list.drop(1).map do |y|
|
|
x <=> y
|
|
end
|
|
end
|
|
|
|
def git_bare?(dir)
|
|
if File.exist?(File.join(dir, '.git'))
|
|
false
|
|
elsif File.exist?(File.join(dir, 'HEAD'))
|
|
true
|
|
else
|
|
raise "what is this dir? #{dir} #{Dir[dir + '/*'].join(', ')}"
|
|
end
|
|
end
|
|
|
|
def git_sha(dir)
|
|
if git_bare?(dir)
|
|
`cd '#{dir}' && cat "$(cut -d' ' -f2 HEAD)"`.strip
|
|
else
|
|
`cd '#{dir}' && git log -n1`.split[1].strip
|
|
end
|
|
end
|
|
|
|
def git_reset_hard(dir, ref = nil)
|
|
if git_bare?(dir)
|
|
raise 'git_reset_hard does not support bare repos ' + dir + ' -- ' + ref.to_s
|
|
else
|
|
args = ref ? "'#{ref}'" : ''
|
|
`cd '#{dir}' && git reset --hard #{args}`
|
|
end
|
|
end
|
|
|
|
class TitleFinder
|
|
attr_accessor :title
|
|
def initialize(title)
|
|
@title = title
|
|
end
|
|
def find_title(url) @title end
|
|
end
|
|
|
|
def mock_title_finder(title)
|
|
TitleFinder.new(title)
|
|
end
|
|
|
|
class VersionFinder
|
|
attr_accessor :version
|
|
def initialize(version)
|
|
@version = version
|
|
end
|
|
def find_version(url = nil)
|
|
@version
|
|
end
|
|
end
|
|
|
|
def mock_version_finder(version)
|
|
VersionFinder.new(version)
|
|
end
|
|
|
|
end
|