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
|
# File 'lib/dev_context/commands/repos.rb', line 6
def cmd_repos
args = argv.dup
branch_pattern = nil
path_pattern = nil
parser = OptionParser.new
parser.on("-b", "--branch BRANCHPATTERN", "Filter by branch pattern") { |v| branch_pattern = v }
parser.on("-p", "--path PATHPATTERN", "Filter by path pattern") { |v| path_pattern = v }
parser.parse!(args)
shortcut_pattern = args.shift
return usage_error("dx repos [-b BRANCHPATTERN] [-p PATHPATTERN] [PATTERN]") unless args.empty?
path_pattern ||= shortcut_pattern
rows = known_repo_rows
rows = rows.select { |row| pattern_match?(row[:branch], branch_pattern) }
rows = rows.select { |row| pattern_match?(row[:path], path_pattern) }
if rows.empty?
out.puts("No known repos")
return 0
end
display_rows = rows.map { |r| r.merge(path: display_path(r[:path])) }.sort_by { |r| r[:path] }
path_w = [display_rows.map { |r| r[:path].length }.max || 0, "Repo".length].max
branch_w = [display_rows.map { |r| r[:branch].length }.max || 0, "Branch".length].max
out.puts(format("%-#{path_w}s %-#{branch_w}s", "Repo", "Branch"))
out.puts(format("%-#{path_w}s %-#{branch_w}s", "-" * path_w, "-" * branch_w))
display_rows.each { |row| out.puts(format("%-#{path_w}s %-#{branch_w}s", row[:path], row[:branch])) }
0
rescue OptionParser::InvalidOption => e
err.puts("dx: #{e.message}")
usage_error("dx repos [-b BRANCHPATTERN] [-p PATHPATTERN] [PATTERN]")
end
|