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
|
# File 'lib/dev_context/commands/status.rb', line 6
def cmd_status(mode: "status")
args = argv.dup
all = false
dirty_only = (mode == "wip")
branch_pattern = nil
path_pattern = nil
parser = OptionParser.new
parser.on("-a", "--all", "Show status for all known repos") { all = true }
parser.on("-d", "--dirty", "Show only repos that are not up to date") { dirty_only = true }
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)
usage = mode == "wip" ? "dx wip [--all] [--dirty] [-b BRANCHPATTERN] [-p PATHPATTERN]" : "dx status [--all] [--dirty] [-b BRANCHPATTERN] [-p PATHPATTERN]"
return usage_error(usage) unless args.empty?
rows = all ? all_known_repo_rows : active_context_rows
rows = rows.select { |row| pattern_match?(row[:branch], branch_pattern) }
rows = rows.select { |row| pattern_match?(row[:path], path_pattern) }
rows = rows.reject { |row| strip_ansi(row[:status]).start_with?("Up to date") } if dirty_only
if rows.empty?
out.puts(empty_message(all: all, dirty_only: dirty_only))
return 0
end
render_status_table(rows)
0
rescue OptionParser::InvalidOption => e
err.puts("dx: #{e.message}")
usage_error(mode == "wip" ? "dx wip [--all] [--dirty] [-b BRANCHPATTERN] [-p PATHPATTERN]" : "dx status [--all] [--dirty] [-b BRANCHPATTERN] [-p PATHPATTERN]")
end
|