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 +4 -4
- data/CHANGELOG +5 -0
- data/Gemfile.lock +25 -6
- data/README.md +4 -0
- data/bin/gems +38 -28
- data/gems-cli.gemspec +6 -5
- data/lib/gems-cli/paginator.rb +55 -0
- data/lib/gems-cli/version.rb +1 -1
- data/lib/gems-cli.rb +3 -2
- metadata +38 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67c9fbeba32756c847c237d4a824fb03cd07da79
|
4
|
+
data.tar.gz: c5e789f18e53e1a89e2fe47c1de778510409d32c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 726b5c48655b29b13ce58f2662debf0c4d8b719c0a841021dfd73cdefb91d6dbafe50e77095d7c7419c63aadadd1d620c20f4f248d63fa4dd3b903dd684d3ac8
|
7
|
+
data.tar.gz: fcb1499d763cf04cd73e3ef2e29bcdcb94149668300c2028789a783ac6b0b697898c57b70e77d94dc1345f1fcaedfebeab215ef9225093d422ac17ef79b180a6
|
data/CHANGELOG
ADDED
data/Gemfile.lock
CHANGED
@@ -1,30 +1,49 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gems-cli (0.0
|
4
|
+
gems-cli (0.1.0)
|
5
5
|
clipboard (= 1.0.5)
|
6
6
|
gems (= 0.8.3)
|
7
|
-
gli (= 2.12.
|
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.
|
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.
|
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
|
-
|
30
|
-
|
47
|
+
pry-byebug (~> 2.0.0)
|
48
|
+
rake (~> 10.3.2)
|
49
|
+
rdoc (~> 4.1.2)
|
data/README.md
CHANGED
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 '
|
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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
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 "
|
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', '~>
|
22
|
-
s.add_development_dependency('rdoc', '~>
|
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.
|
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
|
data/lib/gems-cli/version.rb
CHANGED
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
|
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-
|
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:
|
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:
|
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:
|
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:
|
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.
|
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.
|
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
|