class Hiiro::Git::Branches
def self.all(sort_by: nil, ignore_case: false)
def self.all(sort_by: nil, ignore_case: false) fetch(sort_by: sort_by, ignore_case: ignore_case, remote: :all) end
def self.fetch(sort_by: nil, ignore_case: false, remote: false)
def self.fetch(sort_by: nil, ignore_case: false, remote: false) args = ['git', 'branch', '--format=%(refname:short)'] args << '-i' if ignore_case args << '-r' if remote args << "-a" if remote == :all args << "--sort=#{sort_by}" if sort_by output = `#{args.shelljoin} 2>/dev/null` from_names(output.split("\n").map(&:strip)) end
def self.from_names(names)
def self.from_names(names) branches = names.map { |name| Branch.new(name: name) } new(branches) end
def self.local(sort_by: nil, ignore_case: false)
def self.local(sort_by: nil, ignore_case: false) fetch(sort_by: sort_by, ignore_case: ignore_case, remote: false) end
def self.remote(sort_by: nil, ignore_case: false)
def self.remote(sort_by: nil, ignore_case: false) fetch(sort_by: sort_by, ignore_case: ignore_case, remote: true) end
def containing(substring)
def containing(substring) self.class.new(branches.select { |b| b.name.include?(substring) }) end
def current
def current branches.find(&:current?) end
def each(&block)
def each(&block) branches.each(&block) end
def empty?
def empty? branches.empty? end
def find_by_name(name)
def find_by_name(name) branches.find { |b| b.name == name } end
def initialize(branches)
def initialize(branches) @branches = branches end
def matching(prefix)
def matching(prefix) self.class.new(branches.select { |b| b.name.start_with?(prefix) }) end
def names
def names branches.map(&:name) end
def size
def size branches.size end
def to_a
def to_a branches.dup end