pra 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e4c0d01126812263dbcf4816f1dcd3383e99d702
4
- data.tar.gz: 99804a97e1c2dc20cc06510e52a1c4abd9fae6ad
2
+ SHA256:
3
+ metadata.gz: 628ec63b7b6715945d212db42ded43948f96cfe621bf5ed1b3bfe8f48a41c1dd
4
+ data.tar.gz: 8a3ce401aa27302455cff5aaf71736961fed6cdf9f6c36abb7bdcca99ddfc2c2
5
5
  SHA512:
6
- metadata.gz: 1b2e1d2f91e56a3954cc2a8236e0ddf481b19da67f108173bb3a52a4e545639040b6168b1901896d6368dd0223a523540a7e4232b0c0f716578133d5da55750f
7
- data.tar.gz: 80296a40d2becad79596672025d243d58b300cfbbc58419b6d3b246f00fa3c75b68b1d43c37ababc8e4d10c53be99f173bdf195f062ea3e25782932d11f556af
6
+ metadata.gz: cac38d7aaaefa5d6ed64db23c8be9faa2f31413d6d0802ad88a8fdf318c63bdae8b0621feb853eb55b45f58f0f7191601e1a6e0f119bbe83dfd52682297ecdb4
7
+ data.tar.gz: 1fccbbd25588d6252f18035a239d6394f8de7d5cda848c07483e88cdcbf48b5ae1430bed4fc231e7f40d9b9c74a3b898dd5127f9ba4a0d7b3ac4d5b23388c3ca
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .DS_Store
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.3
1
+ 3.3.3
@@ -6,7 +6,12 @@ versions as well as provide a rough history.
6
6
 
7
7
  #### Next Release
8
8
 
9
+ #### v2.1.0
10
+
11
+ * Added filtering of current list of pull requests
12
+
9
13
  #### v2.0.0
14
+
10
15
  * Added ability to refresh pull requests
11
16
  * Added pagination when there are more pull requests than can be displayed
12
17
  * Added support for github organizations
data/README.md CHANGED
@@ -23,7 +23,7 @@ purposes when pra starts.
23
23
 
24
24
  ## Configuration
25
25
 
26
- `pra` requires one configuration, `~/.pra.json`, to exist in your home
26
+ `pra` requires one configuration, `~/.pra/config.json`, to exist in your home
27
27
  directory. The following is an example config that can be used as a starter.
28
28
  *Note:* You will need to replace **your.username**, **your.password**,
29
29
  **your.stash.server**, and the **repositories** and **organizations** sections
@@ -130,7 +130,7 @@ authentication enabled.
130
130
  Simply go to your GitHub **Account Settings**, select **Applications**, click
131
131
  the **Create new token** button in the **Personal Access Token** section. Give
132
132
  it the name "Pra" and submit. This will generate your personal access token.
133
- Then simply put your personal access token in the `~/.pra.json` as your GitHub
133
+ Then simply put your personal access token in the `~/.pra/config.json` as your GitHub
134
134
  username and "x-oauth-basic" as your GitHub password.
135
135
 
136
136
  ## Usage
@@ -167,6 +167,13 @@ To force a refresh press the `r` key.
167
167
  To move between pages press `n` to go to the next page, and `p` to go to the
168
168
  previous page.
169
169
 
170
+ ### Filter
171
+
172
+ To filter the list of you pull requests you can press `/` and start typing. The
173
+ list will start filtering as you type. Once you have completed typing your
174
+ filter you can press `Return` and go back to interacting with the list of pull
175
+ requests. Refreshing by pressing `r` will clear out the filter.
176
+
170
177
  ### Quit
171
178
 
172
179
  If you decide you have had enough and want to exit `pra` press the `q` key.
data/lib/pra/config.rb CHANGED
@@ -26,7 +26,7 @@ module Pra
26
26
  end
27
27
 
28
28
  def self.config_path
29
- if File.exists?(File.join(self.users_home_directory, '.pra', 'config.json'))
29
+ if File.exist?(File.join(self.users_home_directory, '.pra', 'config.json'))
30
30
  return File.join(self.users_home_directory, '.pra', 'config.json')
31
31
  else
32
32
  return File.join(self.users_home_directory, '.pra.json')
@@ -34,7 +34,7 @@ module Pra
34
34
  end
35
35
 
36
36
  def self.log_path
37
- unless Dir.exists?(File.join(self.users_home_directory, '.pra', 'logs'))
37
+ unless Dir.exist?(File.join(self.users_home_directory, '.pra', 'logs'))
38
38
  FileUtils.mkdir_p(File.join(self.users_home_directory, '.pra', 'logs'))
39
39
  end
40
40
  return File.join(self.users_home_directory, '.pra', 'logs', '.pra.log')
@@ -8,6 +8,8 @@ require 'thread'
8
8
  module Pra
9
9
  class CursesWindowSystem < Pra::WindowSystem
10
10
  ENTER_KEY = 10
11
+ ESC_KEY = 27
12
+ BACKSPACE_KEY = 127
11
13
 
12
14
  def initialize
13
15
  @selected_pull_request_page_index = 0
@@ -19,6 +21,8 @@ module Pra
19
21
  @last_updated_access_lock = Mutex.new
20
22
  @force_update = true
21
23
  @force_update_access_lock = Mutex.new
24
+ @filter_mode = false
25
+ @filter_string = ""
22
26
  end
23
27
 
24
28
  def last_updated
@@ -72,23 +76,55 @@ module Pra
72
76
  def run_loop
73
77
  c = Curses.getch()
74
78
  while (c != 'q') do
75
- case c
76
- when 'j', Curses::Key::DOWN
77
- move_selection_down
78
- draw_current_pull_requests
79
- when 'k', Curses::Key::UP
80
- move_selection_up
81
- draw_current_pull_requests
82
- when 'r'
83
- @force_update = true
84
- when 'o', ENTER_KEY
85
- @state_lock.synchronize {
86
- Launchy.open(@current_pull_requests[selected_pull_request_loc].link)
87
- }
88
- when 'n'
89
- load_next_page
90
- when 'p'
91
- load_prev_page
79
+ if @filter_mode
80
+ case c
81
+ when ESC_KEY
82
+ @filter_mode = false
83
+ @filter_string = ""
84
+ Curses.setpos(5, 0)
85
+ Curses.clrtoeol
86
+ @current_pull_requests = @original_pull_requests.dup
87
+ @original_pull_requests = nil
88
+ draw_current_pull_requests
89
+ when ENTER_KEY
90
+ @filter_mode = false
91
+ @filter_string = ""
92
+ when "\b", BACKSPACE_KEY, Curses::KEY_BACKSPACE
93
+ @filter_string.chop!
94
+ output_string(5, 0, "Filter: #{@filter_string}")
95
+ clear_pull_requests
96
+ filter_current_pull_requests(@filter_string)
97
+ when String
98
+ @filter_string += c
99
+ output_string(5, 0, "Filter: #{@filter_string}")
100
+ clear_pull_requests
101
+ filter_current_pull_requests(@filter_string)
102
+ end
103
+ else
104
+ case c
105
+ when 'j', Curses::Key::DOWN
106
+ move_selection_down
107
+ draw_current_pull_requests
108
+ when 'k', Curses::Key::UP
109
+ move_selection_up
110
+ draw_current_pull_requests
111
+ when 'r'
112
+ @force_update = true
113
+ Curses.setpos(5, 0)
114
+ Curses.clrtoeol
115
+ when 'o', ENTER_KEY
116
+ @state_lock.synchronize {
117
+ Launchy.open(@current_pull_requests[selected_pull_request_loc].link)
118
+ }
119
+ when 'n'
120
+ load_next_page
121
+ when 'p'
122
+ load_prev_page
123
+ when '/'
124
+ @filter_mode = true
125
+ @original_pull_requests = @current_pull_requests.dup
126
+ output_string(5, 0, "Filter: #{@filter_string}")
127
+ end
92
128
  end
93
129
  c = Curses.getch()
94
130
  end
@@ -123,7 +159,7 @@ module Pra
123
159
 
124
160
  def display_instructions
125
161
  output_string(0, 0, "Pra: Helping you own pull requests")
126
- output_string(1, 0, "quit: q, up: k|#{"\u25B2".encode("UTF-8")}, down: j|#{"\u25BC".encode("UTF-8")}, open: o|#{"\u21A9".encode("UTF-8")}, refresh: r, next page: n, prev page: p")
162
+ output_string(1, 0, "quit: q, up: k|#{"\u25B2".encode("UTF-8")}, down: j|#{"\u25BC".encode("UTF-8")}, open: o|#{"\u21A9".encode("UTF-8")}, refresh: r, next page: n, prev page: p, filter: /")
127
163
  end
128
164
 
129
165
  def move_selection_up
@@ -212,6 +248,22 @@ module Pra
212
248
  Curses.refresh
213
249
  end
214
250
 
251
+ def filter_current_pull_requests(input_string)
252
+ pull_reqs = @original_pull_requests.dup.keep_if do |pr|
253
+ columns.any? do |col|
254
+ presenter = Pra::CursesPullRequestPresenter.new(pr)
255
+ pr_attr_value = presenter.send(col[:name])
256
+ if input_string == input_string.downcase
257
+ pr_attr_value.to_s.downcase.include?(input_string)
258
+ else
259
+ pr_attr_value.to_s.include?(input_string)
260
+ end
261
+ end
262
+ end
263
+
264
+ refresh_pull_requests(pull_reqs)
265
+ end
266
+
215
267
  def draw_current_pull_requests
216
268
  @state_lock.synchronize {
217
269
  output_string(3, 0, "#{@current_pull_requests.length} Pull Requests @ #{@last_updated} : Page #{@current_page} of #{pull_request_pages}")
@@ -19,8 +19,10 @@ module Pra
19
19
 
20
20
  def fetch_pull_requests
21
21
  pull_requests_json = "[]"
22
- conn = Faraday.new
23
- conn.basic_auth(@config['username'], @config['password'])
22
+ conn = Faraday.new do |faraday|
23
+ faraday.request :authorization, :basic, @config['username'], @config['password']
24
+ end
25
+ # conn.basic_auth(@config['username'], @config['password'])
24
26
  resp = conn.get do |req|
25
27
  req.url rest_api_search_issues_url
26
28
  req.params['q'] = "is:pr is:open sort:updated-desc #{repos_for_query}"
data/lib/pra/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pra
2
- VERSION = "2.0.0"
2
+ VERSION = "3.0.0"
3
3
  end
data/pra.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["cyphactor@gmail.com"]
11
11
  spec.description = %q{Command Line utility to make you aware of open pull-requests across systems at all times.}
12
12
  spec.summary = %q{CLI tool that shows open pull-requests across systems.}
13
- spec.homepage = "http://github.com/codebreakdown/pra"
13
+ spec.homepage = "http://github.com/drewdeponte/pra"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -19,13 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.10"
23
- spec.add_development_dependency "rake", "~> 10.1"
24
- spec.add_development_dependency "rspec", "~> 3.5"
25
- spec.add_development_dependency "timecop", "~> 0.8"
22
+ spec.add_development_dependency "bundler", "~> 2.5"
23
+ spec.add_development_dependency "rake", "~> 13.2"
24
+ spec.add_development_dependency "rspec", "~> 3.13"
25
+ spec.add_development_dependency "timecop", "~> 0.9"
26
26
 
27
- spec.add_dependency "faraday", "~> 0.9"
28
- spec.add_dependency "launchy", "~> 2.4"
29
- spec.add_dependency "curses", "~> 1.0"
27
+ spec.add_dependency "faraday", "~> 2.11"
28
+ spec.add_dependency "launchy", "~> 3.0"
29
+ spec.add_dependency "curses", "~> 1.4"
30
30
  spec.add_dependency "time-lord", "~> 1.0"
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pra
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew De Ponte
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-29 00:00:00.000000000 Z
11
+ date: 2024-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,98 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '2.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '2.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.1'
33
+ version: '13.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.1'
40
+ version: '13.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.5'
47
+ version: '3.13'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.5'
54
+ version: '3.13'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: timecop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.8'
61
+ version: '0.9'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.8'
68
+ version: '0.9'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: faraday
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.9'
75
+ version: '2.11'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.9'
82
+ version: '2.11'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: launchy
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '2.4'
89
+ version: '3.0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '2.4'
96
+ version: '3.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: curses
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.0'
103
+ version: '1.4'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.0'
110
+ version: '1.4'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: time-lord
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -133,8 +133,8 @@ extra_rdoc_files: []
133
133
  files:
134
134
  - ".gitignore"
135
135
  - ".ruby-version"
136
+ - CHANGELOG.md
136
137
  - CODE_OF_CONDUCT.md
137
- - ChangeLog.md
138
138
  - Gemfile
139
139
  - LICENSE.txt
140
140
  - README.md
@@ -159,11 +159,11 @@ files:
159
159
  - lib/pra/window_system.rb
160
160
  - lib/pra/window_system_factory.rb
161
161
  - pra.gemspec
162
- homepage: http://github.com/codebreakdown/pra
162
+ homepage: http://github.com/drewdeponte/pra
163
163
  licenses:
164
164
  - MIT
165
165
  metadata: {}
166
- post_install_message:
166
+ post_install_message:
167
167
  rdoc_options: []
168
168
  require_paths:
169
169
  - lib
@@ -178,9 +178,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
178
  - !ruby/object:Gem::Version
179
179
  version: '0'
180
180
  requirements: []
181
- rubyforge_project:
182
- rubygems_version: 2.4.5.1
183
- signing_key:
181
+ rubygems_version: 3.5.14
182
+ signing_key:
184
183
  specification_version: 4
185
184
  summary: CLI tool that shows open pull-requests across systems.
186
185
  test_files: []