travis-config 1.0.0.rc1 → 1.0.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/Gemfile +1 -1
- data/Gemfile.lock +4 -4
- data/lib/travis/config.rb +1 -1
- data/lib/travis/config/heroku.rb +20 -2
- data/lib/travis/config/heroku/database.rb +27 -26
- data/lib/travis/config/heroku/memcached.rb +31 -0
- data/lib/travis/config/heroku/url.rb +34 -0
- data/lib/travis/config/version.rb +1 -1
- data/spec/travis/config/heroku/amqp_spec.rb +18 -0
- data/spec/travis/config/{heroku_spec.rb → heroku/database_spec.rb} +21 -21
- data/spec/travis/config/heroku/memcached_spec.rb +23 -0
- data/spec/travis/config/heroku/redis_spec.rb +11 -0
- data/travis-config.gemspec +2 -2
- metadata +13 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aee4a6bf44828bb44bf30a91dbc9ca7028813495
|
4
|
+
data.tar.gz: 4db6880197343768cad8e0692fad58741367d198
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7498ab1b0c1b05c615d01ee2f17efac2cadb44f0bde156cb707fde3a624c1aca7d7170fbc7a54b1024ae3740f0bb90e40e197729d1a6ca32962f835893b1bbc6
|
7
|
+
data.tar.gz: d992acfaa9b8ace9e80ad07ac363e6d65204dd13dd4678dcee00935b608ea56a1f7b9f6151304939c6dbaae07c64788163728732134fdbc48bbb01b40373c106
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
travis-config (1.0.0
|
5
|
-
hashr (~> 2.0.0
|
4
|
+
travis-config (1.0.0)
|
5
|
+
hashr (~> 2.0.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
diff-lcs (1.2.5)
|
11
|
-
hashr (2.0.0
|
11
|
+
hashr (2.0.0)
|
12
12
|
metaclass (0.0.4)
|
13
13
|
mocha (1.1.0)
|
14
14
|
metaclass (~> 0.0.1)
|
@@ -31,7 +31,7 @@ PLATFORMS
|
|
31
31
|
ruby
|
32
32
|
|
33
33
|
DEPENDENCIES
|
34
|
-
hashr (~> 2.0.0
|
34
|
+
hashr (~> 2.0.0)
|
35
35
|
mocha (~> 1.1)
|
36
36
|
rspec (~> 3.0)
|
37
37
|
travis-config!
|
data/lib/travis/config.rb
CHANGED
data/lib/travis/config/heroku.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
require 'travis/config/helpers'
|
2
2
|
require 'travis/config/heroku/database'
|
3
|
+
require 'travis/config/heroku/memcached'
|
3
4
|
|
4
5
|
module Travis
|
5
6
|
class Config
|
6
7
|
class Heroku
|
7
8
|
include Helpers
|
8
9
|
|
9
|
-
# TODO add rabbitmq, redis, memcached addons etc
|
10
10
|
def load
|
11
|
-
compact(
|
11
|
+
compact(
|
12
|
+
database: database,
|
13
|
+
logs_database: logs_database,
|
14
|
+
amqp: amqp,
|
15
|
+
redis: redis,
|
16
|
+
memcached: memcached
|
17
|
+
)
|
12
18
|
end
|
13
19
|
|
14
20
|
private
|
@@ -20,6 +26,18 @@ module Travis
|
|
20
26
|
def logs_database
|
21
27
|
Database.new(prefix: 'logs').config
|
22
28
|
end
|
29
|
+
|
30
|
+
def amqp
|
31
|
+
compact(Url.parse(ENV['RABBITMQ_URL']).to_h)
|
32
|
+
end
|
33
|
+
|
34
|
+
def redis
|
35
|
+
compact(url: ENV['REDIS_URL'])
|
36
|
+
end
|
37
|
+
|
38
|
+
def memcached
|
39
|
+
Memcached.new.config
|
40
|
+
end
|
23
41
|
end
|
24
42
|
end
|
25
43
|
end
|
@@ -1,44 +1,45 @@
|
|
1
|
+
require 'travis/config/heroku/url'
|
2
|
+
|
1
3
|
module Travis
|
2
4
|
class Config
|
3
5
|
class Heroku
|
4
|
-
class Database
|
6
|
+
class Database < Struct.new(:options)
|
5
7
|
include Helpers
|
6
8
|
|
7
|
-
URL = %r((?:.+?)://(?<username>.+):(?<password>.+)@(?<host>[^:]+):?(?<port>.*)/(?<database>.+))
|
8
9
|
DEFAULTS = { adapter: 'postgresql', encoding: 'unicode' }
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
def config
|
12
|
+
config = parse_url
|
13
|
+
config = DEFAULTS.merge(config) unless config.empty?
|
14
|
+
config[:pool] = pool.to_i if pool
|
15
|
+
config
|
14
16
|
end
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
private
|
19
|
+
|
20
|
+
def parse_url
|
21
|
+
compact(Url.parse(url).to_h)
|
19
22
|
end
|
20
|
-
end
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
def pool
|
25
|
+
env('DB_POOL', 'DATABASE_POOL_SIZE').compact.first
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
def url
|
29
|
+
env('DATABASE_URL').compact.first
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
def env(*keys)
|
33
|
+
ENV.values_at(*keys.map { |key| prefix(key) })
|
34
|
+
end
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
def prefix(key)
|
37
|
+
[options[:prefix], key].compact.join('_').upcase
|
38
|
+
end
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
40
|
+
def options
|
41
|
+
super || {}
|
42
|
+
end
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Travis
|
2
|
+
class Config
|
3
|
+
class Heroku
|
4
|
+
class Memcached
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
def config
|
8
|
+
compact(servers: servers, options: options)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def servers
|
14
|
+
ENV['MEMCACHED_SERVERS']
|
15
|
+
end
|
16
|
+
|
17
|
+
def options
|
18
|
+
{ username: username, password: password }
|
19
|
+
end
|
20
|
+
|
21
|
+
def username
|
22
|
+
ENV['MEMCACHED_USERNAME']
|
23
|
+
end
|
24
|
+
|
25
|
+
def password
|
26
|
+
ENV['MEMCACHED_PASSWORD']
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
module Travis
|
4
|
+
class Config
|
5
|
+
class Heroku
|
6
|
+
module Url
|
7
|
+
Base = Struct.new(:username, :password, :host, :port, :database)
|
8
|
+
Postgres = Class.new(Base)
|
9
|
+
Redis = Class.new(Base)
|
10
|
+
|
11
|
+
class Amqp < Base
|
12
|
+
alias :vhost :database
|
13
|
+
|
14
|
+
def to_h
|
15
|
+
super.reject { |key, value| key == :database }.merge(vhost: vhost)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def parse(url)
|
21
|
+
return {} if url.nil? || url.empty?
|
22
|
+
uri = URI.parse(url)
|
23
|
+
const = const_get(camelize(uri.scheme))
|
24
|
+
const.new(uri.user, uri.password, uri.host, uri.port, uri.path[1..-1])
|
25
|
+
end
|
26
|
+
|
27
|
+
def camelize(string)
|
28
|
+
string.to_s.split('_').collect(&:capitalize).join
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
describe Travis::Config::Heroku, :Amqp do
|
2
|
+
let(:config) { Travis::Test::Config.load(:heroku) }
|
3
|
+
let(:url) { 'amqp://username:password@hostname:1234/vhost' }
|
4
|
+
|
5
|
+
before { ENV['RABBITMQ_URL'] = url }
|
6
|
+
after { ENV.delete('RABBITMQ_URL') }
|
7
|
+
|
8
|
+
it 'loads a RABBITMQ_URL' do
|
9
|
+
expect(config.amqp).to eq(
|
10
|
+
host: 'hostname',
|
11
|
+
port: 1234,
|
12
|
+
vhost: 'vhost',
|
13
|
+
username: 'username',
|
14
|
+
password: 'password',
|
15
|
+
prefetch: 1
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
describe Travis::Config::Heroku do
|
1
|
+
describe Travis::Config::Heroku, :Database do
|
2
2
|
let(:config) { Travis::Test::Config.load(:heroku) }
|
3
3
|
let(:vars) { %w(DATABASE_URL DB_POOL DATABASE_POOL_SIZE LOGS_DATABASE_URL LOGS_DB_POOL LOGS_DATABASE_POOL_SIZE) }
|
4
4
|
after { vars.each { |key| ENV.delete(key) } }
|
5
5
|
|
6
6
|
it 'loads a DATABASE_URL with a port' do
|
7
|
-
ENV['DATABASE_URL'] = 'postgres://username:password@hostname:
|
7
|
+
ENV['DATABASE_URL'] = 'postgres://username:password@hostname:1234/database'
|
8
8
|
|
9
|
-
expect(config.database
|
9
|
+
expect(config.database).to eq(
|
10
10
|
adapter: 'postgresql',
|
11
11
|
host: 'hostname',
|
12
|
-
port:
|
12
|
+
port: 1234,
|
13
13
|
database: 'database',
|
14
14
|
username: 'username',
|
15
15
|
password: 'password',
|
@@ -20,7 +20,7 @@ describe Travis::Config::Heroku do
|
|
20
20
|
it 'loads a DATABASE_URL without a port' do
|
21
21
|
ENV['DATABASE_URL'] = 'postgres://username:password@hostname/database'
|
22
22
|
|
23
|
-
expect(config.database
|
23
|
+
expect(config.database).to eq(
|
24
24
|
adapter: 'postgresql',
|
25
25
|
host: 'hostname',
|
26
26
|
database: 'database',
|
@@ -31,13 +31,13 @@ describe Travis::Config::Heroku do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'loads DB_POOL' do
|
34
|
-
ENV['DATABASE_URL'] = 'postgres://username:password@hostname:
|
34
|
+
ENV['DATABASE_URL'] = 'postgres://username:password@hostname:1234/database'
|
35
35
|
ENV['DB_POOL'] = '25'
|
36
36
|
|
37
|
-
expect(config.database
|
37
|
+
expect(config.database).to eq(
|
38
38
|
adapter: 'postgresql',
|
39
39
|
host: 'hostname',
|
40
|
-
port:
|
40
|
+
port: 1234,
|
41
41
|
database: 'database',
|
42
42
|
username: 'username',
|
43
43
|
password: 'password',
|
@@ -47,13 +47,13 @@ describe Travis::Config::Heroku do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'loads DATABASE_POOL_SIZE' do
|
50
|
-
ENV['DATABASE_URL'] = 'postgres://username:password@hostname:
|
50
|
+
ENV['DATABASE_URL'] = 'postgres://username:password@hostname:1234/database'
|
51
51
|
ENV['DATABASE_POOL_SIZE'] = '25'
|
52
52
|
|
53
|
-
expect(config.database
|
53
|
+
expect(config.database).to eq(
|
54
54
|
adapter: 'postgresql',
|
55
55
|
host: 'hostname',
|
56
|
-
port:
|
56
|
+
port: 1234,
|
57
57
|
database: 'database',
|
58
58
|
username: 'username',
|
59
59
|
password: 'password',
|
@@ -63,12 +63,12 @@ describe Travis::Config::Heroku do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'loads a LOGS_DATABASE_URL with a port' do
|
66
|
-
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname:
|
66
|
+
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname:1234/logs_database'
|
67
67
|
|
68
|
-
expect(config.logs_database
|
68
|
+
expect(config.logs_database).to eq(
|
69
69
|
adapter: 'postgresql',
|
70
70
|
host: 'hostname',
|
71
|
-
port:
|
71
|
+
port: 1234,
|
72
72
|
database: 'logs_database',
|
73
73
|
username: 'username',
|
74
74
|
password: 'password',
|
@@ -79,7 +79,7 @@ describe Travis::Config::Heroku do
|
|
79
79
|
it 'loads a LOGS_DATABASE_URL without a port' do
|
80
80
|
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname/logs_database'
|
81
81
|
|
82
|
-
expect(config.logs_database
|
82
|
+
expect(config.logs_database).to eq(
|
83
83
|
adapter: 'postgresql',
|
84
84
|
host: 'hostname',
|
85
85
|
database: 'logs_database',
|
@@ -90,13 +90,13 @@ describe Travis::Config::Heroku do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'loads LOGS_DB_POOL' do
|
93
|
-
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname:
|
93
|
+
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname:1234/logs_database'
|
94
94
|
ENV['LOGS_DB_POOL'] = '25'
|
95
95
|
|
96
|
-
expect(config.logs_database
|
96
|
+
expect(config.logs_database).to eq(
|
97
97
|
adapter: 'postgresql',
|
98
98
|
host: 'hostname',
|
99
|
-
port:
|
99
|
+
port: 1234,
|
100
100
|
database: 'logs_database',
|
101
101
|
username: 'username',
|
102
102
|
password: 'password',
|
@@ -106,13 +106,13 @@ describe Travis::Config::Heroku do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it 'loads LOGS_DATABASE_POOL_SIZE' do
|
109
|
-
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname:
|
109
|
+
ENV['LOGS_DATABASE_URL'] = 'postgres://username:password@hostname:1234/logs_database'
|
110
110
|
ENV['LOGS_DATABASE_POOL_SIZE'] = '25'
|
111
111
|
|
112
|
-
expect(config.logs_database
|
112
|
+
expect(config.logs_database).to eq(
|
113
113
|
adapter: 'postgresql',
|
114
114
|
host: 'hostname',
|
115
|
-
port:
|
115
|
+
port: 1234,
|
116
116
|
database: 'logs_database',
|
117
117
|
username: 'username',
|
118
118
|
password: 'password',
|
@@ -0,0 +1,23 @@
|
|
1
|
+
describe Travis::Config::Heroku, :Memcached do
|
2
|
+
let(:config) { Travis::Test::Config.load(:heroku) }
|
3
|
+
let(:servers) { 'hostname:1234' }
|
4
|
+
let(:username) { 'username' }
|
5
|
+
let(:password) { 'password' }
|
6
|
+
|
7
|
+
[:servers, :username, :password].each do |key|
|
8
|
+
before { ENV["MEMCACHED_#{key.to_s.upcase}"] = send(key) }
|
9
|
+
after { ENV.delete("MEMCACHED_#{key.to_s.upcase}") }
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'loads a MEMCACHED_SERVERS' do
|
13
|
+
expect(config.memcached.servers).to eq(servers)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'loads a MEMCACHED_USERNAME' do
|
17
|
+
expect(config.memcached.options.username).to eq(username)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'loads a MEMCACHED_SERVERS' do
|
21
|
+
expect(config.memcached.options.password).to eq(password)
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
describe Travis::Config::Heroku, :Redis do
|
2
|
+
let(:config) { Travis::Test::Config.load(:heroku) }
|
3
|
+
let(:url) { 'redis://username:password@hostname:1234/database' }
|
4
|
+
|
5
|
+
before { ENV['REDIS_URL'] = url }
|
6
|
+
after { ENV.delete('REDIS_URL') }
|
7
|
+
|
8
|
+
it 'loads a REDIS_URL' do
|
9
|
+
expect(config.redis).to eq(url: url)
|
10
|
+
end
|
11
|
+
end
|
data/travis-config.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.version = TravisConfig::VERSION
|
9
9
|
s.authors = ["Travis CI"]
|
10
10
|
s.email = "contact@travis-ci.org"
|
11
|
-
s.homepage = "https://github.com/travis-ci/travis-
|
11
|
+
s.homepage = "https://github.com/travis-ci/travis-config"
|
12
12
|
s.summary = "Travis CI config"
|
13
13
|
s.description = "#{s.summary}."
|
14
14
|
s.license = "MIT"
|
@@ -18,5 +18,5 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_path = 'lib'
|
19
19
|
s.rubyforge_project = '[none]'
|
20
20
|
|
21
|
-
s.add_dependency 'hashr', '~> 2.0.0
|
21
|
+
s.add_dependency 'hashr', '~> 2.0.0'
|
22
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: travis-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis CI
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashr
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.0.0
|
19
|
+
version: 2.0.0
|
20
20
|
type: :runtime
|
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: 2.0.0
|
26
|
+
version: 2.0.0
|
27
27
|
description: Travis CI config.
|
28
28
|
email: contact@travis-ci.org
|
29
29
|
executables: []
|
@@ -41,14 +41,19 @@ files:
|
|
41
41
|
- lib/travis/config/helpers.rb
|
42
42
|
- lib/travis/config/heroku.rb
|
43
43
|
- lib/travis/config/heroku/database.rb
|
44
|
+
- lib/travis/config/heroku/memcached.rb
|
45
|
+
- lib/travis/config/heroku/url.rb
|
44
46
|
- lib/travis/config/version.rb
|
45
47
|
- spec/spec_helper.rb
|
46
48
|
- spec/travis/config/docker_spec.rb
|
47
49
|
- spec/travis/config/files_spec.rb
|
48
|
-
- spec/travis/config/
|
50
|
+
- spec/travis/config/heroku/amqp_spec.rb
|
51
|
+
- spec/travis/config/heroku/database_spec.rb
|
52
|
+
- spec/travis/config/heroku/memcached_spec.rb
|
53
|
+
- spec/travis/config/heroku/redis_spec.rb
|
49
54
|
- spec/travis/config_spec.rb
|
50
55
|
- travis-config.gemspec
|
51
|
-
homepage: https://github.com/travis-ci/travis-
|
56
|
+
homepage: https://github.com/travis-ci/travis-config
|
52
57
|
licenses:
|
53
58
|
- MIT
|
54
59
|
metadata: {}
|
@@ -63,9 +68,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
68
|
version: '0'
|
64
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
70
|
requirements:
|
66
|
-
- - "
|
71
|
+
- - ">="
|
67
72
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
73
|
+
version: '0'
|
69
74
|
requirements: []
|
70
75
|
rubyforge_project: "[none]"
|
71
76
|
rubygems_version: 2.4.5
|