eac_tools 0.29.0 → 0.30.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +31 -25
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +1 -1
  5. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/lib_rename.rb +77 -0
  6. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb +55 -0
  7. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/update_dependencies_requirements.rb +21 -7
  8. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  9. data/sub/avm-files/Gemfile +8 -0
  10. data/sub/avm-files/avm-files.gemspec +22 -0
  11. data/sub/avm-files/lib/avm/files/appendable/file_content.rb +24 -0
  12. data/sub/avm-files/lib/avm/files/appendable/plain_directory.rb +25 -0
  13. data/sub/avm-files/lib/avm/files/appendable/resource_base.rb +13 -0
  14. data/sub/avm-files/lib/avm/files/appendable/tar_output_command.rb +26 -0
  15. data/sub/avm-files/lib/avm/files/appendable/templatized_directory.rb +29 -0
  16. data/sub/avm-files/lib/avm/files/appendable.rb +55 -0
  17. data/sub/avm-files/lib/avm/files/appender.rb +11 -0
  18. data/sub/avm-files/lib/avm/files/deploy.rb +71 -0
  19. data/sub/avm-files/lib/avm/files/formatter/formats/base.rb +62 -0
  20. data/sub/avm-files/lib/avm/files/formatter/formats/generic_plain.rb +34 -0
  21. data/sub/avm-files/lib/avm/files/formatter/formats/html.rb +45 -0
  22. data/sub/avm-files/lib/avm/files/formatter/formats/javascript.rb +24 -0
  23. data/sub/avm-files/lib/avm/files/formatter/formats/json.rb +27 -0
  24. data/sub/avm-files/lib/avm/files/formatter/formats/php.rb +22 -0
  25. data/sub/avm-files/lib/avm/files/formatter/formats/python.rb +22 -0
  26. data/sub/avm-files/lib/avm/files/formatter/formats/ruby.rb +22 -0
  27. data/sub/avm-files/lib/avm/files/formatter/formats/xml.rb +28 -0
  28. data/sub/avm-files/lib/avm/files/formatter/formats.rb +13 -0
  29. data/sub/avm-files/lib/avm/files/formatter/utf8_assert.rb +74 -0
  30. data/sub/avm-files/lib/avm/files/formatter.rb +90 -0
  31. data/sub/avm-files/lib/avm/files/runner_with/file_replacer.rb +34 -0
  32. data/sub/avm-files/lib/avm/files/runner_with/filesystem_traverser.rb +54 -0
  33. data/sub/avm-files/lib/avm/files/runner_with.rb +11 -0
  34. data/sub/avm-files/lib/avm/files/text_replacer/gsub.rb +24 -0
  35. data/sub/avm-files/lib/avm/files/text_replacer.rb +32 -0
  36. data/sub/avm-files/lib/avm/files/version.rb +7 -0
  37. data/sub/avm-files/lib/avm/files.rb +9 -0
  38. data/sub/avm-files/spec/rubocop_spec.rb +3 -0
  39. data/sub/avm-files/spec/spec_helper.rb +4 -0
  40. data/sub/avm-tools/avm-tools.gemspec +5 -5
  41. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  42. data/sub/eac_cli/eac_cli.gemspec +3 -3
  43. data/sub/eac_cli/lib/eac_cli/core_ext.rb +1 -1
  44. data/sub/eac_cli/lib/eac_cli/runner_with_set.rb +7 -3
  45. data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
  46. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
  47. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  48. metadata +42 -12
  49. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/object/runner_with.rb +0 -5
  50. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/object.rb +0 -5
  51. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner_with/filesystem_traverser.rb +0 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 702b93f483faabce748c237dafa2c8cb08d1f1eb4094a93f09166e4e0457c55e
4
- data.tar.gz: cd78bbcf11c9da7593068a6667fb2acfdc6c09fa37a6ba7acabd61602915e378
3
+ metadata.gz: dc1385a1932c7e4a6b89b66db8ea6084663a9c690571b00ca73465b47421ddd2
4
+ data.tar.gz: 7dd2dab5f79240a7b8087532ee959accaf130ac12f4c6d9745b86a0ab85efd5f
5
5
  SHA512:
6
- metadata.gz: 87b38acdc3473f7c62ef5bbf64353fc83daca80c80e9dc8d88ca0d1ddb2225584e57ca81c4bf5a2f9d95abe59ee470da41fb1fc0ac16ff973c7f2e6520d95eb1
7
- data.tar.gz: 30edd04c05f07e3d1616321ec2685dc0b00b25d3c165fbbf4fac6c109dc030fc2a7293f084d8229a4b8349e7ed1a8fb10e0ec04e66f00462a1a760ba4ce9ea6f
6
+ metadata.gz: 6b28b72f7c1eafb7ca609ab9b0450cc07254316756668ae980af135710fa01dcd364d18bc403c2912b50dd1c3e6c5832f220c59aa8aaac7b2366436801aebb4a
7
+ data.tar.gz: e6fcad611277f1d36707f180da96fed11a25a98139e5cc889bb5aa3e5728d42d3a9fa4667d70f1055fdff114291dbc364b099d4fb72615696d6d6be1e19a05fc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.29.0)
4
+ eac_tools (0.30.0)
5
5
  avm (~> 0.43)
6
6
  avm-eac_asciidoctor_base0 (~> 0.7)
7
7
  avm-eac_generic_base0 (~> 0.5)
@@ -10,10 +10,10 @@ PATH
10
10
  avm-eac_rails_base1 (~> 0.6)
11
11
  avm-eac_redmine_base0 (~> 0.14)
12
12
  avm-eac_redmine_plugin_base0 (~> 0.3)
13
- avm-eac_ruby_base1 (~> 0.20, >= 0.20.1)
13
+ avm-eac_ruby_base1 (~> 0.21)
14
14
  avm-eac_webapp_base0 (~> 0.8)
15
15
  avm-eac_wordpress_base0 (~> 0.2)
16
- avm-tools (~> 0.136)
16
+ avm-tools (~> 0.136, >= 0.136.1)
17
17
  eac_ruby_utils (~> 0.103)
18
18
 
19
19
  PATH
@@ -80,10 +80,10 @@ PATH
80
80
  PATH
81
81
  remote: sub/avm-eac_ruby_base1
82
82
  specs:
83
- avm-eac_ruby_base1 (0.20.1)
83
+ avm-eac_ruby_base1 (0.21.0)
84
84
  avm (~> 0.41, >= 0.41.1)
85
85
  avm-eac_generic_base0 (~> 0.5)
86
- eac_ruby_utils (~> 0.102)
86
+ eac_ruby_utils (~> 0.103)
87
87
 
88
88
  PATH
89
89
  remote: sub/avm-eac_webapp_base0
@@ -103,21 +103,31 @@ PATH
103
103
  avm-eac_webapp_base0 (~> 0.6)
104
104
  eac_ruby_utils (~> 0.102)
105
105
 
106
+ PATH
107
+ remote: sub/avm-files
108
+ specs:
109
+ avm-files (0.4.0)
110
+ avm (~> 0.43)
111
+ eac_cli (~> 0.28)
112
+ eac_fs (~> 0.12, >= 0.12.3)
113
+ eac_ruby_utils (~> 0.103)
114
+ eac_templates (~> 0.3, >= 0.3.2)
115
+
106
116
  PATH
107
117
  remote: sub/avm-tools
108
118
  specs:
109
- avm-tools (0.136.0)
110
- aranha-parsers (~> 0.14, >= 0.14.1)
119
+ avm-tools (0.136.1)
120
+ aranha-parsers (~> 0.14, >= 0.14.3)
111
121
  avm (~> 0.42)
112
- avm-eac_ruby_base1 (~> 0.20, >= 0.20.1)
122
+ avm-eac_ruby_base1 (~> 0.21)
113
123
  avm-eac_ubuntu_base0 (~> 0.3)
114
- avm-files (~> 0.3, >= 0.3.2)
124
+ avm-files (~> 0.4)
115
125
  avm-git (~> 0.4)
116
126
  clipboard (~> 1.3, >= 1.3.6)
117
127
  curb (~> 0.9, >= 0.9.11)
118
128
  eac_git (~> 0.12, >= 0.12.2)
119
- eac_ruby_base0 (~> 0.16, >= 0.16.6)
120
- eac_templates (~> 0.3, >= 0.3.1)
129
+ eac_ruby_base0 (~> 0.17)
130
+ eac_templates (~> 0.3, >= 0.3.2)
121
131
  git (~> 1.12)
122
132
  ruby-progressbar (~> 1.11)
123
133
 
@@ -138,10 +148,10 @@ PATH
138
148
  PATH
139
149
  remote: sub/eac_cli
140
150
  specs:
141
- eac_cli (0.27.8)
142
- colorize (~> 0.8.1)
143
- eac_config (~> 0.8)
144
- eac_ruby_utils (~> 0.95)
151
+ eac_cli (0.28.0)
152
+ colorize (~> 0.8, >= 0.8.1)
153
+ eac_config (~> 0.11, >= 0.11.1)
154
+ eac_ruby_utils (~> 0.103)
145
155
 
146
156
  PATH
147
157
  remote: sub/eac_config
@@ -168,11 +178,11 @@ PATH
168
178
  PATH
169
179
  remote: sub/eac_ruby_base0
170
180
  specs:
171
- eac_ruby_base0 (0.16.6)
172
- avm-eac_ruby_base1 (~> 0.8)
173
- eac_cli (~> 0.27, >= 0.27.5)
174
- eac_fs (~> 0.10)
175
- eac_ruby_utils (~> 0.95, >= 0.95.1)
181
+ eac_ruby_base0 (0.17.0)
182
+ avm-eac_ruby_base1 (~> 0.21)
183
+ eac_cli (~> 0.28)
184
+ eac_fs (~> 0.12, >= 0.12.3)
185
+ eac_ruby_utils (~> 0.103)
176
186
 
177
187
  PATH
178
188
  remote: sub/eac_ruby_utils
@@ -213,11 +223,6 @@ GEM
213
223
  avm (~> 0.7)
214
224
  eac_ruby_utils (~> 0.77, >= 0.77.1)
215
225
  eac_templates (~> 0.3)
216
- avm-files (0.3.2)
217
- avm (~> 0.6)
218
- eac_fs (~> 0.5)
219
- eac_ruby_utils (~> 0.76)
220
- eac_templates (~> 0.2)
221
226
  avm-git (0.4.0)
222
227
  avm-files (~> 0.1)
223
228
  eac_git (~> 0.11)
@@ -351,6 +356,7 @@ DEPENDENCIES
351
356
  avm-eac_ruby_base1!
352
357
  avm-eac_webapp_base0!
353
358
  avm-eac_wordpress_base0!
359
+ avm-files!
354
360
  avm-tools!
355
361
  eac_cli!
356
362
  eac_config!
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.29.0'
4
+ VERSION = '0.30.0'
5
5
  end
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency 'avm', '~> 0.41', '>= 0.41.1'
16
16
  s.add_dependency 'avm-eac_generic_base0', '~> 0.5'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.102'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.103'
18
18
 
19
19
  s.add_development_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.1'
20
20
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'avm/eac_ruby_base1/sources/namespace_replacer'
5
+
6
+ module Avm
7
+ module EacRubyBase1
8
+ module Runners
9
+ class Base
10
+ class LibRename
11
+ runner_with :help, :file_replacer do
12
+ desc 'Rename Ruby modules classes Ruby.'
13
+ arg_opt '-f', '--from', 'Rename "from".'
14
+ arg_opt '-t', '--to', 'Rename "to".'
15
+ end
16
+
17
+ def run
18
+ start_banner
19
+ validate
20
+ replacements_banner
21
+ run_filesystem_traverser
22
+ success 'Done!'
23
+ end
24
+
25
+ def validate
26
+ %w[from to].each do |opt|
27
+ fatal_error "No \"#{opt}\" option" if send(opt).blank?
28
+ end
29
+ end
30
+
31
+ def start_banner
32
+ infov 'From', from
33
+ infov 'To', to
34
+ end
35
+
36
+ private
37
+
38
+ def namespace_replacer_uncached
39
+ ::Avm::EacRubyBase1::Sources::NamespaceReplacer.new(from, to)
40
+ end
41
+
42
+ def text_replacer
43
+ @text_replacer ||= super.gsub(from, to).gsub(from_path, to_path)
44
+ .gsub(namespace_replacer.from_result, namespace_replacer.to_result)
45
+ end
46
+
47
+ def replace_file?(file)
48
+ file.extname == '.rb'
49
+ end
50
+
51
+ def replacements_banner
52
+ infov 'Replacements', text_replacer.replacements.count
53
+ text_replacer.replacements.each do |rep|
54
+ infov ' * ', rep
55
+ end
56
+ end
57
+
58
+ def from
59
+ parsed.from.to_s
60
+ end
61
+
62
+ def to
63
+ parsed.to.to_s
64
+ end
65
+
66
+ def from_path
67
+ from.underscore
68
+ end
69
+
70
+ def to_path
71
+ to.underscore
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class NamespaceReplacer
7
+ common_constructor :from, :to
8
+
9
+ def concat_regex(regexes)
10
+ r = regexes.first
11
+ regexes[1..-1].each do |x|
12
+ r = ::Regexp.new(r.source + x.source)
13
+ end
14
+ r
15
+ end
16
+
17
+ def from_result
18
+ /\n#{from_open.source}(.+)#{from_close.source}/m
19
+ end
20
+
21
+ def from_open
22
+ concat_regex(from.split('::')
23
+ .map { |v| / *(?:class|module) +#{::Regexp.quote(v)} *\n/m })
24
+ end
25
+
26
+ def from_close
27
+ concat_regex(from.split('::').count.times.map { / *end *\n/m })
28
+ end
29
+
30
+ def to_result
31
+ "\n\n#{to_open}\\1#{to_close}"
32
+ end
33
+
34
+ def to_open
35
+ s = ''
36
+ to.split('::').each_with_index do |part, index|
37
+ s += (' ' * index) + "module #{part}\n"
38
+ end
39
+ s
40
+ end
41
+
42
+ def to_close
43
+ parts = to.split('::')
44
+ s = ''
45
+ parts.each_with_index do |_part, index|
46
+ tabc = (parts.count - 1 - index)
47
+ tabc -= 1 if index.zero?
48
+ s += (' ' * tabc) + "end\n"
49
+ end
50
+ s
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -16,13 +16,9 @@ module Avm
16
16
  end
17
17
 
18
18
  def run
19
- runner_context.call(:source_banner)
20
- infov 'Gems to update', gem_names.count
21
- gem_names.each do |gem_name|
22
- infov 'Gem to update', gem_name
23
- ::Avm::EacRubyBase1::Sources::UpdateDependencyRequirements
24
- .new(runner_context.call(:source), gem_name).perform
25
- end
19
+ start_banner
20
+ update_gemfile_lock
21
+ process_all_gems
26
22
  end
27
23
 
28
24
  def gemspec
@@ -47,6 +43,24 @@ module Avm
47
43
 
48
44
  gemspec.dependencies.map(&:gem_name)
49
45
  end
46
+
47
+ def process_all_gems
48
+ gem_names.each do |gem_name|
49
+ infov 'Gem to update', gem_name
50
+ ::Avm::EacRubyBase1::Sources::UpdateDependencyRequirements
51
+ .new(runner_context.call(:source), gem_name).perform
52
+ end
53
+ end
54
+
55
+ def start_banner
56
+ runner_context.call(:source_banner)
57
+ infov 'Gems to update', gem_names.count
58
+ end
59
+
60
+ def update_gemfile_lock
61
+ infom 'Updating Gemfile\'s lock...'
62
+ runner_context.call(:source).bundle('update').execute!
63
+ end
50
64
  end
51
65
  end
52
66
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRubyBase1
5
- VERSION = '0.20.1'
5
+ VERSION = '0.21.0'
6
6
  end
7
7
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ local_gemfile = ::File.join(::File.dirname(__FILE__), 'Gemfile.local')
8
+ eval_gemfile local_gemfile if ::File.exist?(local_gemfile)
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ require 'avm/files/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'avm-files'
9
+ s.version = Avm::Files::VERSION
10
+ s.authors = ['Put here the authors']
11
+ s.summary = 'Put here de description.'
12
+
13
+ s.files = Dir['{lib}/**/*']
14
+
15
+ s.add_dependency 'avm', '~> 0.43'
16
+ s.add_dependency 'eac_cli', '~> 0.28'
17
+ s.add_dependency 'eac_fs', '~> 0.12', '>= 0.12.3'
18
+ s.add_dependency 'eac_ruby_utils', '~> 0.103'
19
+ s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
20
+
21
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
22
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/files/appendable/resource_base'
5
+
6
+ module Avm
7
+ module Files
8
+ module Appendable
9
+ class FileContent < ::Avm::Files::Appendable::ResourceBase
10
+ attr_reader :target_path, :content
11
+
12
+ def initialize(deploy, target_path, content)
13
+ super(deploy)
14
+ @target_path = target_path
15
+ @content = content
16
+ end
17
+
18
+ def write_on(target_dir)
19
+ target_dir.join(target_path).write(content)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/files/appendable/resource_base'
5
+
6
+ module Avm
7
+ module Files
8
+ module Appendable
9
+ class PlainDirectory < ::Avm::Files::Appendable::ResourceBase
10
+ attr_reader :source_path
11
+
12
+ def initialize(appender, source_path)
13
+ super(appender)
14
+ @source_path = source_path.to_pathname
15
+ end
16
+
17
+ def write_on(target_dir)
18
+ raise "\"#{source_path}\" is not a directory" unless source_path.directory?
19
+
20
+ ::FileUtils.cp_r("#{source_path}/.", target_dir.to_path)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Files
7
+ module Appendable
8
+ class ResourceBase
9
+ common_constructor :appender
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/envs'
5
+ require 'avm/files/appendable/resource_base'
6
+
7
+ module Avm
8
+ module Files
9
+ module Appendable
10
+ class TarOutputCommand < ::Avm::Files::Appendable::ResourceBase
11
+ attr_reader :command
12
+
13
+ def initialize(appender, command)
14
+ super(appender)
15
+ @command = command
16
+ end
17
+
18
+ def write_on(target_dir)
19
+ command.pipe(
20
+ ::EacRubyUtils::Envs.local.command('tar', '-xf', '-', '-C', target_dir)
21
+ ).execute!
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/files/appendable/resource_base'
5
+ require 'eac_templates/directory'
6
+
7
+ module Avm
8
+ module Files
9
+ module Appendable
10
+ class TemplatizedDirectory < ::Avm::Files::Appendable::ResourceBase
11
+ attr_reader :source_path
12
+
13
+ def initialize(appender, source_path)
14
+ super(appender)
15
+ @source_path = source_path
16
+ end
17
+
18
+ def write_on(target_dir)
19
+ raise 'Variables source not set' if appender.variables_source.blank?
20
+
21
+ ::EacTemplates::Directory.new(source_path).apply(
22
+ appender.variables_source,
23
+ target_dir
24
+ )
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Files
7
+ module Appendable
8
+ require_sub __FILE__
9
+
10
+ attr_reader :variables_source
11
+
12
+ def appended
13
+ @appended ||= []
14
+ end
15
+
16
+ def append_templatized_directories(directories)
17
+ directories.each { |directory| append_templatized_directory(directory) }
18
+ self
19
+ end
20
+
21
+ def append_plain_directory(directory)
22
+ appended << ::Avm::Files::Appendable::PlainDirectory.new(self, directory)
23
+ self
24
+ end
25
+
26
+ def append_tar_output_command(tar_command)
27
+ appended << ::Avm::Files::Appendable::TarOutputCommand.new(self, tar_command)
28
+ self
29
+ end
30
+
31
+ def append_templatized_directory(directory)
32
+ appended << ::Avm::Files::Appendable::TemplatizedDirectory.new(self, directory)
33
+ self
34
+ end
35
+
36
+ def append_file_content(target_path, content)
37
+ appended << ::Avm::Files::Appendable::FileContent
38
+ .new(self, target_path, content)
39
+ self
40
+ end
41
+
42
+ def variables_source_set(source)
43
+ @variables_source = source
44
+ self
45
+ end
46
+
47
+ def write_appended_on(target_dir)
48
+ target_dir = target_dir.to_pathname
49
+ raise "\"#{target_dir}\" is not a directory" unless target_dir.directory?
50
+
51
+ appended.each { |append| append.write_on(target_dir) }
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/files/appendable'
4
+
5
+ module Avm
6
+ module Files
7
+ class Appender
8
+ include ::Avm::Files::Appendable
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+ require 'avm/files/appendable'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module Files
9
+ class Deploy
10
+ include ::Avm::Files::Appendable
11
+ enable_simple_cache
12
+
13
+ attr_reader :build_dir, :target_env, :target_path
14
+
15
+ common_constructor :target_env, :target_path
16
+
17
+ def run
18
+ on_build_dir do
19
+ copy_content_to_build_dir
20
+ mkdir_target
21
+ clear_content
22
+ send_untar_package
23
+ set_target_permission
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def on_build_dir
30
+ @build_dir = ::Dir.mktmpdir
31
+ yield
32
+ ensure
33
+ ::FileUtils.rm_rf(@build_dir)
34
+ end
35
+
36
+ def copy_content_to_build_dir
37
+ write_appended_on(build_dir)
38
+ end
39
+
40
+ def mkdir_target
41
+ target_env.command('mkdir', '-p', target_path).execute!
42
+ end
43
+
44
+ def clear_content
45
+ target_env.command(
46
+ 'find', target_path, '-mindepth', '1', '-maxdepth', '1', '-exec', 'rm', '-rf', '{}', ';'
47
+ ).execute!
48
+ end
49
+
50
+ def send_untar_package
51
+ tar_build_command.pipe(untar_build_command).execute!
52
+ end
53
+
54
+ def set_target_permission
55
+ target_env.command('chmod', '755', target_path).execute!
56
+ end
57
+
58
+ def tar_build_command
59
+ source_env.command('tar', '-czO', '-C', build_dir, '.')
60
+ end
61
+
62
+ def untar_build_command
63
+ target_env.command('tar', '-xzf', '-', '-C', target_path)
64
+ end
65
+
66
+ def source_env
67
+ ::EacRubyUtils::Envs.local
68
+ end
69
+ end
70
+ end
71
+ end