gems-cli 0.1.6 → 0.1.7

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: 3116e9b265fd3c8fa8c24823789cd119aeee6bfa
4
- data.tar.gz: 1ae99d2c29f8bf3da3e5b95831c8466fb3f7d7d8
3
+ metadata.gz: 3867f8adb6fcf32c7dbea17cfdec4b593d065bca
4
+ data.tar.gz: 14f52ea29a59f9880644902d25e03f26675fbb82
5
5
  SHA512:
6
- metadata.gz: 27da575cf429d42afd32e6aeaedecf5d3af2501b135fbfe8850979f7a66ead2ffe5f43eebbf802457bd831cbcc5e8bd912b2675b058ccc28367eb17db49806db
7
- data.tar.gz: feed18673e310bb31b91afb0576d151c4345da24567b3b4bcbb8a737ad32b4e10dd83f8f21efa2f9f369a2807fac50ceba37d88d517c796e64dbed635beb5199
6
+ metadata.gz: 4d472d5e50c42663190f2ed0b9225a0ec24388a395bd41838129115af2448ef8560bb1dce2b9be10e521ddc4a732eb76b221ecbed42650a4f75739d3cabe2bda
7
+ data.tar.gz: 78b9870621cc6c1b3f5cc9a8eae6a960d64bcc784fc7a61a2015c13d6c9bdc4c97db90b64a8c9e44ecdaacf14d2a8806bbc597dd890e8d32e5b3b56773965978
data/bin/gems CHANGED
@@ -12,54 +12,96 @@ version GemsCli::VERSION
12
12
  arguments :strict
13
13
  subcommand_option_handling :normal
14
14
 
15
+ def display_gem data, index, prefix=''
16
+ puts "#{prefix}#{index}: gem '#{data['name']}', '~> #{data['version']}'"
17
+ end
18
+
15
19
  desc 'Search Rubygems.org for a gem'
16
20
  arg_name 'Name of a gem'
17
21
  command [:search, :s] do |c|
18
22
  c.desc 'Number of results returned per page'
19
- c.default_value 10
23
+ c.default_value 7
20
24
  c.flag :n
21
25
 
22
- c.action do |global_options,options,args|
23
- if args[0].nil? || args[0].empty?
26
+ c.action do |global_options, options, args|
27
+ query = args[0]
28
+
29
+ if query.nil? || query.empty?
24
30
  raise ArgumentError, 'Please supply a search term.'
25
31
  end
26
32
 
27
- puts "Running your search for #{args[0]}...".color(:green)
33
+ puts "Running your search for #{query}...".color(:green)
28
34
 
29
- search_results = Gems.search args[0]
35
+ search_results = Gems.search(query)
30
36
  limit = options[:n].to_i
31
37
  paged_results = Paginator.new(ary: search_results, per_page: limit)
32
38
 
33
39
  paged_results.first_page.each_with_index do |e, i|
34
- puts "#{i}: gem '#{e['name']}', '~> #{e['version']}'"
40
+ display_gem e, i
35
41
  end
36
42
 
37
43
  @answer = ''
44
+ versions = {}
45
+ letters = ('a'..'c').to_a
38
46
  until @answer == 'q'
39
47
  puts "Page: #{paged_results.page}/#{paged_results.pages}\n".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
48
+ can_get_more_versions = versions.size < 1
49
+ choices = "Select from 0..#{paged_results.per_page - 1}, (n)ext, (p)revious, "
50
+ choices += "(m)ore versions, " if can_get_more_versions
51
+ choices += "or (q)uit #=> "
52
+ @answer = ask(choices.color(:green), String) do |q|
53
+ q.case = :downcase
54
+ if can_get_more_versions
55
+ q.validate = /\A\d+\w?|q|n|m|p\Z/
56
+ else
57
+ q.validate = /\A\d+\w?|q|n|p\Z/
58
+ end
59
+ end
45
60
 
46
61
  case @answer
47
- when /\d+/
62
+ when /\d+\w?/
48
63
  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)
64
+ chosen_index, chosen_version = @answer.scan(/\d+|\D+/)
65
+ chosen_index = chosen_index.to_i
66
+ if chosen_gem=gem_list[chosen_index]
67
+ gem_name = chosen_gem['name']
68
+ gem_version = chosen_gem['version']
69
+ if chosen_version
70
+ gem_version_index = letters.index(chosen_version)
71
+ unless gem_version_index
72
+ puts 'Invalid gem and version choice'
73
+ next
74
+ end
75
+ selected_version = versions[gem_name][gem_version_index]
76
+ gem_version = selected_version['number']
77
+ end
78
+ Clipboard.copy "gem '#{gem_name}', '~> #{gem_version}'"
79
+ puts "Copied #{gem_name} #{gem_version} to your clipboard!".color(:green)
52
80
  break
53
81
  else
54
- puts "Your choice, #{@answer}, is not in the list 0..#{gem_list.size - 1}"
82
+ puts "Your choice, #@answer, is not in the list 0..#{gem_list.size - 1}"
83
+ end
84
+ when 'm'
85
+ paged_results.current_page.each_with_index do |e, i|
86
+ display_gem e, i
87
+ gem_name = e['name']
88
+ versions[gem_name] = Gems.versions(gem_name).sort {|a, b|
89
+ b['built_at'] <=> a['built_at']
90
+ }.reject {|v| v['number'] == e['version'] }
91
+ versions[gem_name][0...letters.length].each_with_index do |v, j|
92
+ version_data = {'name' => gem_name, 'version' => v['number']}
93
+ display_gem version_data, "#{i}#{letters[j]}", ' '
94
+ end
55
95
  end
56
96
  when 'n'
97
+ versions = {}
57
98
  paged_results.next_page.each_with_index do |e, i|
58
- puts "#{i}: gem '#{e['name']}', '~> #{e['version']}'"
99
+ display_gem e, i
59
100
  end
60
101
  when 'p'
102
+ versions = {}
61
103
  paged_results.previous_page.each_with_index do |e, i|
62
- puts "#{i}: gem '#{e['name']}', '~> #{e['version']}'"
104
+ display_gem e, i
63
105
  end
64
106
  when 'q'
65
107
  puts 'Later.'
@@ -70,7 +112,7 @@ command [:search, :s] do |c|
70
112
  end
71
113
  end
72
114
 
73
- pre do |global,command,options,args|
115
+ pre do |global, command, options, args|
74
116
  # Pre logic here
75
117
  # Return true to proceed; false to abort and not call the
76
118
  # chosen command
@@ -79,7 +121,7 @@ pre do |global,command,options,args|
79
121
  true
80
122
  end
81
123
 
82
- post do |global,command,options,args|
124
+ post do |global, command, options, args|
83
125
  # Post logic here
84
126
  # Use skips_post before a command to skip this
85
127
  # block on that command only
data/gems-cli.gemspec CHANGED
@@ -29,8 +29,8 @@ spec = Gem::Specification.new do |s|
29
29
  s.add_development_dependency 'simplecov', '~> 0.9.1'
30
30
  s.add_development_dependency 'rubocop', '~> 0.28.0'
31
31
 
32
- s.add_runtime_dependency 'gli','2.12.2'
33
- s.add_runtime_dependency 'gems','0.8.3'
32
+ s.add_runtime_dependency 'gli', '2.12.2'
33
+ s.add_runtime_dependency 'gems', '0.8.3'
34
34
  s.add_runtime_dependency 'highline', '1.6.21'
35
35
  s.add_runtime_dependency 'clipboard', '1.0.5'
36
36
  s.add_runtime_dependency 'rainbow', '2.0.0'
data/lib/gems-cli.rb CHANGED
@@ -2,6 +2,5 @@ require 'gems'
2
2
  require 'highline/import'
3
3
  require 'clipboard'
4
4
  require 'rainbow/ext/string'
5
- require 'will_paginate/array'
6
5
  require 'gems-cli/version.rb'
7
6
  require 'gems-cli/paginator.rb'
@@ -1,3 +1,3 @@
1
1
  module GemsCli
2
- VERSION = '0.1.6'
2
+ VERSION = '0.1.7'
3
3
  end
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.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chase Southard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-16 00:00:00.000000000 Z
11
+ date: 2015-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake