alfi2 0.6.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e98b5ecd2e26c3bf217f3ec6ee0883b2ed0340a0
4
+ data.tar.gz: fa2eceaaaa2dda51cf81fe38b4a356d8e4acf650
5
+ SHA512:
6
+ metadata.gz: 02474d7c7fc088f3b2d0d464d58f00e89ba367737ed3fc51a01e7d145e5b4adeac54a689b80134867855375e6774f66a1781600b7edf65be0329c13fac750605
7
+ data.tar.gz: 156919c7d7d7d71ef331498a121375e12e139485b6d1fa6ab84c171e161d23256e387c02482e28c50a95cddce74cd1536f11922377c3b945d9983d7200422915
@@ -0,0 +1,98 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ # Created by https://www.gitignore.io
11
+
12
+ ### RubyMine ###
13
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
14
+
15
+ *.iml
16
+
17
+ ## Directory-based project format:
18
+ .idea/
19
+ # if you remove the above rule, at least ignore the following:
20
+
21
+ # User-specific stuff:
22
+ # .idea/workspace.xml
23
+ # .idea/tasks.xml
24
+ # .idea/dictionaries
25
+
26
+ # Sensitive or high-churn files:
27
+ # .idea/dataSources.ids
28
+ # .idea/dataSources.xml
29
+ # .idea/sqlDataSources.xml
30
+ # .idea/dynamic.xml
31
+ # .idea/uiDesigner.xml
32
+
33
+ # Gradle:
34
+ # .idea/gradle.xml
35
+ # .idea/libraries
36
+
37
+ # Mongo Explorer plugin:
38
+ # .idea/mongoSettings.xml
39
+
40
+ ## File-based project format:
41
+ *.ipr
42
+ *.iws
43
+
44
+ ## Plugin-specific files:
45
+
46
+ # IntelliJ
47
+ /out/
48
+
49
+ # mpeltonen/sbt-idea plugin
50
+ .idea_modules/
51
+
52
+ # JIRA plugin
53
+ atlassian-ide-plugin.xml
54
+
55
+ # Crashlytics plugin (for Android Studio and IntelliJ)
56
+ com_crashlytics_export_strings.xml
57
+ crashlytics.properties
58
+ crashlytics-build.properties
59
+
60
+
61
+ ### Ruby ###
62
+ *.gem
63
+ *.rbc
64
+ /.config
65
+ /coverage/
66
+ /InstalledFiles
67
+ /pkg/
68
+ /spec/reports/
69
+ /test/tmp/
70
+ /test/version_tmp/
71
+ /tmp/
72
+
73
+ ## Specific to RubyMotion:
74
+ .dat*
75
+ .repl_history
76
+ build/
77
+
78
+ ## Documentation cache and generated files:
79
+ /.yardoc/
80
+ /_yardoc/
81
+ /doc/
82
+ /rdoc/
83
+
84
+ ## Environment normalisation:
85
+ /.bundle/
86
+ /vendor/bundle
87
+ /lib/bundler/man/
88
+
89
+ # for a library or gem, you might want to ignore these files since the code is
90
+ # intended to run in multiple environments; otherwise, check them in:
91
+ # Gemfile.lock
92
+ # .ruby-version
93
+ # .ruby-gemset
94
+
95
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
96
+ .rvmrc
97
+ .ruby-version
98
+ .ruby-gemset
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in alfi.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 César Ferreira
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
@@ -0,0 +1,71 @@
1
+ # alfi 2
2
+
3
+ ![](http://ruby-gem-downloads-badge.herokuapp.com/alfi2?type=total)
4
+ [![Build Status](https://travis-ci.org/afzalive/alfi.svg?branch=master)](https://travis-ci.org/afzalive/alfi)
5
+ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/52ccd1e232684026b943c2be7059afcd)](https://www.codacy.com/app/AfzalivE/alfi?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=AfzalivE/alfi&amp;utm_campaign=Badge_Grade)
6
+ [![Gem Version](http://img.shields.io/gem/v/alfi2.svg?style=flat)](http://badge.fury.io/rb/alfi2)
7
+
8
+ **A**ndroid **L**ibrary **Fi**nder 2
9
+
10
+ Search through thousands of android libraries that can help you scale your projects elegantly
11
+
12
+ ## Usage
13
+
14
+ Search for `something`
15
+
16
+ ```bash
17
+ alfi picasso
18
+ ```
19
+
20
+ <p align="center">
21
+ <img src="https://raw.github.com/cesarferreira/alfi/master/extras/images/terminal01.gif" />
22
+ </p>
23
+
24
+
25
+ Search for `something` by repository
26
+
27
+ ```bash
28
+ alfi picasso --repository maven
29
+ ```
30
+
31
+ This will search picasso only on maven, you can also define multiple repositories like:
32
+
33
+ ```bash
34
+ alfi picasso -r mavencentral -r jcenter
35
+ ```
36
+
37
+ This will search picasso on mavenCentral and jCenter
38
+
39
+ Search for `something` and print with a custom prefix
40
+
41
+ ```bash
42
+ alfi picasso -p compile
43
+ ```
44
+
45
+ Search for `something` and print with single quotes
46
+
47
+ ```bash
48
+ alfi picasso -s
49
+ ```
50
+
51
+ **Final step:** Copy the library you want to your `build.gradle` and sync it
52
+
53
+ ## Installation
54
+
55
+ Install it via terminal:
56
+
57
+ $ gem install alfi2
58
+
59
+
60
+ ## Contributing
61
+
62
+ 1. Fork it ( https://github.com/afzalive/alfi/fork )
63
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
64
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
65
+ 4. Push to the branch (`git push origin my-new-feature`)
66
+ 5. Create a new Pull Request
67
+
68
+
69
+ ## Thanks
70
+ To [@cesarferreira](https://github.com/cesarferreira) for creating this project
71
+ To [@joaquimadraz](https://github.com/joaquimadraz) for the ruby pro-tips
@@ -0,0 +1,5 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ task :default => :test
5
+ RSpec::Core::RakeTask.new(:test)
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'alfi/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'alfi2'
8
+ spec.version = Alfi::VERSION
9
+ spec.authors = ['cesar ferreira', 'Afzal Najam']
10
+ spec.email = ['afzalnaj+dev@gmail.com']
11
+
12
+ if spec.respond_to?(:metadata)
13
+ #spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
14
+ end
15
+
16
+ spec.summary = 'Android Library Finder'
17
+ spec.description = 'Android Library Finder'
18
+ spec.homepage = "https://github.com/afzalive/alfi"
19
+ spec.license = 'MIT'
20
+
21
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ spec.bindir = 'bin'
23
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.required_ruby_version = '>= 2.0.0'
27
+
28
+ spec.add_development_dependency 'rake', '~> 12.0'
29
+ spec.add_development_dependency 'webmock', '~> 3.3.0'
30
+ spec.add_development_dependency 'rspec', '~> 3.2'
31
+ spec.add_development_dependency 'vcr', '~> 2.9'
32
+ spec.add_development_dependency 'pry', '~> 0.10.1'
33
+ spec.add_dependency 'bundler', '~> 1.7'
34
+ spec.add_dependency 'json', '~> 2.0.2'
35
+ spec.add_dependency 'colorize', '~> 0.7'
36
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ require 'bundler/setup'
3
+ require 'alfi'
4
+
5
+ Alfi::Cli.new.call(ARGV)
Binary file
@@ -0,0 +1,11 @@
1
+ module Alfi
2
+ end
3
+
4
+ require 'json'
5
+ require 'net/http'
6
+ require 'uri'
7
+ require 'colorize'
8
+ require 'alfi/providers'
9
+ require 'alfi/providers/base'
10
+
11
+ Dir["#{File.dirname(__FILE__)}/alfi/**/*.rb"].each { |file| require file }
@@ -0,0 +1,112 @@
1
+ require 'optparse'
2
+ include OptionParser::Arguable
3
+
4
+ $prefix = "implementation"
5
+ $single_quotes = false
6
+
7
+ class Alfi::Cli
8
+ BINTRAY_OPTIONS_FILE_NAME = File.expand_path('~/.alfi_bintray.json')
9
+
10
+ def exit_with(message)
11
+ puts message
12
+ exit 1
13
+ end
14
+
15
+ def call(arguments)
16
+ @search_type = []
17
+ create_options_parser
18
+ search_param = @all_defined_arguments.include?(arguments.first) ? nil : arguments.shift
19
+ @bintray_username = nil
20
+ @bintray_key = nil
21
+ @opt_parser.parse!(arguments)
22
+
23
+ parse_bintray_auth
24
+
25
+ exit_with("Missing query parameter\n".red + @opt_parser.help) unless search_param
26
+
27
+ Alfi::Search.new.call(search_param, @search_type)
28
+ end
29
+
30
+ def create_options_parser
31
+ @all_defined_arguments = [
32
+ '-u',
33
+ '--user',
34
+ '-k',
35
+ '--key',
36
+ '-r',
37
+ '--repository',
38
+ '-h',
39
+ '--help',
40
+ '-v',
41
+ '--version',
42
+ '-p',
43
+ '--prefix',
44
+ '-s',
45
+ '--single-quotes'
46
+ ]
47
+ @opt_parser = OptionParser.new do |opts|
48
+ opts.banner = "Usage: alfi SEARCH_QUERY [OPTIONS]"
49
+ opts.separator ''
50
+ opts.separator 'Options'
51
+
52
+ opts.on('-u BINTRAY_USER_NAME', '--user BINTRAY_USER_NAME', 'your bintray user name') do |bintray_username|
53
+ @bintray_username = bintray_username
54
+ end
55
+ opts.on('-k BINTRAY_KEY', '--key BINTRAY_KEY', 'your bintray api key') do |bintray_key|
56
+ @bintray_key = bintray_key
57
+ end
58
+ opts.on('-h', '--help', 'Displays help') do
59
+ puts opts.help
60
+ exit
61
+ end
62
+ opts.on('-v', '--version', 'Displays version') do
63
+ puts Alfi::VERSION
64
+ exit
65
+ end
66
+ opts.on('-p PREFIX', '--prefix PREFIX', 'Use custom prefix instead of "implementation"') do |prefix|
67
+ $prefix = prefix
68
+ end
69
+ opts.on('-s', '--single-quotes', 'Use single quotes instead of double quotes') do
70
+ $single_quotes = true
71
+ end
72
+ opts.on('-r REPOSITORY_NAME', '--repository REPOSITORY_NAME', 'If should search on maven, jCenter or mavenCentral ') do |repository_name|
73
+ if repository_name != "maven" && repository_name != "jcenter" && repository_name != "mavencentral"
74
+ puts "Please choose one of the following maven, jcenter or mavencentral"
75
+ exit
76
+ end
77
+
78
+ if repository_name.downcase == "maven"
79
+ @search_type << "m"
80
+ end
81
+
82
+ if repository_name.downcase == "mavencentral"
83
+ @search_type << "maven"
84
+ end
85
+
86
+ if repository_name.downcase == "jcenter"
87
+ @search_type << "jcenter"
88
+ end
89
+ end
90
+
91
+ opts.separator "\nNow you are using alfi credentials for Bintray".yellow
92
+ opts.separator "But you also could enter your authentication data if you want. "\
93
+ "It will be saved once you provided it\n".green unless @bintray_username
94
+ end
95
+ end
96
+
97
+ def parse_bintray_auth
98
+ $bintray_auth = if @bintray_username && @bintray_key
99
+ # write new auth data
100
+ new_data = { user_name: @bintray_username, api_key: @bintray_key }
101
+ File.open(BINTRAY_OPTIONS_FILE_NAME, 'w+') do |f|
102
+ f.puts new_data.to_json
103
+ end
104
+ new_data
105
+ else
106
+ # read old auth data
107
+ return unless File.exist?(BINTRAY_OPTIONS_FILE_NAME)
108
+ auth_data = JSON.parse(File.read(BINTRAY_OPTIONS_FILE_NAME) || '{}', symbolize_names: true)
109
+ auth_data if auth_data[:user_name] && auth_data[:api_key]
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,6 @@
1
+ module Alfi::Providers
2
+ # To get all defined providers
3
+ def self.all
4
+ (Alfi::Providers.constants - [:Base]).map { |class_name| const_get "Alfi::Providers::#{class_name}" }
5
+ end
6
+ end
@@ -0,0 +1,31 @@
1
+ class Alfi::Providers::Base
2
+ def initialize(query, search_type)
3
+ @query = query
4
+ @uri = URI.parse(query_url(query))
5
+ @http = Net::HTTP.new(@uri.host, @uri.port)
6
+ @request = Net::HTTP::Get.new(@uri.request_uri)
7
+ @search_type = search_type
8
+ @quote_symbol = $single_quotes ? "'" : "\""
9
+ request_extensions if self.class.method_defined?(:request_extensions)
10
+ end
11
+
12
+ def query_url
13
+ fail NotImplementedError
14
+ end
15
+
16
+ def call
17
+ fail NotImplementedError
18
+ end
19
+
20
+ def add_to_list(helper_string)
21
+ $result_list << helper_string
22
+ end
23
+
24
+ def add_suggestions(suggestions)
25
+ $suggestions += Array(suggestions)
26
+ end
27
+
28
+ def add_repo_to_list(package)
29
+ $result_list << " #{$prefix} #{@quote_symbol}#{package}#{@quote_symbol}".green
30
+ end
31
+ end
@@ -0,0 +1,61 @@
1
+ class Alfi::Providers::Bintray < Alfi::Providers::Base
2
+ PROVIDERS_TEXTS = {
3
+ 'maven' => 'mavenCentral()',
4
+ 'jcenter' => 'jcenter()'
5
+ }
6
+ ALFI_BINTRAY_CREDS = [
7
+ {
8
+ user_name: 'alfi',
9
+ api_key: '5bfa2bedc8d2f5abb8a3fdff49a8599d6ebe7bef'
10
+ },
11
+ {
12
+ user_name: 'alfi2',
13
+ api_key: '98ebb0e5c0fb45c03a1d747da5532b294e01f77e'
14
+ },
15
+ {
16
+ user_name: 'alfi3',
17
+ api_key: 'd506539a493ede165e6497269bea4b0f822fdb6a'
18
+ },
19
+ {
20
+ user_name: 'alfi4',
21
+ api_key: '3da11d361aa52d5d46ee5fd320838f7a5592d9e1'
22
+ }
23
+ ]
24
+
25
+ def query_url(query)
26
+ "https://api.bintray.com/search/packages?name=#{query}"
27
+ end
28
+
29
+ def request_extensions
30
+ unless $bintray_auth
31
+ $bintray_auth = ALFI_BINTRAY_CREDS.sample
32
+ end
33
+ @http.use_ssl = true
34
+ @request.basic_auth $bintray_auth[:user_name], $bintray_auth[:api_key]
35
+ end
36
+
37
+ def call
38
+ if @search_type.empty? || @search_type.include?('jcenter') || @search_type.include?('maven')
39
+ begin
40
+ response = @http.request(@request)
41
+ rescue SocketError
42
+ puts "Internet Connection not available".red
43
+ exit 1
44
+ end
45
+
46
+ return if response.code != '200'
47
+ response_json = JSON.parse(response.body || '{}')
48
+
49
+ add_to_list " # #{'-'*20}Bintray#{'-'*20}" if response_json.size > 0
50
+
51
+ response_json.group_by { |package| package['repo'] }.each do |provider, repositories|
52
+ if @search_type.empty? || @search_type.include?(provider)
53
+ add_to_list " # #{PROVIDERS_TEXTS[provider]}"
54
+ repositories.each do |repo|
55
+ add_repo_to_list "#{repo['system_ids'][0]}:#{repo['latest_version']}" if repo['system_ids'].size > 0
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,34 @@
1
+ class Alfi::Providers::Maven < Alfi::Providers::Base
2
+ def query_url(query)
3
+ "http://search.maven.org/solrsearch/select?q=#{query}&rows=350&wt=json"
4
+ end
5
+
6
+ def call
7
+ if @search_type.empty? || @search_type.include?('m')
8
+ begin
9
+ response = @http.request(@request)
10
+ rescue SocketError
11
+ puts "Internet Connection not available".red
12
+ exit 1
13
+ end
14
+
15
+ if response.code == '200'
16
+ result = JSON.parse(response.body)
17
+
18
+ num_results = result['response']['numFound']
19
+
20
+ if num_results == 0
21
+ suggestions = (result['spellcheck']['suggestions'].last || {})['suggestion']
22
+ add_suggestions(suggestions) if suggestions
23
+ else
24
+ add_to_list " # #{'-'*20}Maven.org#{'-'*20}"
25
+ add_to_list ' # mavenCentral()'
26
+ end
27
+ result['response']['docs'].each { |doc| add_repo_to_list "#{doc['id']}:#{doc['latestVersion']}" }
28
+ else
29
+ puts "Error: #{response.code}\n#{response}".red
30
+ exit 1
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,27 @@
1
+ # require 'alfi/providers/base'
2
+ class Alfi::Providers::Offline < Alfi::Providers::Base
3
+ def initialize(query, search_type)
4
+ @query = query
5
+ end
6
+
7
+ def call
8
+ google_libs = [
9
+ 'com.android.support:appcompat-v7',
10
+ 'com.android.support:cardview-v7',
11
+ 'com.android.support:gridlayout-v7',
12
+ 'com.android.support:leanback-v17',
13
+ 'com.android.support:mediarouter-v7',
14
+ 'com.android.support:palette-v7',
15
+ 'com.android.support:support-annotations',
16
+ 'com.android.support:support-v4',
17
+ 'com.android.support:support-v13',
18
+ 'com.google.android.gms:play-services-wearable',
19
+ 'com.google.android.gms:play-services',
20
+ 'com.android.support:recyclerview-v7'
21
+ ]
22
+ results = google_libs.map { |lib| "#{lib}:+" if lib.include?(@query) }.compact
23
+ return unless results.size > 0
24
+ add_to_list ' # Google'
25
+ results.each { |library| add_repo_to_list(library) }
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ class Alfi::Search
2
+ def initialize
3
+ $result_list = []
4
+ $suggestions = []
5
+ end
6
+
7
+ def exit_with(message)
8
+ puts message
9
+ exit 1
10
+ end
11
+
12
+ def call(search_param, search_type)
13
+ return puts 'The search needs 3+ characters'.red if search_param.size < 3
14
+ puts "Searching...\n"
15
+
16
+ Alfi::Providers.all.each { |cc| cc.new(search_param, search_type).call }
17
+
18
+ exit_with('No results'.red) if $result_list.empty? && $suggestions.empty?
19
+ num_results = total_results_count
20
+
21
+ if num_results > 0
22
+ puts "\ndependencies {\n"
23
+ $result_list.each { |result| puts result }
24
+ puts "}\n"
25
+ end
26
+
27
+ puts "\nFound: #{num_results} result#{num_results > 1?'s':''} for '#{search_param.yellow}'"
28
+
29
+ return if $suggestions.empty?
30
+ puts "Did you mean: #{$suggestions.join(', ').yellow}"
31
+ end
32
+
33
+ def total_results_count
34
+ return $result_list.count { |r| r.strip[0] != '#' }
35
+ end
36
+ end
@@ -0,0 +1,3 @@
1
+ module Alfi
2
+ VERSION = '0.6.1'
3
+ end
metadata ADDED
@@ -0,0 +1,179 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alfi2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.1
5
+ platform: ruby
6
+ authors:
7
+ - cesar ferreira
8
+ - Afzal Najam
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2018-01-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '12.0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '12.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: webmock
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 3.3.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 3.3.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.2'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.2'
56
+ - !ruby/object:Gem::Dependency
57
+ name: vcr
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.9'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.9'
70
+ - !ruby/object:Gem::Dependency
71
+ name: pry
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 0.10.1
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 0.10.1
84
+ - !ruby/object:Gem::Dependency
85
+ name: bundler
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '1.7'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '1.7'
98
+ - !ruby/object:Gem::Dependency
99
+ name: json
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 2.0.2
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 2.0.2
112
+ - !ruby/object:Gem::Dependency
113
+ name: colorize
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '0.7'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '0.7'
126
+ description: Android Library Finder
127
+ email:
128
+ - afzalnaj+dev@gmail.com
129
+ executables:
130
+ - alfi
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".travis.yml"
137
+ - Gemfile
138
+ - LICENSE
139
+ - README.md
140
+ - Rakefile
141
+ - alfi.gemspec
142
+ - bin/alfi
143
+ - extras/images/logov2.png
144
+ - extras/images/terminal01.gif
145
+ - extras/images/wide-logo.png
146
+ - lib/alfi.rb
147
+ - lib/alfi/cli.rb
148
+ - lib/alfi/providers.rb
149
+ - lib/alfi/providers/base.rb
150
+ - lib/alfi/providers/bintray.rb
151
+ - lib/alfi/providers/maven.rb
152
+ - lib/alfi/providers/offline.rb
153
+ - lib/alfi/search.rb
154
+ - lib/alfi/version.rb
155
+ homepage: https://github.com/afzalive/alfi
156
+ licenses:
157
+ - MIT
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: 2.0.0
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.6.13
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: Android Library Finder
179
+ test_files: []