dply 0.3.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffaa634a168cfe8ccaab138bff92455a00ea17fab5ed722046add3e4ad9107f1
4
- data.tar.gz: 9890f68e334f77d50bcef82fb1b508c137c52f26b5a39b4ff872cd4180f2e6ce
3
+ metadata.gz: 1f29d96cf7879f2fdeae544b8786fc31f791d6426c45d37d3c096adce397f2af
4
+ data.tar.gz: 3ea7b2f1e64fcef2f81a81eecc9eda6f6709866d5818869b16c7c3447bec9215
5
5
  SHA512:
6
- metadata.gz: 3a2991743833049bb2ec714dbc3da301affae32812e0f8f806a9a96104b920291df9a1ee8563b2e71e304df89d5e1e8b68b426ec2a79e3033e315d46c9b2e7be
7
- data.tar.gz: 2c99051eec06e0dbb9e25cd1c9d0ea804073db65f0355bf1931b13a8749911e51080e49008564b905202944b0e232afd3bbdade973ab80da3d413a782df3ed8f
6
+ metadata.gz: 99b236593f11eefae1d1ed9c0ad0d3c1a733662a6c2c2c4d3fe2e111fb3b8383bb21a5ea1b2ae926baa20a61ebe4459a446a938b7ad6f6b76823cc7b37fe20fa
7
+ data.tar.gz: 8327e1f35451fb78ec59a2d1acb8482eddf25cc75b5345af99df3e563bb9bd6299d33330158c8d258634e826e976ec58bdef75fe402c8e0c84a17069d17e0ac7
data/.gitignore CHANGED
@@ -16,9 +16,6 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  *.bundle
19
- *.so
20
- *.o
21
- *.a
22
19
  mkmf.log
23
20
  /.config
24
21
  /coverage/
@@ -1,17 +1,26 @@
1
1
  require_relative 'task_dsl'
2
2
  require_relative 'error'
3
3
  require_relative 'logger'
4
+ require_relative 'ext/hash'
5
+ require 'erb'
6
+ require 'fileutils'
4
7
 
5
8
  module Dply
6
9
  class AppConfig
7
10
 
11
+ using HashExt
8
12
  include Logger
9
13
 
10
14
  def initialize
11
15
  @tasks = {}
16
+ @config_map = {}
12
17
  @namespace = nil
13
18
  @inside_namespace = false
14
19
  @config_read = false
20
+ @dsl_methods = self.class.instance_methods(false) + self.class.private_instance_methods(false)
21
+ def self.singleton_method_added(name)
22
+ raise Error, "overriding dsl method: :#{name} not allowed" if @dsl_methods.include? name
23
+ end
15
24
  end
16
25
 
17
26
  def run_task(name, optional: false)
@@ -28,6 +37,23 @@ module Dply
28
37
  end
29
38
  end
30
39
 
40
+ def render_config(override_file: nil)
41
+ config_data = load_yml "application.yml", optional: true
42
+ if override_file
43
+ data = load_yml override_file, optional: true
44
+ config_data.deep_merge! data
45
+ end
46
+
47
+ tmp_file = "tmp/config_render.tmp"
48
+ @config_map.each do |dest, src|
49
+ raise Error, %(error dest "#{dest}" is a directory) if File.directory? dest
50
+ template = File.read "dply/config/#{src}"
51
+ contents = ERB.new(template).result_with_hash(config_data)
52
+ File.write tmp_file, contents
53
+ FileUtils.mv tmp_file, dest
54
+ end
55
+ end
56
+
31
57
  def load_config
32
58
  return if @config_read
33
59
  bundler_setup
@@ -66,6 +92,10 @@ module Dply
66
92
  @inside_namespace = false
67
93
  end
68
94
 
95
+ def config_map(map)
96
+ @config_map = map
97
+ end
98
+
69
99
  def read_config(file, optional: false)
70
100
  if not File.readable? file
71
101
  raise Error, "#{file} not found" if not optional
@@ -104,5 +134,13 @@ module Dply
104
134
  raise Error, "drakefile.rb or dply/ dir not present" if not exists
105
135
  end
106
136
 
137
+ def load_yml(path, optional: false)
138
+ if not File.readable? path
139
+ raise Error, "error reading file #{path}" if not optional
140
+ return {}
141
+ end
142
+ YAML.safe_load(File.read(path)) || {}
143
+ end
144
+
107
145
  end
108
146
  end
@@ -0,0 +1,23 @@
1
+ module Dply
2
+ module HashExt
3
+ refine Hash do
4
+
5
+ def deep_merge!(other_hash, &block)
6
+ merge!(other_hash) do |key, this_val, other_val|
7
+ if this_val.is_a?(Hash) && other_val.is_a?(Hash)
8
+ this_val.deep_merge(other_val, &block)
9
+ elsif block_given?
10
+ block.call(key, this_val, other_val)
11
+ else
12
+ other_val
13
+ end
14
+ end
15
+ end
16
+
17
+ def deep_merge(other_hash, &block)
18
+ dup.deep_merge!(other_hash, &block)
19
+ end
20
+
21
+ end
22
+ end
23
+ end
data/lib/dply/task_dsl.rb CHANGED
@@ -18,6 +18,10 @@ module Dply
18
18
  super(command, env: extra_env, bundled_env: bundled_env, display: :arrow)
19
19
  end
20
20
 
21
+ def render_config(override_file: nil)
22
+ @app_config.render_config(override_file: override_file)
23
+ end
24
+
21
25
  def set_env(key, value)
22
26
  ENV[key.to_s] = value.to_s
23
27
  base_env[key.to_s] = value.to_s
data/lib/dply/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dply
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -91,9 +91,9 @@ module Dply
91
91
  end
92
92
 
93
93
  it "writes the config and runs bundle clean" do
94
- expect_config
95
94
  expect(bundle).to receive(:cmd).with("bundle clean")
96
95
  bundle.clean
96
+ expect_config
97
97
  end
98
98
  end
99
99
  end
@@ -60,4 +60,12 @@ describe "git flow" do
60
60
  system! "#{@drake} reload"
61
61
  end
62
62
  end
63
+
64
+ specify "config renderer works" do
65
+ Dir.chdir @deploy_dir do
66
+ expect(File).to exist("current/test.txt")
67
+ data = File.read "current/test.txt"
68
+ expect(data).to eq("asdf-override\n5432\n")
69
+ end
70
+ end
63
71
  end
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ db:
2
+ host: asdf-override
@@ -0,0 +1,3 @@
1
+ db:
2
+ host: asdf
3
+ port: 5432
@@ -1,3 +1,8 @@
1
+ config_map({
2
+ "test.txt" => "test.erb"
3
+ })
4
+
5
+
1
6
  test do
2
7
 
3
8
  end
@@ -14,6 +19,7 @@ build do
14
19
  end
15
20
 
16
21
  deploy :git do
22
+ render_config override_file: "application-override.yml"
17
23
  set_env "MIX_ENV", "prod"
18
24
  sh "ls"
19
25
  puts " git deployed"
@@ -0,0 +1,2 @@
1
+ <%= db.fetch("host") %>
2
+ <%= db.fetch("port") %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dply
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neeraj
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-18 00:00:00.000000000 Z
11
+ date: 2018-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-elf
@@ -104,6 +104,7 @@ files:
104
104
  - lib/dply/elf.rb
105
105
  - lib/dply/env.rb
106
106
  - lib/dply/error.rb
107
+ - lib/dply/ext/hash.rb
107
108
  - lib/dply/ext/string.rb
108
109
  - lib/dply/git.rb
109
110
  - lib/dply/helper.rb
@@ -167,13 +168,18 @@ files:
167
168
  - spec/test_data/bundle/no_gemfile/.gitkeep
168
169
  - spec/test_data/command/test.rb
169
170
  - spec/test_data/elf/elf
171
+ - spec/test_data/elf/libecpg.so
170
172
  - spec/test_data/elf/libpgtypes.so.3
171
173
  - spec/test_data/elf/not_elf
174
+ - spec/test_data/elf/rpath_libecpg.so
172
175
  - spec/test_data/sample_repo/.dply.lock
173
176
  - spec/test_data/sample_repo/Gemfile
174
177
  - spec/test_data/sample_repo/Rakefile
175
178
  - spec/test_data/sample_repo/app.rb
179
+ - spec/test_data/sample_repo/application-override.yml
180
+ - spec/test_data/sample_repo/application.yml
176
181
  - spec/test_data/sample_repo/dply/app.rb
182
+ - spec/test_data/sample_repo/dply/config/test.erb
177
183
  - spec/test_data/sample_repo/lib/libacl.so.1
178
184
  - spec/test_data/sample_repo/pkgs.yml
179
185
  - spec/webserver.rb
@@ -203,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
209
  version: '0'
204
210
  requirements: []
205
211
  rubyforge_project:
206
- rubygems_version: 2.7.4
212
+ rubygems_version: 2.7.6
207
213
  signing_key:
208
214
  specification_version: 4
209
215
  summary: rake based deploy tool
@@ -234,13 +240,18 @@ test_files:
234
240
  - spec/test_data/bundle/no_gemfile/.gitkeep
235
241
  - spec/test_data/command/test.rb
236
242
  - spec/test_data/elf/elf
243
+ - spec/test_data/elf/libecpg.so
237
244
  - spec/test_data/elf/libpgtypes.so.3
238
245
  - spec/test_data/elf/not_elf
246
+ - spec/test_data/elf/rpath_libecpg.so
239
247
  - spec/test_data/sample_repo/.dply.lock
240
248
  - spec/test_data/sample_repo/Gemfile
241
249
  - spec/test_data/sample_repo/Rakefile
242
250
  - spec/test_data/sample_repo/app.rb
251
+ - spec/test_data/sample_repo/application-override.yml
252
+ - spec/test_data/sample_repo/application.yml
243
253
  - spec/test_data/sample_repo/dply/app.rb
254
+ - spec/test_data/sample_repo/dply/config/test.erb
244
255
  - spec/test_data/sample_repo/lib/libacl.so.1
245
256
  - spec/test_data/sample_repo/pkgs.yml
246
257
  - spec/webserver.rb