gems-cli 0.0.1 → 0.1.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
2
  SHA1:
3
- metadata.gz: 757040e3c13d5e67a926edffdc50dab7c98d46f8
4
- data.tar.gz: f0424fdbb72efd5e8b2ecf83f59157a3231b16e7
3
+ metadata.gz: 67c9fbeba32756c847c237d4a824fb03cd07da79
4
+ data.tar.gz: c5e789f18e53e1a89e2fe47c1de778510409d32c
5
5
  SHA512:
6
- metadata.gz: 4579840628d4f1fc7805f5fb63866f4e8920d0386269d1c8b8c7ad798b0d0b3edf135ea823ee240a248f22adf31195f92e193789f451d31acb4b4ffe86e85ca3
7
- data.tar.gz: ceafb36ac2df6cea2ced6688477b6029c62d33ec68e507ccdb94abd81857b2041ca635432ede4958f7ba9dadab9cdf1225783f49319ff20c766b9dc18eb2aa6f
6
+ metadata.gz: 726b5c48655b29b13ce58f2662debf0c4d8b719c0a841021dfd73cdefb91d6dbafe50e77095d7c7419c63aadadd1d620c20f4f248d63fa4dd3b903dd684d3ac8
7
+ data.tar.gz: fcb1499d763cf04cd73e3ef2e29bcdcb94149668300c2028789a783ac6b0b697898c57b70e77d94dc1345f1fcaedfebeab215ef9225093d422ac17ef79b180a6
data/CHANGELOG ADDED
@@ -0,0 +1,5 @@
1
+ CHANGELOG
2
+
3
+ Version 0.0.1: basic search and send selection to clipboard
4
+
5
+ Version 0.1.0: adds pagination to search results
data/Gemfile.lock CHANGED
@@ -1,30 +1,49 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gems-cli (0.0.1)
4
+ gems-cli (0.1.0)
5
5
  clipboard (= 1.0.5)
6
6
  gems (= 0.8.3)
7
- gli (= 2.12.0)
7
+ gli (= 2.12.2)
8
8
  highline (= 1.6.21)
9
9
  rainbow (= 2.0.0)
10
+ will_paginate (= 3.0.7)
10
11
 
11
12
  GEM
12
13
  remote: https://rubygems.org/
13
14
  specs:
15
+ byebug (3.5.1)
16
+ columnize (~> 0.8)
17
+ debugger-linecache (~> 1.2)
18
+ slop (~> 3.6)
14
19
  clipboard (1.0.5)
20
+ coderay (1.1.0)
21
+ columnize (0.8.9)
22
+ debugger-linecache (1.2.0)
15
23
  gems (0.8.3)
16
- gli (2.12.0)
24
+ gli (2.12.2)
17
25
  highline (1.6.21)
18
26
  json (1.8.1)
27
+ method_source (0.8.2)
28
+ pry (0.10.1)
29
+ coderay (~> 1.1.0)
30
+ method_source (~> 0.8.1)
31
+ slop (~> 3.4)
32
+ pry-byebug (2.0.0)
33
+ byebug (~> 3.4)
34
+ pry (~> 0.10)
19
35
  rainbow (2.0.0)
20
36
  rake (10.3.2)
21
- rdoc (4.1.1)
37
+ rdoc (4.1.2)
22
38
  json (~> 1.4)
39
+ slop (3.6.0)
40
+ will_paginate (3.0.7)
23
41
 
24
42
  PLATFORMS
25
43
  ruby
26
44
 
27
45
  DEPENDENCIES
28
46
  gems-cli!
29
- rake
30
- rdoc
47
+ pry-byebug (~> 2.0.0)
48
+ rake (~> 10.3.2)
49
+ rdoc (~> 4.1.2)
data/README.md CHANGED
@@ -22,3 +22,7 @@ select from 0..7, or q(uit)
22
22
  ```
23
23
 
24
24
  `Copied to clipboard!`
25
+
26
+ ### TODO
27
+
28
+ - needs more tests
data/bin/gems CHANGED
@@ -4,57 +4,67 @@ require 'gems-cli'
4
4
 
5
5
  include GLI::App
6
6
 
7
- program_desc 'Interact with Rubygems.org from the command line'
7
+ program_desc 'Interact with Rubygems.org from the command line. Yay!'
8
8
 
9
9
  version GemsCli::VERSION
10
10
 
11
11
  # Use argument validation
12
12
  arguments :strict
13
+ subcommand_option_handling :normal
13
14
 
14
15
  desc 'Search Rubygems.org for a gem'
15
16
  arg_name 'Name of a gem'
16
17
  command [:search, :s] do |c|
17
- c.desc 'Feeling lucky, punk?'
18
- c.switch [:l, :lucky]
19
-
20
- c.desc 'Number of results returned'
18
+ c.desc 'Number of results returned per page'
21
19
  c.default_value 10
22
20
  c.flag :n
23
21
 
24
22
  c.action do |global_options,options,args|
25
-
26
- # raise "that command made no sense"
27
23
  if args[0].nil? || args[0].empty?
28
24
  raise ArgumentError, 'Please supply a search term.'
29
25
  end
30
26
 
31
- result_limit = options[:l] ? 0 : options[:n].to_i
32
-
33
27
  puts "Running your search for #{args[0]}...".color(:green)
28
+
34
29
  search_results = Gems.search args[0]
35
- iteration = 0
36
- search_results[0..result_limit].each do |result|
37
- puts "#{iteration}: gem '#{result['name']}', '~> #{result['version']}'"
38
- iteration += 1
30
+ limit = options[:n].to_i
31
+ paged_results = Paginator.new(ary: search_results, per_page: limit)
32
+
33
+ paged_results.first_page.each_with_index do |e, i|
34
+ puts "#{i}: gem '#{e['name']}', '~> #{e['version']}'"
39
35
  end
40
- choices = "select from 0..#{search_results.size - 1} or (q)uit \n".color(:green)
41
- answer = ask(choices, String) do |q|
42
- q.case = :downcase
43
- q.validate = /\A\d|q\Z/
44
- end
45
36
 
46
- case answer
47
- when /\d/
48
- if search_results[answer.to_i]
49
- Clipboard.copy "gem '#{search_results[answer.to_i]['name']}', '~> #{search_results[answer.to_i]['version']}'"
50
- puts "Copied to clipboard!".color(:green)
37
+ @answer = ''
38
+ until @answer == 'q'
39
+ puts "\nPage: #{paged_results.page}/#{paged_results.pages}".color(:green)
40
+ choices = "Select from 0..#{paged_results.per_page - 1}, (n)ext, (p)revious, or (q)uit #=> ".color(:green)
41
+ @answer = ask(choices, String) do |q|
42
+ q.case = :downcase
43
+ q.validate = /\A\d+|q|n|p\Z/
44
+ end
45
+
46
+ case @answer
47
+ when /\d+/
48
+ gem_list = paged_results.current_page
49
+ if gem_list[@answer.to_i]
50
+ Clipboard.copy "gem '#{gem_list[@answer.to_i]['name']}', '~> #{gem_list[@answer.to_i]['version']}'"
51
+ puts "Copied #{gem_list[@answer.to_i]['name']} to your clipboard!".color(:green)
52
+ else
53
+ puts "Your choice, #{@answer}, is not in the list 0..#{gem_list.size - 1}"
54
+ end
55
+ when 'n'
56
+ paged_results.next_page.each_with_index do |e, i|
57
+ puts "#{i}: gem '#{e['name']}', '~> #{e['version']}'"
58
+ end
59
+ when 'p'
60
+ paged_results.previous_page.each_with_index do |e, i|
61
+ puts "#{i}: gem '#{e['name']}', '~> #{e['version']}'"
62
+ end
63
+ when 'q'
64
+ puts 'Later.'
51
65
  else
52
- puts "Your choice, #{answer}, is not in the list 0..#{search_results.size - 1}"
66
+ puts "Sorry. Unknown option: #{@answer.chomp}"
53
67
  end
54
- when 'q'
55
- puts 'Later.'
56
- else
57
- puts "Sorry. Unknown option: #{answer.chomp}"
58
68
  end
59
69
  end
60
70
  end
data/gems-cli.gemspec CHANGED
@@ -10,20 +10,21 @@ spec = Gem::Specification.new do |s|
10
10
  s.summary = 'Search rubygems.org from the command line. Copy formatted gem details for your Gemfile.'
11
11
  s.description = 'Search rubygems.org from the command line. Then you can copy formatted gem details for your Gemfile.'
12
12
  s.license = 'MIT'
13
- s.files = `git ls-files`.split("
14
- ")
13
+ s.files = `git ls-files`.split(" ")
15
14
  s.require_paths << 'lib'
16
15
  s.has_rdoc = true
17
16
  s.extra_rdoc_files = ['README.rdoc','gems-cli.rdoc']
18
17
  s.rdoc_options << '--title' << 'gems-cli' << '--main' << 'README.rdoc' << '-ri'
19
18
  s.bindir = 'bin'
20
19
  s.executables << 'gems'
21
- s.add_development_dependency('rake', '~> 0')
22
- s.add_development_dependency('rdoc', '~> 0')
20
+ s.add_development_dependency('rake', '~> 10.3.2')
21
+ s.add_development_dependency('rdoc', '~> 4.1.2')
22
+ s.add_development_dependency('pry-byebug', '~> 2.0.0')
23
23
 
24
- s.add_runtime_dependency('gli','2.12.0')
24
+ s.add_runtime_dependency('gli','2.12.2')
25
25
  s.add_runtime_dependency('gems','0.8.3')
26
26
  s.add_runtime_dependency('highline', '1.6.21')
27
27
  s.add_runtime_dependency('clipboard', '1.0.5')
28
28
  s.add_runtime_dependency('rainbow', '2.0.0')
29
+ s.add_runtime_dependency('will_paginate', '3.0.7')
29
30
  end
@@ -0,0 +1,55 @@
1
+ require 'will_paginate/array'
2
+
3
+ class Paginator
4
+ attr_reader :pages, :total_entries
5
+ attr_accessor :ary, :per_page, :page, :paged_results
6
+
7
+ def initialize(args={})
8
+ @ary = args[:ary] || Array.new
9
+ @page = 1
10
+ @per_page = args[:per_page] || 10
11
+ @paged_results = @ary.paginate(per_page: @per_page)
12
+ @size = @paged_results.total_entries
13
+ @pages = @paged_results.total_pages
14
+ end
15
+
16
+ def [] *args
17
+ @ary[*args]
18
+ end
19
+
20
+ def calculate_pagination
21
+ @paged_results = @ary.paginate(per_page: @per_page)
22
+ @size = @paged_results.total_entries
23
+ @pages = @paged_results.total_pages
24
+ end
25
+
26
+ def last_page?
27
+ @page.eql? @pages
28
+ end
29
+
30
+ def first_page?
31
+ @page.eql? 1
32
+ end
33
+
34
+ def first_page
35
+ @ary.paginate(per_page: @per_page, page: 1)
36
+ end
37
+
38
+ def last_page
39
+ @ary.paginate(per_page: @per_page, page: @pages)
40
+ end
41
+
42
+ def current_page
43
+ @ary.paginate(per_page: @per_page, page: @page)
44
+ end
45
+
46
+ def next_page
47
+ @page += 1 unless last_page?
48
+ @ary.paginate(per_page: @per_page, page: @page)
49
+ end
50
+
51
+ def previous_page
52
+ @page -= 1 unless first_page?
53
+ @ary.paginate(per_page: @per_page, page: @page)
54
+ end
55
+ end
@@ -1,3 +1,3 @@
1
1
  module GemsCli
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1.0'
3
3
  end
data/lib/gems-cli.rb CHANGED
@@ -1,8 +1,9 @@
1
- require 'gems-cli/version.rb'
2
1
  require 'gems'
3
2
  require 'highline/import'
4
3
  require 'clipboard'
5
4
  require 'rainbow/ext/string'
6
-
5
+ require 'will_paginate/array'
6
+ require 'gems-cli/version.rb'
7
+ require 'gems-cli/paginator.rb'
7
8
  # Add requires for other files you add to your project here, so
8
9
  # you just need to require this one file in your bin file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gems-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chase Southard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-18 00:00:00.000000000 Z
11
+ date: 2014-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,42 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 10.3.2
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: '0'
26
+ version: 10.3.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 4.1.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: '0'
40
+ version: 4.1.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.0.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: gli
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - '='
46
60
  - !ruby/object:Gem::Version
47
- version: 2.12.0
61
+ version: 2.12.2
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - '='
53
67
  - !ruby/object:Gem::Version
54
- version: 2.12.0
68
+ version: 2.12.2
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: gems
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - '='
109
123
  - !ruby/object:Gem::Version
110
124
  version: 2.0.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: will_paginate
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 3.0.7
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 3.0.7
111
139
  description: Search rubygems.org from the command line. Then you can copy formatted
112
140
  gem details for your Gemfile.
113
141
  email: chase.southard@gmail.com
@@ -119,6 +147,7 @@ extra_rdoc_files:
119
147
  - gems-cli.rdoc
120
148
  files:
121
149
  - ".gitignore"
150
+ - CHANGELOG
122
151
  - Gemfile
123
152
  - Gemfile.lock
124
153
  - LICENSE
@@ -130,6 +159,7 @@ files:
130
159
  - gems-cli.gemspec
131
160
  - gems-cli.rdoc
132
161
  - lib/gems-cli.rb
162
+ - lib/gems-cli/paginator.rb
133
163
  - lib/gems-cli/version.rb
134
164
  - test/default_test.rb
135
165
  - test/test_helper.rb