ana 0.9.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 +7 -0
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +139 -0
- data/Rakefile +8 -0
- data/ana.gemspec +28 -0
- data/bin/ana +4 -0
- data/lib/ana.rb +7 -0
- data/lib/ana/command.rb +214 -0
- data/lib/ana/constants.rb +24 -0
- data/lib/ana/core_ext.rb +15 -0
- data/lib/ana/version.rb +10 -0
- data/test/ana/ana_test.rb +5 -0
- data/test/test_helper.rb +5 -0
- metadata +117 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cd8798e8dc1b5f9cafcd02c3c90d65271d432460
|
4
|
+
data.tar.gz: a9f1e9fd4335b522314822e09b6c3f518085ad82
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 359d326b8bf0b9651cb5b28dafbeb5632e136243196b2bcf11fe9f69448d2d29a385f2718a671b4475cae1fe0e30379eb2252dd941941d8d5e700601be3ab3c8
|
7
|
+
data.tar.gz: 34d4741eadf16b74748feeeb2b1ee989fee1f0a643d4e92bb40e0443dea28a0eee9c2968e5795ff8687e1630ac8e1c34f8f36db9d88fb00aa1398b6115660cd3
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Juanito Fatas
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
# Ana
|
2
|
+
|
3
|
+
Ana knows a lot of things about RubyGems.
|
4
|
+
|
5
|
+
Yet another Ruby wrapper for the [RubyGems.org][1] API.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
$ gem install ana
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
Type `ana` to get some help:
|
14
|
+
|
15
|
+
$ ana
|
16
|
+
|
17
|
+
Type `ana help COMMANDS` to get help for specific command:
|
18
|
+
|
19
|
+
$ ana help version
|
20
|
+
|
21
|
+
### Available commands of Ana
|
22
|
+
|
23
|
+
#### List infomation of Given Gem
|
24
|
+
|
25
|
+
```
|
26
|
+
$ ana info rails
|
27
|
+
Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.
|
28
|
+
Has been downloaded for 29911559 times!
|
29
|
+
The Latest version is 4.0.1.
|
30
|
+
Respectful Author(s): David Heinemeier Hansson.
|
31
|
+
LICENSE under MIT
|
32
|
+
```
|
33
|
+
|
34
|
+
#### List Runtime or Development Dependencies of Given Gem
|
35
|
+
|
36
|
+
```bash
|
37
|
+
$ ana deps rails runtime
|
38
|
+
actionmailer = 4.0.1
|
39
|
+
actionpack = 4.0.1
|
40
|
+
activerecord = 4.0.1
|
41
|
+
activesupport = 4.0.1
|
42
|
+
bundler < 2.0, >= 1.3.0
|
43
|
+
railties = 4.0.1
|
44
|
+
sprockets-rails ~> 2.0.0
|
45
|
+
```
|
46
|
+
|
47
|
+
#### Get latest version of a Given Gem
|
48
|
+
|
49
|
+
```bash
|
50
|
+
$ ana lv rails
|
51
|
+
Latest version is 4.0.1.
|
52
|
+
```
|
53
|
+
|
54
|
+
|
55
|
+
#### Get latest version of a Given Gem
|
56
|
+
|
57
|
+
```bash
|
58
|
+
ana vs rails
|
59
|
+
Last 10 versions of rails are...
|
60
|
+
2013-11-01 : 4.0.1
|
61
|
+
2013-10-30 : 4.0.1.rc4
|
62
|
+
2013-10-23 : 4.0.1.rc3
|
63
|
+
2013-10-21 : 4.0.1.rc2
|
64
|
+
2013-10-17 : 4.0.1.rc1
|
65
|
+
2013-10-16 : 3.2.15
|
66
|
+
2013-10-11 : 3.2.15.rc3
|
67
|
+
2013-10-04 : 3.2.15.rc2
|
68
|
+
2013-10-03 : 3.2.15.rc1
|
69
|
+
2013-07-22 : 3.2.14
|
70
|
+
```
|
71
|
+
|
72
|
+
#### Find specific version of a given gem
|
73
|
+
|
74
|
+
```bash
|
75
|
+
$ ana fv rails 4.1
|
76
|
+
This version could not be found.
|
77
|
+
```
|
78
|
+
|
79
|
+
#### (Exact) Search of a given gem name
|
80
|
+
|
81
|
+
```bash
|
82
|
+
$ ana s rails
|
83
|
+
Latest version is 4.0.1.
|
84
|
+
```
|
85
|
+
|
86
|
+
#### (Fuzzy) Search of a given gem name
|
87
|
+
|
88
|
+
```bash
|
89
|
+
$ ana fs rails
|
90
|
+
|
91
|
+
*** REMOTE GEMS ***
|
92
|
+
...
|
93
|
+
zurui-sass-rails (0.0.4)
|
94
|
+
```
|
95
|
+
|
96
|
+
Via `gem search -r`.
|
97
|
+
|
98
|
+
#### Open a Gem's URI page
|
99
|
+
|
100
|
+
Available URI: Project Page, Homepage, Wiki, Documentation, Mailing List,
|
101
|
+
Source Code, Bug Tracker.
|
102
|
+
|
103
|
+
```bash
|
104
|
+
$ ana o rails doc
|
105
|
+
will open the documentation of rails in your default browser.
|
106
|
+
```
|
107
|
+
|
108
|
+
via [launchy][2] gem.
|
109
|
+
|
110
|
+
#### Download a Gem
|
111
|
+
|
112
|
+
Available URI: Project Page, Homepage, Wiki, Documentation, Mailing List,
|
113
|
+
Source Code, Bug Tracker.
|
114
|
+
|
115
|
+
```bash
|
116
|
+
$ ana dl rails
|
117
|
+
will open the browser and download rails gem.
|
118
|
+
```
|
119
|
+
|
120
|
+
## Requirements
|
121
|
+
|
122
|
+
Ruby >= 2.0
|
123
|
+
|
124
|
+
## TODO
|
125
|
+
|
126
|
+
* Add tests.
|
127
|
+
* Download via wget/curl.
|
128
|
+
* Download gem and its runtime dependencies in a zip/tar or in batch.
|
129
|
+
|
130
|
+
## Contributing
|
131
|
+
|
132
|
+
1. Fork it ( http://github.com/<my-github-username>/ana/fork )
|
133
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
134
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
135
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
136
|
+
5. Create new Pull Request
|
137
|
+
|
138
|
+
[1]: https://rubygems.org/
|
139
|
+
[2]: https://github.com/copiousfreetime/launchy
|
data/Rakefile
ADDED
data/ana.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ana/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'ana'
|
8
|
+
spec.version = Ana::VERSION::STRING
|
9
|
+
spec.authors = ['Juanito Fatas']
|
10
|
+
spec.email = ['katehuang0320@gmail.com']
|
11
|
+
spec.summary = %q{Ana knows a lot about RubyGems.}
|
12
|
+
spec.description = %q{Yet another RubyGems.org API wrapper in Ruby.}
|
13
|
+
spec.homepage = 'https://github.com/JuanitoFatas/Ana'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.required_ruby_version = '>= 2.0.0'
|
22
|
+
|
23
|
+
spec.add_dependency 'thor', '~> 0.18.1'
|
24
|
+
spec.add_dependency 'launchy', '~> 2.4.2'
|
25
|
+
|
26
|
+
spec.add_development_dependency 'bundler', '>= 1.4'
|
27
|
+
spec.add_development_dependency 'rake', '>= 10.1.0'
|
28
|
+
end
|
data/bin/ana
ADDED
data/lib/ana.rb
ADDED
data/lib/ana/command.rb
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'net/http'
|
3
|
+
require 'json'
|
4
|
+
require 'launchy'
|
5
|
+
|
6
|
+
module Ana
|
7
|
+
class Command < Thor
|
8
|
+
include Ana::Scalars
|
9
|
+
include Thor::Actions
|
10
|
+
|
11
|
+
# Command Mapping
|
12
|
+
map '-v' => :version
|
13
|
+
map '--version' => :version
|
14
|
+
# Meta
|
15
|
+
map 'info' => :gem_infos
|
16
|
+
map 'deps' => :gem_dependencies
|
17
|
+
# Version
|
18
|
+
map 'lv' => :latest_version
|
19
|
+
map 'vs' => :versions
|
20
|
+
map 'fv' => :find_version
|
21
|
+
# Search
|
22
|
+
map 's' => :search
|
23
|
+
map 'fs' => :fuzzy_search
|
24
|
+
# Open URI
|
25
|
+
map 'o' => :open
|
26
|
+
map 'dl' => :download
|
27
|
+
|
28
|
+
# Create an empty diretory at ~/.gemjsons
|
29
|
+
# All later queried JSON files will be saved here.
|
30
|
+
desc 'init', 'Ana needs to setup some stuff in your home directory.'
|
31
|
+
def init
|
32
|
+
empty_directory full_path('~/.gemjsons')
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'version (-v, --version)', 'Display version of Ana.'
|
36
|
+
def version
|
37
|
+
say "#{Ana::VERSION::STRING}"
|
38
|
+
end
|
39
|
+
|
40
|
+
# Print Given Gem's Short description, download counts, latest version,
|
41
|
+
# author(s), and license information.
|
42
|
+
desc 'gem_infos (info)', 'Print Gem Informations'
|
43
|
+
def gem_infos(gem)
|
44
|
+
gem_hash = check_if_gem_exist_and_get_json!(gem, type: 'gems')
|
45
|
+
say gem_hash['info']
|
46
|
+
say "Has been downloaded for #{colorize(gem_hash['downloads'], RED)} times!"
|
47
|
+
say "The Latest version is #{colorize(gem_hash['version'], BLUE)}."
|
48
|
+
say "Respectful Author(s): #{colorize(gem_hash['authors'], YELLOW)}."
|
49
|
+
if gem_hash['licenses'][0].nil?
|
50
|
+
say "NO LICENSE :P"
|
51
|
+
else
|
52
|
+
say "LICENSE under #{colorize(gem_hash['licenses'][0], MAGENTA)}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# List dependencies of a given Gem.
|
57
|
+
# You could pass 'runtime' / 'development' to see different dependencies.
|
58
|
+
# type: 'runtime', 'development'
|
59
|
+
desc 'gem_dependencies (deps)', 'Print Gem Dependencies (runtime / development).'
|
60
|
+
def gem_dependencies(gem, type='runtime')
|
61
|
+
gem_hash = check_if_gem_exist_and_get_json!(gem, type: 'gems')
|
62
|
+
gem_hash['dependencies'][type].each do |arr|
|
63
|
+
puts "#{arr['name'].ljust(20)} #{arr['requirements']}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Return latest version of given gem.
|
68
|
+
desc 'latest_version (v)', 'latest version of a gem.'
|
69
|
+
def latest_version(gem)
|
70
|
+
gem_hash = check_if_gem_exist_and_get_json!(gem, type: 'gems')
|
71
|
+
say("Latest version is #{gem_hash['version']}.", :blue)
|
72
|
+
end
|
73
|
+
|
74
|
+
# List versions of a given Gem, default will only list last 10 versions.
|
75
|
+
# You can pass all or a fairly large number to display all versions.
|
76
|
+
desc 'versions (vs)', 'List versions of a gem.'
|
77
|
+
def versions(gem, count=10)
|
78
|
+
gem_hash = check_if_gem_exist_and_get_json!(gem, type: 'versions')
|
79
|
+
if count == 'all' || count.to_i > gem_hash.count
|
80
|
+
count = gem_hash.count
|
81
|
+
end
|
82
|
+
say("Last #{count} versions of #{gem} are...")
|
83
|
+
[*0..count-1].each do |n|
|
84
|
+
say("#{gem_hash[n]['built_at'][0..9]} : #{gem_hash[n]['number']}")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Find if a given version of Gem exists.
|
89
|
+
desc 'version exist?', 'Find if a given version exists.'
|
90
|
+
def find_version(gem, ver)
|
91
|
+
gem_hash = check_if_gem_exist_and_get_json!(gem, type: 'versions')
|
92
|
+
versions = gem_hash.collect { |x| x['number'] }
|
93
|
+
if versions.include? ver
|
94
|
+
gem_infos gem
|
95
|
+
else
|
96
|
+
print_gem_version_not_found!
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Search if a given Gem exists? If exists, return the latest version of it.
|
101
|
+
desc 'search (s)', '(Exact) Search for a gem.'
|
102
|
+
def search(gem)
|
103
|
+
latest_version(gem) if gem_exist?(gem)
|
104
|
+
end
|
105
|
+
|
106
|
+
# Invoke system `gem search -r`
|
107
|
+
desc 'fuzzy_search (fs)', 'Fuzzy search for a Gem'
|
108
|
+
def fuzzy_search(gem)
|
109
|
+
system("gem search -r #{Shellwords.escape gem}")
|
110
|
+
end
|
111
|
+
|
112
|
+
# Open the URIs of a given Gem.
|
113
|
+
# Available URI types could be found in Ana::Scalars::URI_TYPE.
|
114
|
+
desc 'open (o)', 'Open gem doc directly via open command.'
|
115
|
+
def open(gem, open_type='doc')
|
116
|
+
gem_hash = check_if_gem_exist_and_get_json!(gem, type: 'gems')
|
117
|
+
url = if URI_TYPE.keys.include? open_type
|
118
|
+
skip = false
|
119
|
+
gem_hash[URI_TYPE[open_type]]
|
120
|
+
else
|
121
|
+
say "#{open_type} is not a valid type :( \n"
|
122
|
+
print_valid_uri_open_types!
|
123
|
+
skip = true
|
124
|
+
gem_hash[URI_TYPE['doc']]
|
125
|
+
end
|
126
|
+
Launchy.open(url) if url.present? && skip == false
|
127
|
+
end
|
128
|
+
|
129
|
+
# Download a given Gem.
|
130
|
+
desc 'download (dl)', 'Download a Gem'
|
131
|
+
def download(gem)
|
132
|
+
open gem, 'lib'
|
133
|
+
end
|
134
|
+
|
135
|
+
private
|
136
|
+
|
137
|
+
# Add color to terminal text.
|
138
|
+
# Available colors could be found in Ana::Scalars.
|
139
|
+
# \033 is 100% POSIX compatible. Use \e is also fine.
|
140
|
+
def colorize(text, color_code)
|
141
|
+
"\033[#{color_code}m#{text}\033[0m"
|
142
|
+
end
|
143
|
+
|
144
|
+
# Print all valid URI types.
|
145
|
+
def print_valid_uri_open_types!
|
146
|
+
say "Available types are: "
|
147
|
+
URI_TYPE.keys.each do |key|
|
148
|
+
next if key == 'lib'
|
149
|
+
print "#{key} "
|
150
|
+
end
|
151
|
+
print "\n"
|
152
|
+
end
|
153
|
+
|
154
|
+
# Check if a Gem exists, if exists load the json and return.
|
155
|
+
# The real load will execute every TTL (900) seconds.
|
156
|
+
# type: 'versions', 'gems'
|
157
|
+
# @return [Hash]
|
158
|
+
def check_if_gem_exist_and_get_json!(gem, type: 'versions')
|
159
|
+
if gem_exist?(gem)
|
160
|
+
gem_uri = URI("https://rubygems.org/api/v1/#{type}/#{gem}.json")
|
161
|
+
gem_json_file_path = full_path("~/.gemjsons/#{gem}/#{type}.json")
|
162
|
+
unless File.exist?(gem_json_file_path) && fresh?(gem_json_file_path)
|
163
|
+
remove_and_create_file!(gem_json_file_path, Net::HTTP.get(gem_uri))
|
164
|
+
end
|
165
|
+
else
|
166
|
+
print_gem_not_found!
|
167
|
+
end
|
168
|
+
return JSON.parse(IO.read(gem_json_file_path))
|
169
|
+
end
|
170
|
+
|
171
|
+
# Check if a given gem exists?
|
172
|
+
def gem_exist?(gem)
|
173
|
+
uri = URI "https://rubygems.org/api/v1/gems/#{gem}.json"
|
174
|
+
return false if GEM_NOT_FOUND == Net::HTTP.get(uri)
|
175
|
+
return true
|
176
|
+
end
|
177
|
+
|
178
|
+
# Print Gem version not found message.
|
179
|
+
def print_gem_version_not_found!
|
180
|
+
say(GEM_VER_NOT_FOUND, :red)
|
181
|
+
end
|
182
|
+
|
183
|
+
# Print Gem not found message.
|
184
|
+
def print_gem_not_found!
|
185
|
+
say(GEM_NOT_FOUND, :red)
|
186
|
+
end
|
187
|
+
|
188
|
+
# Remove and create (update) a file.
|
189
|
+
def remove_and_create_file!(file_path, data)
|
190
|
+
if File.exist? file_path
|
191
|
+
remove_file(file_path, verbose: false)
|
192
|
+
create_file(file_path, data, verbose: false)
|
193
|
+
say_status(:update, file_path)
|
194
|
+
else
|
195
|
+
create_file(file_path, data)
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
# Expand the full path of given relative path.
|
200
|
+
def full_path(relative_path)
|
201
|
+
File.expand_path(relative_path)
|
202
|
+
end
|
203
|
+
|
204
|
+
# Check if a file is has been changed within 900s?
|
205
|
+
def fresh?(file_path)
|
206
|
+
access_time(file_path) < TTL
|
207
|
+
end
|
208
|
+
|
209
|
+
# Return a file's change time with respect to current time.
|
210
|
+
def access_time(file_path)
|
211
|
+
Time.now - File.ctime(file_path)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Ana
|
2
|
+
module Scalars
|
3
|
+
TTL = 900 # Every 900s updates the json.
|
4
|
+
GEM_NOT_FOUND = 'This rubygem could not be found.'
|
5
|
+
GEM_VER_NOT_FOUND = 'This version could not be found.'
|
6
|
+
|
7
|
+
# Terminal Colour Codes
|
8
|
+
# http://en.wikipedia.org/wiki/ANSI_escape_code
|
9
|
+
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = [*30..37]
|
10
|
+
|
11
|
+
# $ curl https://rubygems.org/api/v1/gems/rails.json
|
12
|
+
# uris of above json
|
13
|
+
URI_TYPE = {
|
14
|
+
'proj' => 'project_uri',
|
15
|
+
'lib' => 'gem_uri',
|
16
|
+
'home' => 'homepage_uri',
|
17
|
+
'wiki' => 'wiki_uri',
|
18
|
+
'doc' => 'documentation_uri',
|
19
|
+
'mail' => 'mailing_list_uri',
|
20
|
+
'src' => 'source_code_uri',
|
21
|
+
'bug' => 'bug_tracker_uri',
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
data/lib/ana/core_ext.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
class String
|
2
|
+
def present?
|
3
|
+
!blank?
|
4
|
+
end
|
5
|
+
|
6
|
+
# A string is blank if it's empty or contains whitespaces only:
|
7
|
+
#
|
8
|
+
# ''.blank? # => true
|
9
|
+
# ' '.blank? # => true
|
10
|
+
# ' '.blank? # => true
|
11
|
+
# ' something here '.blank? # => false
|
12
|
+
def blank?
|
13
|
+
self =~ /\A[[:space:]]*\z/
|
14
|
+
end
|
15
|
+
end
|
data/lib/ana/version.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ana
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Juanito Fatas
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.18.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.18.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: launchy
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.4.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.4.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.4'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 10.1.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 10.1.0
|
69
|
+
description: Yet another RubyGems.org API wrapper in Ruby.
|
70
|
+
email:
|
71
|
+
- katehuang0320@gmail.com
|
72
|
+
executables:
|
73
|
+
- ana
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- .gitignore
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- ana.gemspec
|
83
|
+
- bin/ana
|
84
|
+
- lib/ana.rb
|
85
|
+
- lib/ana/command.rb
|
86
|
+
- lib/ana/constants.rb
|
87
|
+
- lib/ana/core_ext.rb
|
88
|
+
- lib/ana/version.rb
|
89
|
+
- test/ana/ana_test.rb
|
90
|
+
- test/test_helper.rb
|
91
|
+
homepage: https://github.com/JuanitoFatas/Ana
|
92
|
+
licenses:
|
93
|
+
- MIT
|
94
|
+
metadata: {}
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 2.0.0
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - '>='
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
requirements: []
|
110
|
+
rubyforge_project:
|
111
|
+
rubygems_version: 2.1.11
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: Ana knows a lot about RubyGems.
|
115
|
+
test_files:
|
116
|
+
- test/ana/ana_test.rb
|
117
|
+
- test/test_helper.rb
|