gerrit 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87240c9921a5ea4b76b05a57b7e6a0f68c003c88
4
- data.tar.gz: cd7197693ac6dcc24945697c450e7b8f0712c3ee
3
+ metadata.gz: c14a9161708725543c0375055c068e864a8e0d00
4
+ data.tar.gz: 1aab149820844fe5cebae082f3f77bd728062b65
5
5
  SHA512:
6
- metadata.gz: 5467e171e12670ab484430cb9b0ed93f0a70bc42d42fb2fabe96c31bb0d1f087d3b01fcbc47115fd8d5cd7226472448fe76c1991f4145c5a557b78479a01f7ee
7
- data.tar.gz: 04f16de2f0662152a187694d0ac06ed32f82f89b01c4465a74653e9633cada93b760d4c5fcade14d42c6dadb73ad556a220cfa54bd1028f869f0defa27914404
6
+ metadata.gz: f44d2871bc42bf4dee823f3ee878fc8c01657e0a942d10b2a12f92f521b2c81cf3e82cd127317996ff20f94e2f6b8b059a4cf4d95fd97c1b360d6d91407fff0f
7
+ data.tar.gz: 0d7d9d5fd9631a66ad805e452570ac917a8e03cb90f8062aa39e99bcbd95d4a97027147d147345ca5c0e9c0c6a0de5fad19b3275072e67eeeadcc5c71e2205c7
data/lib/gerrit/cli.rb CHANGED
@@ -44,8 +44,8 @@ module Gerrit
44
44
  # @param arguments [Array<String>]
45
45
  # @raise [Gerrit::Errors::GerritError] when any exceptional circumstance occurs
46
46
  def run_command(config, arguments)
47
- # Display help documentation by default
48
- arguments = ['help'] if arguments.empty?
47
+ # Display all open changes by default
48
+ arguments = ['list'] if arguments.empty?
49
49
 
50
50
  command_class = find_command(arguments)
51
51
  command_class.new(config, @ui, arguments).run
data/lib/gerrit/client.rb CHANGED
@@ -70,6 +70,15 @@ module Gerrit
70
70
  end
71
71
  end
72
72
 
73
+ def query_changes(query)
74
+ rows = execute(%W[query
75
+ --format=JSON
76
+ --current-patch-set
77
+ --submit-records] + [query]).split("\n")[0..-2]
78
+
79
+ rows.map { |row| JSON.parse(row) }
80
+ end
81
+
73
82
  # Returns a list of all users to include in the default search scope.
74
83
  #
75
84
  # Gerrit doesn't actually have an endpoint to return all visible users, so
@@ -0,0 +1,11 @@
1
+ module Gerrit::Command
2
+ # Open console for playing around with helpers exposed to other commands.
3
+ #
4
+ # This is intended to be used to aid in building and debugging commands.
5
+ class Console < Base
6
+ def execute
7
+ require 'pry'
8
+ binding.pry
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,67 @@
1
+ module Gerrit::Command
2
+ # Show a list of changes matching a specified query.
3
+ class List < Base
4
+ def execute
5
+ # Get changes ordered from newest to oldest
6
+ changes =
7
+ ui.spinner('Loading ') do
8
+ client.query_changes(query).sort_by { |change| -change['lastUpdated'] }
9
+ end
10
+
11
+ # Display changes in reverse order so that the newest are at the bottom of
12
+ # the table (i.e. the part that will be visible in a console when there is
13
+ # a long list)
14
+ ui.table(header: %w[# CR V Subject Owner Project Updated],
15
+ alignments: [:left, :center, :center, :left, :left, :left, :right],
16
+ padding: [0,1,0,1]) do |t|
17
+ changes.each_with_index.map do |change, index|
18
+ [
19
+ index + 1,
20
+ symbol_for_status('Code-Review', change),
21
+ symbol_for_status('Verified', change),
22
+ change['subject'],
23
+ change['owner']['name'],
24
+ change['project'],
25
+ human_time(Time.at(change['lastUpdated'])),
26
+ ]
27
+ end.reverse.each do |row|
28
+ t << row
29
+ end
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def query
36
+ if arguments[1]
37
+ arguments[1]
38
+ else
39
+ 'status:open' # Show all open changes by default
40
+ end
41
+ end
42
+
43
+ def label_status(label_name, change)
44
+ status = change.fetch('submitRecords', []).first
45
+ return unless status
46
+
47
+ label_status = status['labels'].find { |label| label['label'] == label_name }
48
+ return unless label_status
49
+
50
+ label_status['status']
51
+ end
52
+
53
+ def symbol_for_status(label_name, change)
54
+ p = Pastel.new
55
+
56
+ value = label_status(label_name, change)
57
+ case value
58
+ when 'REJECT'
59
+ p.red.bold('✕')
60
+ when 'OK'
61
+ p.green.bold('✓')
62
+ else
63
+ ''
64
+ end
65
+ end
66
+ end
67
+ end
data/lib/gerrit/ui.rb CHANGED
@@ -113,7 +113,7 @@ module Gerrit
113
113
  def table(options = {}, &block)
114
114
  t = TTY::Table.new(options)
115
115
  block.call(t)
116
- print(t.render(:unicode))
116
+ print(t.render(:unicode, options))
117
117
  end
118
118
  end
119
119
  end
data/lib/gerrit/utils.rb CHANGED
@@ -23,6 +23,27 @@ module Gerrit
23
23
  string =~ /^\h{7,40}$/
24
24
  end
25
25
 
26
+ # Returns the given {Time} as a human-readable string based on that time
27
+ # relative to the current time.
28
+ #
29
+ # @param time [Time]
30
+ # @return [String]
31
+ def human_time(time)
32
+ date = time.to_date
33
+
34
+ if date == Date.today
35
+ time.strftime('%l:%M %p')
36
+ elsif date == Date.today - 1
37
+ 'Yesterday'
38
+ elsif date > Date.today - 7
39
+ time.strftime('%A') # Sunday
40
+ elsif date.year == Date.today.year
41
+ time.strftime('%b %e') # Jun 22
42
+ else
43
+ time.strftime('%b %e, %Y') # Jun 22, 2015
44
+ end
45
+ end
46
+
26
47
  # Executing a block on each item in parallel.
27
48
  #
28
49
  # @param items [Enumerable]
@@ -1,4 +1,4 @@
1
1
  # Defines the gem version.
2
2
  module Gerrit
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gerrit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-18 00:00:00.000000000 Z
11
+ date: 2015-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: childprocess
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.6.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.10'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: tty
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,8 +80,10 @@ files:
66
80
  - lib/gerrit/client.rb
67
81
  - lib/gerrit/command/base.rb
68
82
  - lib/gerrit/command/checkout.rb
83
+ - lib/gerrit/command/console.rb
69
84
  - lib/gerrit/command/groups.rb
70
85
  - lib/gerrit/command/help.rb
86
+ - lib/gerrit/command/list.rb
71
87
  - lib/gerrit/command/members.rb
72
88
  - lib/gerrit/command/projects.rb
73
89
  - lib/gerrit/command/push.rb