File: list.rb

package info (click to toggle)
ticgit 1.0.2.18-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 488 kB
  • sloc: ruby: 2,848; sh: 124; makefile: 16
file content (80 lines) | stat: -rw-r--r-- 2,222 bytes parent folder | download | duplicates (3)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
module TicGitNG
  module Command
    # List tickets
    module List
      def parser(o)
        o.banner = "Usage: ti list [options]"
        o.on_head(
          "-o ORDER", "--order ORDER",
          "Field to order by - one of : assigned,state,date,title [.desc for reverse order]"){|v|
          options.order = v
        }

        o.on_head(
          "-t TAG[,TAG]", "--tags TAG[,TAG]", Array,
          "List only tickets with specific tag(s)",
          "Prefix the tag with '-' to negate"){|v|
          options.tags ||= Set.new
          options.tags.merge v
        }

        o.on_head(
          "-s STATE[,STATE]", "--states STATE[,STATE]", Array,
          "List only tickets in a specific state(s)",
          "Prefix the state with '-' to negate"){|v|
          options.states ||= Set.new
          options.states.merge v
        }

        o.on_head(
          "-a ASSIGNED", "--assigned ASSIGNED",
          "List only tickets assigned to someone"){|v|
          options.assigned = v
        }

        o.on_head("-S SAVENAME", "--saveas SAVENAME",
                     "Save this list as a saved name"){|v|
          options.save = v
        }

        o.on_head("-l", "--list", "Show the saved queries"){|v|
          options.list = true
        }
      end

      def execute
        options.saved = args[0] if args[0]

        if tickets = tic.ticket_list(options.to_hash)
          counter = 0
          cols = [80, window_cols].max

          puts
          puts [' ', just('#', 4, 'r'),
            just('TicId', 6),
            just('Title', cols - 56),
            just('State', 5),
            just('Date', 5),
            just('Assgn', 8),
            just('Tags', 20) ].join(" ")

          puts "-" * cols

          tickets.each do |t|
            counter += 1
            tic.current_ticket == t.ticket_name ? add = '*' : add = ' '
            puts [add, just(counter, 4, 'r'),
              t.ticket_id[0,6],
              just(t.title, cols - 56),
              just(t.state, 5),
              t.opened.strftime("%m/%d"),
              just(t.assigned_name, 8),
              just(t.tags.join(','), 20) ].join(" ")
          end
          puts
        end

      end
    end
  end
end