gems-cli 0.0.1 → 0.1.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: 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