travis-config 0.1.4 → 1.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 +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
|