mini_portile2 2.0.0.rc1
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
- checksums.yaml.gz.sig +4 -0
- data.tar.gz.sig +2 -0
- data/.gitignore +3 -0
- data/.travis.yml +11 -0
- data/CHANGELOG.md +169 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +20 -0
- data/README.md +188 -0
- data/Rakefile +25 -0
- data/appveyor.yml +24 -0
- data/examples/.gitignore +2 -0
- data/examples/Rakefile +127 -0
- data/examples/libiconv-patches/1-avoid-gets-error.patch +16 -0
- data/lib/mini_portile2.rb +2 -0
- data/lib/mini_portile2/mini_portile.rb +495 -0
- data/lib/mini_portile2/version.rb +3 -0
- data/mini_portile2.gemspec +30 -0
- data/test/assets/patch 1.diff +7 -0
- data/test/assets/test mini portile-1.0.0/configure +11 -0
- data/test/helper.rb +49 -0
- data/test/test_cook.rb +68 -0
- data/test/test_digest.rb +72 -0
- data/test/test_proxy.rb +121 -0
- metadata +154 -0
- metadata.gz.sig +0 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'mini_portile2/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "mini_portile2"
|
8
|
+
spec.version = MiniPortile::VERSION
|
9
|
+
|
10
|
+
spec.authors = ['Luis Lavena', 'Mike Dalessio']
|
11
|
+
spec.email = 'mike.dalessio@gmail.com'
|
12
|
+
|
13
|
+
spec.summary = "Simplistic port-like solution for developers"
|
14
|
+
spec.description = "Simplistic port-like solution for developers. It provides a standard and simplified way to compile against dependency libraries without messing up your system."
|
15
|
+
|
16
|
+
spec.homepage = 'http://github.com/flavorjones/mini_portile'
|
17
|
+
spec.licenses = ['MIT']
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0")
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features|examples)/})
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "test-unit", "~> 3.0"
|
27
|
+
spec.add_development_dependency "minitar", "~> 0.5.4"
|
28
|
+
|
29
|
+
spec.required_ruby_version = ">= 1.9.2"
|
30
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'webrick'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'zlib'
|
5
|
+
require 'archive/tar/minitar'
|
6
|
+
require 'fileutils'
|
7
|
+
require 'erb'
|
8
|
+
require 'mini_portile2'
|
9
|
+
|
10
|
+
class TestCase < Test::Unit::TestCase
|
11
|
+
class << self
|
12
|
+
HTTP_PORT = 23523
|
13
|
+
|
14
|
+
attr_accessor :webrick
|
15
|
+
|
16
|
+
def start_webrick(path)
|
17
|
+
@webrick = WEBrick::HTTPServer.new(:Port => HTTP_PORT, :DocumentRoot => path).tap do |w|
|
18
|
+
Thread.new do
|
19
|
+
w.start
|
20
|
+
end
|
21
|
+
until w.status==:Running
|
22
|
+
sleep 0.1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def stop_webrick
|
28
|
+
if w=@webrick
|
29
|
+
w.shutdown
|
30
|
+
until w.status==:Stop
|
31
|
+
sleep 0.1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_tar(tar_path, assets_path)
|
37
|
+
FileUtils.mkdir_p(File.dirname(tar_path))
|
38
|
+
Zlib::GzipWriter.open(tar_path) do |fdtgz|
|
39
|
+
Dir.chdir(assets_path) do
|
40
|
+
Archive::Tar::Minitar.pack("test mini portile-1.0.0", fdtgz)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def work_dir(r=recipe)
|
46
|
+
"tmp/#{r.host}/ports/#{r.name}/#{r.version}/#{r.name}-#{r.version}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/test/test_cook.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class TestCook < TestCase
|
4
|
+
class << self
|
5
|
+
attr_accessor :assets_path
|
6
|
+
attr_accessor :tar_path
|
7
|
+
attr_accessor :recipe
|
8
|
+
|
9
|
+
def startup
|
10
|
+
@assets_path = File.expand_path("../assets", __FILE__)
|
11
|
+
@tar_path = File.expand_path("../../tmp/test mini portile-1.0.0.tar.gz", __FILE__)
|
12
|
+
|
13
|
+
# remove any previous test files
|
14
|
+
FileUtils.rm_rf("tmp")
|
15
|
+
|
16
|
+
create_tar(@tar_path, @assets_path)
|
17
|
+
start_webrick(File.dirname(@tar_path))
|
18
|
+
|
19
|
+
@recipe = MiniPortile.new("test mini portile", "1.0.0").tap do |recipe|
|
20
|
+
recipe.files << "http://localhost:#{HTTP_PORT}/#{ERB::Util.url_encode(File.basename(@tar_path))}"
|
21
|
+
recipe.patch_files << File.join(@assets_path, "patch 1.diff")
|
22
|
+
recipe.configure_options << "--option=\"path with 'space'\""
|
23
|
+
recipe.cook
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def shutdown
|
28
|
+
stop_webrick
|
29
|
+
# leave test files for inspection
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_download
|
34
|
+
download = "ports/archives/test%20mini%20portile-1.0.0.tar.gz"
|
35
|
+
assert File.exist?(download), download
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_untar
|
39
|
+
configure = File.join(self.class.work_dir, "configure")
|
40
|
+
assert File.exist?(configure), configure
|
41
|
+
assert_match( /^#!\/bin\/sh/, IO.read(configure) )
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_patch
|
45
|
+
patch1 = File.join(self.class.work_dir, "patch 1.txt")
|
46
|
+
assert File.exist?(patch1), patch1
|
47
|
+
assert_match( /^change 1/, IO.read(patch1) )
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_configure
|
51
|
+
txt = File.join(self.class.work_dir, "configure.txt")
|
52
|
+
assert File.exist?(txt), txt
|
53
|
+
opts = self.class.recipe.configure_options + ["--prefix=#{self.class.recipe.path}"]
|
54
|
+
assert_equal( opts.inspect, IO.read(txt).chomp )
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_compile
|
58
|
+
txt = File.join(self.class.work_dir, "compile.txt")
|
59
|
+
assert File.exist?(txt), txt
|
60
|
+
assert_equal( ["all"].inspect, IO.read(txt).chomp )
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_install
|
64
|
+
txt = File.join(self.class.work_dir, "install.txt")
|
65
|
+
assert File.exist?(txt), txt
|
66
|
+
assert_equal( ["install"].inspect, IO.read(txt).chomp )
|
67
|
+
end
|
68
|
+
end
|
data/test/test_digest.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class TestDigest < TestCase
|
4
|
+
class << self
|
5
|
+
attr_accessor :assets_path
|
6
|
+
attr_accessor :tar_path
|
7
|
+
attr_accessor :recipe
|
8
|
+
|
9
|
+
def startup
|
10
|
+
@assets_path = File.expand_path("../assets", __FILE__)
|
11
|
+
@tar_path = File.expand_path("../../tmp/test-digest-1.0.0.tar.gz", __FILE__)
|
12
|
+
|
13
|
+
# remove any previous test files
|
14
|
+
FileUtils.rm_rf("tmp")
|
15
|
+
|
16
|
+
create_tar(@tar_path, @assets_path)
|
17
|
+
start_webrick(File.dirname(@tar_path))
|
18
|
+
end
|
19
|
+
|
20
|
+
def shutdown
|
21
|
+
stop_webrick
|
22
|
+
# leave test files for inspection
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def setup
|
27
|
+
# remove any download files
|
28
|
+
FileUtils.rm_rf("ports/archives")
|
29
|
+
|
30
|
+
@recipe = MiniPortile.new("test-digest", "1.0.0")
|
31
|
+
end
|
32
|
+
|
33
|
+
def download_with_digest(key, klass)
|
34
|
+
@recipe.files << {
|
35
|
+
:url => "http://localhost:#{self.class.webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(self.class.tar_path))}",
|
36
|
+
key => klass.file(self.class.tar_path).hexdigest,
|
37
|
+
}
|
38
|
+
@recipe.download
|
39
|
+
end
|
40
|
+
|
41
|
+
def download_with_wrong_digest(key)
|
42
|
+
@recipe.files << {
|
43
|
+
:url => "http://localhost:#{self.class.webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(self.class.tar_path))}",
|
44
|
+
key => "0011223344556677",
|
45
|
+
}
|
46
|
+
assert_raise(RuntimeError){ @recipe.download }
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_sha256
|
50
|
+
download_with_digest(:sha256, Digest::SHA256)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_wrong_sha256
|
54
|
+
download_with_wrong_digest(:sha256)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_sha1
|
58
|
+
download_with_digest(:sha1, Digest::SHA1)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_wrong_sha1
|
62
|
+
download_with_wrong_digest(:sha1)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_md5
|
66
|
+
download_with_digest(:md5, Digest::MD5)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_wrong_md5
|
70
|
+
download_with_wrong_digest(:md5)
|
71
|
+
end
|
72
|
+
end
|
data/test/test_proxy.rb
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
# Encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path('../helper', __FILE__)
|
4
|
+
require 'socket'
|
5
|
+
|
6
|
+
class TestProxy < TestCase
|
7
|
+
def with_dummy_proxy(username=nil, password=nil)
|
8
|
+
gs = TCPServer.open('localhost', 0)
|
9
|
+
th = Thread.new do
|
10
|
+
s = gs.accept
|
11
|
+
gs.close
|
12
|
+
begin
|
13
|
+
req = ''
|
14
|
+
while (l=s.gets) && !l.chomp.empty?
|
15
|
+
req << l
|
16
|
+
end
|
17
|
+
req
|
18
|
+
ensure
|
19
|
+
s.close
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
if username && password
|
24
|
+
yield "http://#{ERB::Util.url_encode(username)}:#{ERB::Util.url_encode(password)}@localhost:#{gs.addr[1]}"
|
25
|
+
else
|
26
|
+
yield "http://localhost:#{gs.addr[1]}"
|
27
|
+
end
|
28
|
+
|
29
|
+
# Set timeout for reception of the request
|
30
|
+
Thread.new do
|
31
|
+
sleep 1
|
32
|
+
th.kill
|
33
|
+
end
|
34
|
+
th.value
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup
|
38
|
+
# remove any download files
|
39
|
+
FileUtils.rm_rf("port/archives")
|
40
|
+
end
|
41
|
+
|
42
|
+
def assert_proxy_auth(expected, request)
|
43
|
+
if request =~ /^Proxy-Authorization: Basic (.*)/
|
44
|
+
assert_equal 'user: @name:@12: üMp', $1.unpack("m")[0].force_encoding(__ENCODING__)
|
45
|
+
else
|
46
|
+
flunk "No authentication request"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_http_proxy
|
51
|
+
recipe = MiniPortile.new("test http_proxy", "1.0.0")
|
52
|
+
recipe.files << "http://myserver/path/to/tar.gz"
|
53
|
+
request = with_dummy_proxy do |url, thread|
|
54
|
+
ENV['http_proxy'] = url
|
55
|
+
recipe.download rescue RuntimeError
|
56
|
+
ENV.delete('http_proxy')
|
57
|
+
end
|
58
|
+
assert_match(/GET http:\/\/myserver\/path\/to\/tar.gz/, request)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_http_proxy_with_basic_auth
|
62
|
+
recipe = MiniPortile.new("test http_proxy", "1.0.0")
|
63
|
+
recipe.files << "http://myserver/path/to/tar.gz"
|
64
|
+
request = with_dummy_proxy('user: @name', '@12: üMp') do |url, thread|
|
65
|
+
ENV['http_proxy'] = url
|
66
|
+
recipe.download rescue RuntimeError
|
67
|
+
ENV.delete('http_proxy')
|
68
|
+
end
|
69
|
+
|
70
|
+
assert_match(/GET http:\/\/myserver\/path\/to\/tar.gz/, request)
|
71
|
+
assert_proxy_auth 'user: @name:@12: üMp', request
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_https_proxy
|
75
|
+
recipe = MiniPortile.new("test https_proxy", "1.0.0")
|
76
|
+
recipe.files << "https://myserver/path/to/tar.gz"
|
77
|
+
request = with_dummy_proxy do |url, thread|
|
78
|
+
ENV['https_proxy'] = url
|
79
|
+
recipe.download rescue RuntimeError
|
80
|
+
ENV.delete('https_proxy')
|
81
|
+
end
|
82
|
+
assert_match(/CONNECT myserver:443/, request)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_https_proxy_with_basic_auth
|
86
|
+
recipe = MiniPortile.new("test https_proxy", "1.0.0")
|
87
|
+
recipe.files << "https://myserver/path/to/tar.gz"
|
88
|
+
request = with_dummy_proxy('user: @name', '@12: üMp') do |url, thread|
|
89
|
+
ENV['https_proxy'] = url
|
90
|
+
recipe.download rescue RuntimeError
|
91
|
+
ENV.delete('https_proxy')
|
92
|
+
end
|
93
|
+
|
94
|
+
assert_match(/CONNECT myserver:443/, request)
|
95
|
+
assert_proxy_auth 'user: @name:@12: üMp', request
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_ftp_proxy
|
99
|
+
recipe = MiniPortile.new("test ftp_proxy", "1.0.0")
|
100
|
+
recipe.files << "ftp://myserver/path/to/tar.gz"
|
101
|
+
request = with_dummy_proxy do |url, thread|
|
102
|
+
ENV['ftp_proxy'] = url
|
103
|
+
recipe.download rescue RuntimeError
|
104
|
+
ENV.delete('ftp_proxy')
|
105
|
+
end
|
106
|
+
assert_match(/GET ftp:\/\/myserver\/path\/to\/tar.gz/, request)
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_ftp_proxy_with_basic_auth
|
110
|
+
recipe = MiniPortile.new("test ftp_proxy", "1.0.0")
|
111
|
+
recipe.files << "ftp://myserver/path/to/tar.gz"
|
112
|
+
request = with_dummy_proxy('user: @name', '@12: üMp') do |url, thread|
|
113
|
+
ENV['ftp_proxy'] = url
|
114
|
+
recipe.download rescue RuntimeError
|
115
|
+
ENV.delete('ftp_proxy')
|
116
|
+
end
|
117
|
+
|
118
|
+
assert_match(/GET ftp:\/\/myserver\/path\/to\/tar.gz/, request)
|
119
|
+
assert_proxy_auth 'user: @name:@12: üMp', request
|
120
|
+
end
|
121
|
+
end
|
metadata
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mini_portile2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.rc1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Luis Lavena
|
8
|
+
- Mike Dalessio
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain:
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDPDCCAiSgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBEMQ0wCwYDVQQDDARsYXJz
|
15
|
+
MR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZImiZPyLGQB
|
16
|
+
GRYCZGUwHhcNMTUwMzEzMjAzMjExWhcNMTYwMzEyMjAzMjExWjBEMQ0wCwYDVQQD
|
17
|
+
DARsYXJzMR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZIm
|
18
|
+
iZPyLGQBGRYCZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZb4Uv
|
19
|
+
RFJfRu/VEWiy3psh2jinETjiuBrL0NeRFGf8H7iU9+gx/DI/FFhfHGLrDeIskrJx
|
20
|
+
YIWDMmEjVO10UUdj7wu4ZhmU++0Cd7Kq9/TyP/shIP3IjqHjVLCnJ3P6f1cl5rxZ
|
21
|
+
gqo+d3BAoDrmPk0rtaf6QopwUw9RBiF8V4HqvpiY+ruJotP5UQDP4/lVOKvA8PI9
|
22
|
+
P0GmVbFBrbc7Zt5h78N3UyOK0u+nvOC23BvyHXzCtcFsXCoEkt+Wwh0RFqVZdnjM
|
23
|
+
LMO2vULHKKHDdX54K/sbVCj9pN9h1aotNzrEyo55zxn0G9PHg/G3P8nMvAXPkUTe
|
24
|
+
brhXrfCwWRvOXA4TAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
|
25
|
+
A1UdDgQWBBRAHK81igrXodaDj8a8/BIKsaZrETANBgkqhkiG9w0BAQUFAAOCAQEA
|
26
|
+
MSeqyuvnysrcVerV+iQHfW1k53W8sl0pA8f8t/VFp7fUfKXJ9K7AGby4y9xOsqII
|
27
|
+
AeHuFrYoCxgoJL2k088/IKdu5bsuJ4FWzDpIV70uSOZsPKhlBiLqDLvccFnB/XBe
|
28
|
+
3qSVN9x1I/lkVT4j55MqKjvvkn5GCfKz6JLPHgwEihiV0qmgsX2uZnxU4JbAbI5R
|
29
|
+
4NX+7Dq+AuZUp5MtQslByeESOalT3SBfXSQ8QkZPwMVstsRm2h+0kVRu/AQHiGwJ
|
30
|
+
6jkDey5mE3jQb893U6ihl55uLkVQwxZZTq/flNWjTIcbbvKKafEGdGv5uOlB+KRL
|
31
|
+
PRtgPFlA2jDgUr1EPAIH1Q==
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
34
|
+
dependencies:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.7'
|
42
|
+
type: :development
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.7'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rake
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '10.0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '10.0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: test-unit
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '3.0'
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: minitar
|
79
|
+
requirement: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.5.4
|
84
|
+
type: :development
|
85
|
+
prerelease: false
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.5.4
|
91
|
+
description: Simplistic port-like solution for developers. It provides a standard
|
92
|
+
and simplified way to compile against dependency libraries without messing up your
|
93
|
+
system.
|
94
|
+
email: mike.dalessio@gmail.com
|
95
|
+
executables: []
|
96
|
+
extensions: []
|
97
|
+
extra_rdoc_files: []
|
98
|
+
files:
|
99
|
+
- ".gitignore"
|
100
|
+
- ".travis.yml"
|
101
|
+
- CHANGELOG.md
|
102
|
+
- Gemfile
|
103
|
+
- LICENSE.txt
|
104
|
+
- README.md
|
105
|
+
- Rakefile
|
106
|
+
- appveyor.yml
|
107
|
+
- examples/.gitignore
|
108
|
+
- examples/Rakefile
|
109
|
+
- examples/libiconv-patches/1-avoid-gets-error.patch
|
110
|
+
- lib/mini_portile2.rb
|
111
|
+
- lib/mini_portile2/mini_portile.rb
|
112
|
+
- lib/mini_portile2/version.rb
|
113
|
+
- mini_portile2.gemspec
|
114
|
+
- test/assets/patch 1.diff
|
115
|
+
- test/assets/test mini portile-1.0.0/configure
|
116
|
+
- test/helper.rb
|
117
|
+
- test/test_cook.rb
|
118
|
+
- test/test_digest.rb
|
119
|
+
- test/test_proxy.rb
|
120
|
+
homepage: http://github.com/flavorjones/mini_portile
|
121
|
+
licenses:
|
122
|
+
- MIT
|
123
|
+
metadata: {}
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.9.2
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: 1.3.1
|
138
|
+
requirements: []
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 2.4.5
|
141
|
+
signing_key:
|
142
|
+
specification_version: 4
|
143
|
+
summary: Simplistic port-like solution for developers
|
144
|
+
test_files:
|
145
|
+
- examples/.gitignore
|
146
|
+
- examples/Rakefile
|
147
|
+
- examples/libiconv-patches/1-avoid-gets-error.patch
|
148
|
+
- test/assets/patch 1.diff
|
149
|
+
- test/assets/test mini portile-1.0.0/configure
|
150
|
+
- test/helper.rb
|
151
|
+
- test/test_cook.rb
|
152
|
+
- test/test_digest.rb
|
153
|
+
- test/test_proxy.rb
|
154
|
+
has_rdoc:
|