1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
module Git
# object that holds all the available worktrees
class Worktrees
include Enumerable
def initialize(base)
@worktrees = {}
@base = base
# Array contains [dir, git_hash]
@base.lib.worktrees_all.each do |w|
@worktrees[w[0]] = Git::Worktree.new(@base, w[0], w[1])
end
end
# array like methods
def size
@worktrees.size
end
def each(&block)
@worktrees.values.each(&block)
end
def [](worktree_name)
@worktrees.values.inject(@worktrees) do |worktrees, worktree|
worktrees[worktree.full] ||= worktree
worktrees
end[worktree_name.to_s]
end
def to_s
out = ''
@worktrees.each do |k, b|
out << b.to_s << "\n"
end
out
end
def prune
@base.lib.worktree_prune
end
end
end
|