gems-cli 0.1.6 → 0.1.7

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: 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