travis-config 0.1.4 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +20 -14
- data/lib/travis/config.rb +20 -27
- data/lib/travis/config/docker.rb +1 -2
- data/lib/travis/config/env.rb +1 -3
- data/lib/travis/config/files.rb +1 -2
- data/lib/travis/config/helpers.rb +5 -8
- data/lib/travis/config/heroku.rb +5 -31
- data/lib/travis/config/heroku/database.rb +45 -0
- data/lib/travis/config/version.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/travis/config_spec.rb +2 -8
- data/travis-config.gemspec +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f96540c8353be57638c3e7bc3b649a581d2df086
|
4
|
+
data.tar.gz: b6140d403624472488a8fb6ce88b8fc43969ddef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23b23106676b996e2510d500bc3b759714e0c8f3342bd2051c19d5b8dc8a1ca188e88db5fdaea386b73801afa8f6863d347756a3e72cac9c36f38ed9d3fd40cd
|
7
|
+
data.tar.gz: a5ec1c92c9ed4c2d405c2feeaf01aafa9817a59f14f4046e0c611e9d8c2c9abab889fee74c560983b7459dbdc6b2febc95a51eb8501b9b7bd0c964745ee730be
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,34 +1,40 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
travis-config (0.
|
5
|
-
hashr (~> 0.0)
|
4
|
+
travis-config (1.0.0.rc1)
|
5
|
+
hashr (~> 2.0.0.rc1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
diff-lcs (1.2.5)
|
11
|
-
hashr (0.0.
|
11
|
+
hashr (2.0.0.rc1)
|
12
12
|
metaclass (0.0.4)
|
13
13
|
mocha (1.1.0)
|
14
14
|
metaclass (~> 0.0.1)
|
15
|
-
rspec (3.
|
16
|
-
rspec-core (~> 3.
|
17
|
-
rspec-expectations (~> 3.
|
18
|
-
rspec-mocks (~> 3.
|
19
|
-
rspec-core (3.
|
20
|
-
rspec-support (~> 3.
|
21
|
-
rspec-expectations (3.1
|
15
|
+
rspec (3.3.0)
|
16
|
+
rspec-core (~> 3.3.0)
|
17
|
+
rspec-expectations (~> 3.3.0)
|
18
|
+
rspec-mocks (~> 3.3.0)
|
19
|
+
rspec-core (3.3.2)
|
20
|
+
rspec-support (~> 3.3.0)
|
21
|
+
rspec-expectations (3.3.1)
|
22
22
|
diff-lcs (>= 1.2.0, < 2.0)
|
23
|
-
rspec-support (~> 3.
|
24
|
-
rspec-mocks (3.
|
25
|
-
|
26
|
-
|
23
|
+
rspec-support (~> 3.3.0)
|
24
|
+
rspec-mocks (3.3.2)
|
25
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
26
|
+
rspec-support (~> 3.3.0)
|
27
|
+
rspec-support (3.3.0)
|
27
28
|
|
28
29
|
PLATFORMS
|
30
|
+
java
|
29
31
|
ruby
|
30
32
|
|
31
33
|
DEPENDENCIES
|
34
|
+
hashr (~> 2.0.0.rc1)
|
32
35
|
mocha (~> 1.1)
|
33
36
|
rspec (~> 3.0)
|
34
37
|
travis-config!
|
38
|
+
|
39
|
+
BUNDLED WITH
|
40
|
+
1.10.6
|
data/lib/travis/config.rb
CHANGED
@@ -1,26 +1,14 @@
|
|
1
1
|
require 'hashr'
|
2
|
-
require 'travis/config/docker'
|
3
|
-
require 'travis/config/env'
|
4
|
-
require 'travis/config/files'
|
5
|
-
require 'travis/config/heroku'
|
6
|
-
|
7
|
-
# patch Hashr to merge with existing definitions and defaults
|
8
|
-
class Hashr < Hash
|
9
|
-
class << self
|
10
|
-
def define(definition)
|
11
|
-
definition = self.definition.merge(definition.deep_symbolize_keys)
|
12
|
-
@definition = deep_accessorize(definition)
|
13
|
-
end
|
14
|
-
|
15
|
-
def default(defaults)
|
16
|
-
defaults = self.defaults.merge(defaults)
|
17
|
-
@defaults = deep_accessorize(defaults)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
2
|
|
22
3
|
module Travis
|
23
4
|
class Config < Hashr
|
5
|
+
require 'travis/config/docker'
|
6
|
+
require 'travis/config/env'
|
7
|
+
require 'travis/config/files'
|
8
|
+
require 'travis/config/heroku'
|
9
|
+
|
10
|
+
include Hashr::Delegate::Conditional
|
11
|
+
|
24
12
|
class << self
|
25
13
|
include Helpers
|
26
14
|
|
@@ -28,17 +16,22 @@ module Travis
|
|
28
16
|
@env ||= ENV['ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
|
29
17
|
end
|
30
18
|
|
31
|
-
def load(*
|
32
|
-
|
19
|
+
def load(*names)
|
20
|
+
new(load_from(*names))
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
33
24
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
25
|
+
def load_from(*names)
|
26
|
+
loaders(*names).inject({}) do |data, loader|
|
27
|
+
deep_merge(data, deep_symbolize_keys(loader.load))
|
28
|
+
end
|
38
29
|
end
|
39
30
|
|
40
|
-
|
41
|
-
|
31
|
+
def loaders(*names)
|
32
|
+
names = [:files, :env, :heroku, :docker] if names.empty?
|
33
|
+
names.map { |name| const_get(camelize(name)).new }
|
34
|
+
end
|
42
35
|
end
|
43
36
|
|
44
37
|
def env
|
data/lib/travis/config/docker.rb
CHANGED
data/lib/travis/config/env.rb
CHANGED
data/lib/travis/config/files.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
require 'hashr'
|
2
|
-
|
3
1
|
module Travis
|
4
|
-
class Config
|
2
|
+
class Config
|
5
3
|
module Helpers
|
6
4
|
def deep_symbolize_keys(hash)
|
7
5
|
hash.inject({}) do |result, (key, value)|
|
@@ -40,11 +38,10 @@ module Travis
|
|
40
38
|
end
|
41
39
|
|
42
40
|
def camelize(string)
|
43
|
-
string
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
string
|
41
|
+
string.to_s.
|
42
|
+
sub(/^[a-z\d]*/) { $&.capitalize }.
|
43
|
+
gsub(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }.
|
44
|
+
gsub('/', '::')
|
48
45
|
end
|
49
46
|
end
|
50
47
|
end
|
data/lib/travis/config/heroku.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
-
require 'hashr'
|
2
1
|
require 'travis/config/helpers'
|
2
|
+
require 'travis/config/heroku/database'
|
3
3
|
|
4
4
|
module Travis
|
5
|
-
class Config
|
5
|
+
class Config
|
6
6
|
class Heroku
|
7
7
|
include Helpers
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
# TODO add rabbitmq, redis, memcached addons etc
|
11
10
|
def load
|
12
11
|
compact(database: database, logs_database: logs_database)
|
13
12
|
end
|
@@ -15,36 +14,11 @@ module Travis
|
|
15
14
|
private
|
16
15
|
|
17
16
|
def database
|
18
|
-
config
|
19
|
-
config = config.merge(pool: pool_size.to_i) if pool_size
|
20
|
-
config
|
17
|
+
Database.new.config
|
21
18
|
end
|
22
19
|
|
23
20
|
def logs_database
|
24
|
-
|
25
|
-
config = config.merge(pool: logs_pool_size.to_i) if logs_pool_size
|
26
|
-
config.merge(adapter: 'postgresql', encoding: 'unicode') unless config.empty?
|
27
|
-
end
|
28
|
-
|
29
|
-
def parse_database_url(url)
|
30
|
-
matches = DATABASE_URL.match(url.to_s)
|
31
|
-
matches ? compact(Hash[matches.names.zip(matches.captures)]) : {}
|
32
|
-
end
|
33
|
-
|
34
|
-
def pool_size
|
35
|
-
ENV.values_at('DB_POOL', 'DATABASE_POOL_SIZE').compact.first
|
36
|
-
end
|
37
|
-
|
38
|
-
def logs_pool_size
|
39
|
-
ENV.values_at('LOGS_DB_POOL', 'LOGS_DATABASE_POOL_SIZE').compact.first
|
40
|
-
end
|
41
|
-
|
42
|
-
def database_url
|
43
|
-
ENV.values_at('DATABASE_URL', 'SHARED_DATABASE_URL').compact.first
|
44
|
-
end
|
45
|
-
|
46
|
-
def logs_database_url
|
47
|
-
ENV.values_at('LOGS_DATABASE_URL', 'SHARED_LOGS_DATABASE_URL').compact.first
|
21
|
+
Database.new(prefix: 'logs').config
|
48
22
|
end
|
49
23
|
end
|
50
24
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Travis
|
2
|
+
class Config
|
3
|
+
class Heroku
|
4
|
+
class Database
|
5
|
+
include Helpers
|
6
|
+
|
7
|
+
URL = %r((?:.+?)://(?<username>.+):(?<password>.+)@(?<host>[^:]+):?(?<port>.*)/(?<database>.+))
|
8
|
+
DEFAULTS = { adapter: 'postgresql', encoding: 'unicode' }
|
9
|
+
|
10
|
+
attr_reader :options
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
@options = options
|
14
|
+
end
|
15
|
+
|
16
|
+
def config
|
17
|
+
parse_url.tap do |config|
|
18
|
+
config[:pool] = pool.to_i if pool
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_url
|
23
|
+
matches = URL.match(url.to_s)
|
24
|
+
matches ? compact(Hash[matches.names.zip(matches.captures)]).merge(DEFAULTS) : {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def pool
|
28
|
+
env('DB_POOL', 'DATABASE_POOL_SIZE').compact.first
|
29
|
+
end
|
30
|
+
|
31
|
+
def url
|
32
|
+
env('DATABASE_URL').compact.first
|
33
|
+
end
|
34
|
+
|
35
|
+
def env(*keys)
|
36
|
+
ENV.values_at(*keys.map { |key| prefix(key) })
|
37
|
+
end
|
38
|
+
|
39
|
+
def prefix(key)
|
40
|
+
[options[:prefix], key].compact.join('_').upcase
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/travis/config_spec.rb
CHANGED
@@ -20,14 +20,8 @@ describe Travis::Config do
|
|
20
20
|
expect(config.foo.bar).to be_kind_of(Hashr)
|
21
21
|
end
|
22
22
|
|
23
|
-
it 'can access
|
24
|
-
|
25
|
-
config.keys.each do |key|
|
26
|
-
expect(proc { config.send(key) }).to_not raise_error
|
27
|
-
access.call(config.send(key)) if config[key].is_a?(Hash)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
access.call(config)
|
23
|
+
it 'can access nested keys' do
|
24
|
+
expect(config.amqp.username).to eq('guest')
|
31
25
|
end
|
32
26
|
end
|
33
27
|
|
data/travis-config.gemspec
CHANGED
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: 0.
|
4
|
+
version: 1.0.0.rc1
|
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-
|
11
|
+
date: 2015-10-07 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:
|
19
|
+
version: 2.0.0.rc1
|
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:
|
26
|
+
version: 2.0.0.rc1
|
27
27
|
description: Travis CI config.
|
28
28
|
email: contact@travis-ci.org
|
29
29
|
executables: []
|
@@ -40,6 +40,7 @@ files:
|
|
40
40
|
- lib/travis/config/files.rb
|
41
41
|
- lib/travis/config/helpers.rb
|
42
42
|
- lib/travis/config/heroku.rb
|
43
|
+
- lib/travis/config/heroku/database.rb
|
43
44
|
- lib/travis/config/version.rb
|
44
45
|
- spec/spec_helper.rb
|
45
46
|
- spec/travis/config/docker_spec.rb
|
@@ -62,9 +63,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
63
|
version: '0'
|
63
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
65
|
requirements:
|
65
|
-
- - "
|
66
|
+
- - ">"
|
66
67
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
68
|
+
version: 1.3.1
|
68
69
|
requirements: []
|
69
70
|
rubyforge_project: "[none]"
|
70
71
|
rubygems_version: 2.4.5
|