avm-tools 0.74.0 → 0.76.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/avm/eac_rails_base0/instance.rb +2 -5
- data/lib/avm/{rails/runners.rb → eac_rails_base1.rb} +2 -4
- data/lib/avm/{rails → eac_rails_base1}/instance.rb +8 -3
- data/lib/avm/eac_rails_base1/runner.rb +12 -0
- data/lib/avm/eac_rails_base1/runner/bundle.rb +28 -0
- data/lib/avm/eac_rails_base1/runner/code_runner.rb +28 -0
- data/lib/avm/eac_rails_base1/runner_with/bundle.rb +57 -0
- data/lib/avm/eac_redmine_base0/instance.rb +2 -4
- data/lib/avm/{stereotypes/eac_ubuntu_base0.rb → eac_ubuntu_base0.rb} +1 -3
- data/lib/avm/eac_webapp_base0/deploy.rb +17 -40
- data/lib/avm/eac_webapp_base0/deploy/build.rb +48 -0
- data/lib/avm/eac_webapp_base0/deploy/git_info.rb +13 -0
- data/lib/avm/eac_webapp_base0/deploy/version.rb +4 -0
- data/lib/avm/eac_webapp_base0/deploy/write_on_target.rb +18 -0
- data/lib/avm/eac_webapp_base0/instance.rb +2 -2
- data/lib/avm/eac_webapp_base0/runner.rb +12 -0
- data/lib/avm/eac_webapp_base0/runner/apache_host.rb +2 -3
- data/lib/avm/eac_webapp_base0/runner/data.rb +1 -1
- data/lib/avm/eac_webapp_base0/runner/data/dump.rb +1 -1
- data/lib/avm/eac_webapp_base0/runner/data/load.rb +1 -1
- data/lib/avm/eac_webapp_base0/runner/deploy.rb +4 -16
- data/lib/avm/eac_wordpress_base0.rb +9 -0
- data/lib/avm/eac_wordpress_base0/apache_host.rb +25 -0
- data/lib/avm/eac_wordpress_base0/deploy.rb +10 -0
- data/lib/avm/eac_wordpress_base0/instance.rb +24 -0
- data/lib/avm/eac_writings_base0/apache_host.rb +17 -0
- data/lib/avm/eac_writings_base0/deploy.rb +36 -0
- data/lib/avm/eac_writings_base0/instance.rb +11 -0
- data/lib/avm/files/appendable.rb +55 -0
- data/lib/avm/files/appendable/file_content.rb +24 -0
- data/lib/avm/files/appendable/plain_directory.rb +25 -0
- data/lib/avm/files/appendable/resource_base.rb +13 -0
- data/lib/avm/files/appendable/tar_output_command.rb +26 -0
- data/lib/avm/files/appendable/templatized_directory.rb +28 -0
- data/lib/avm/files/appender.rb +11 -0
- data/lib/avm/files/deploy.rb +72 -0
- data/lib/avm/files/formatter.rb +8 -4
- data/lib/avm/git/auto_commit_path.rb +2 -4
- data/lib/avm/git/auto_commit_path/ruby.rb +20 -0
- data/lib/avm/git/commit/deploy.rb +8 -61
- data/lib/avm/instances/runner.rb +40 -0
- data/lib/avm/{stereotypes/postgresql.rb → postgresql.rb} +1 -3
- data/lib/avm/postgresql/instance.rb +63 -0
- data/lib/avm/postgresql/instance/data_unit.rb +39 -0
- data/lib/avm/postgresql/instance_with.rb +18 -0
- data/lib/avm/tools/runner.rb +3 -3
- data/lib/avm/tools/runner/eac_rails_base0.rb +5 -18
- data/lib/avm/tools/runner/eac_rails_base0/apache_path.rb +1 -1
- data/lib/avm/tools/runner/eac_rails_base0/rails_server.rb +7 -12
- data/lib/avm/tools/runner/eac_rails_base0/runner.rb +3 -3
- data/lib/avm/tools/runner/eac_redmine_base0.rb +5 -23
- data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +1 -1
- data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +1 -1
- data/lib/avm/tools/runner/eac_redmine_base0/project_rename.rb +9 -18
- data/lib/avm/tools/runner/eac_wordpress_base0.rb +5 -24
- data/lib/avm/tools/runner/{eac_rails_base0/data.rb → eac_writings_base0.rb} +4 -4
- data/lib/avm/tools/runner/files/format.rb +3 -2
- data/lib/avm/tools/runner/git/auto_commit.rb +11 -0
- data/lib/avm/tools/runner/git/deploy.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- data/template/avm/{stereotypes/eac_ubuntu_base0 → eac_ubuntu_base0}/docker_image/Dockerfile +0 -0
- data/template/avm/{stereotypes/eac_wordpress_base0 → eac_wordpress_base0}/deploy/wp-config.php.template +0 -0
- data/template/avm/eac_writings_base0/deploy/index.html.template +9 -0
- data/vendor/eac_cli/eac_cli.gemspec +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition.rb +35 -3
- data/vendor/eac_cli/lib/eac_cli/definition/base_option.rb +17 -1
- data/vendor/eac_cli/lib/eac_cli/definition/help_formatter.rb +76 -0
- data/vendor/eac_cli/lib/eac_cli/definition/positional_argument.rb +21 -4
- data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +1 -0
- data/vendor/eac_cli/lib/eac_cli/parser/collector.rb +4 -0
- data/vendor/eac_cli/lib/eac_cli/parser/options_collection.rb +27 -64
- data/vendor/eac_cli/lib/eac_cli/parser/parse_result.rb +17 -0
- data/vendor/eac_cli/lib/eac_cli/parser/positional_collection.rb +47 -19
- data/vendor/eac_cli/lib/eac_cli/patches/object/runner_with.rb +2 -1
- data/vendor/eac_cli/lib/eac_cli/runner.rb +4 -0
- data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +96 -0
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/docopt/runner_extension_spec.rb +25 -0
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +48 -40
- data/vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb +57 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs.rb +4 -39
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/read_entry_options.rb +41 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator.rb +4 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/current.rb +9 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/stopped.rb +14 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/debug.rb +17 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/current_spec.rb +26 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/stopped_spec.rb +32 -0
- metadata +48 -33
- data/lib/avm/git/commit/deploy/appended.rb +0 -37
- data/lib/avm/git/commit/deploy/appended/base.rb +0 -17
- data/lib/avm/git/commit/deploy/appended/directory.rb +0 -32
- data/lib/avm/git/commit/deploy/appended/file_content.rb +0 -28
- data/lib/avm/rails/runners/bundle.rb +0 -35
- data/lib/avm/rails/runners/runner.rb +0 -48
- data/lib/avm/stereotypes/eac_wordpress_base0/apache_host.rb +0 -27
- data/lib/avm/stereotypes/eac_wordpress_base0/deploy.rb +0 -12
- data/lib/avm/stereotypes/eac_wordpress_base0/instance.rb +0 -26
- data/lib/avm/stereotypes/postgresql/instance.rb +0 -65
- data/lib/avm/stereotypes/postgresql/instance/data_unit.rb +0 -41
- data/lib/avm/stereotypes/postgresql/instance_with.rb +0 -20
- data/lib/avm/stereotypes/rails.rb +0 -11
- data/lib/avm/tools/runner/eac_rails_base0/apache_host.rb +0 -16
- data/lib/avm/tools/runner/eac_rails_base0/bundle.rb +0 -14
- data/lib/avm/tools/runner/eac_rails_base0/deploy.rb +0 -15
- data/lib/avm/tools/runner/eac_redmine_base0/bundle.rb +0 -14
- data/lib/avm/tools/runner/eac_redmine_base0/data.rb +0 -27
- data/lib/avm/tools/runner/eac_redmine_base0/data/dump.rb +0 -16
- data/lib/avm/tools/runner/eac_redmine_base0/deploy.rb +0 -15
- data/lib/avm/tools/runner/eac_redmine_base0/runner.rb +0 -14
- data/lib/avm/tools/runner/eac_wordpress_base0/apache_host.rb +0 -17
- data/lib/avm/tools/runner/eac_wordpress_base0/data.rb +0 -15
- data/lib/avm/tools/runner/eac_wordpress_base0/deploy.rb +0 -15
@@ -5,13 +5,12 @@ require 'eac_ruby_utils/core_ext'
|
|
5
5
|
|
6
6
|
module Avm
|
7
7
|
module EacWebappBase0
|
8
|
-
|
8
|
+
class Runner < ::Avm::Instances::Runner
|
9
9
|
class ApacheHost < ::EacRubyUtils::Console::DocoptRunner
|
10
10
|
include ::EacCli::DefaultRunner
|
11
11
|
|
12
|
-
stereotype_name = name.deconstantize.demodulize
|
13
12
|
runner_definition do
|
14
|
-
desc
|
13
|
+
desc 'Configure Apache virtual host for instance.'
|
15
14
|
bool_opt '-c', '--certbot', 'Install certbot.'
|
16
15
|
end
|
17
16
|
|
@@ -7,7 +7,7 @@ require 'avm/data/package/dump'
|
|
7
7
|
|
8
8
|
module Avm
|
9
9
|
module EacWebappBase0
|
10
|
-
|
10
|
+
class Runner < ::Avm::Instances::Runner
|
11
11
|
class Data < ::EacRubyUtils::Console::DocoptRunner
|
12
12
|
class Dump < ::EacRubyUtils::Console::DocoptRunner
|
13
13
|
include ::EacRubyUtils::SimpleCache
|
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/simple_cache'
|
|
6
6
|
|
7
7
|
module Avm
|
8
8
|
module EacWebappBase0
|
9
|
-
|
9
|
+
class Runner < ::Avm::Instances::Runner
|
10
10
|
class Data < ::EacRubyUtils::Console::DocoptRunner
|
11
11
|
class Load < ::EacRubyUtils::Console::DocoptRunner
|
12
12
|
include ::EacRubyUtils::SimpleCache
|
@@ -1,17 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'avm/instances/runner'
|
3
4
|
require 'avm/path_string'
|
4
5
|
require 'eac_ruby_utils/console/docopt_runner'
|
5
6
|
require 'eac_ruby_utils/console/speaker'
|
6
7
|
|
7
8
|
module Avm
|
8
9
|
module EacWebappBase0
|
9
|
-
|
10
|
+
class Runner < ::Avm::Instances::Runner
|
10
11
|
class Deploy < ::EacRubyUtils::Console::DocoptRunner
|
11
12
|
include ::EacRubyUtils::Console::Speaker
|
12
13
|
|
13
14
|
DOC = <<~DOCOPT
|
14
|
-
Deploy for
|
15
|
+
Deploy for instance.
|
15
16
|
|
16
17
|
Usage:
|
17
18
|
__PROGRAM__ [options]
|
@@ -22,22 +23,9 @@ module Avm
|
|
22
23
|
-r --reference=<git-reference> Git reference to deploy.
|
23
24
|
-a --append-dirs=<append-dirs> Append directories to deploy (List separated by ":").
|
24
25
|
DOCOPT
|
25
|
-
def initialize(settings = {})
|
26
|
-
super settings.merge(doc: DOC.gsub('%%STEREOTYPE_NAME%%', stereotype_name))
|
27
|
-
end
|
28
26
|
|
29
27
|
def deploy_class
|
30
|
-
stereotype_module.const_get('Deploy')
|
31
|
-
end
|
32
|
-
|
33
|
-
def stereotype_module
|
34
|
-
::Avm::Stereotypes.const_get(stereotype_name)
|
35
|
-
rescue ::NameError
|
36
|
-
::Avm.const_get(stereotype_name)
|
37
|
-
end
|
38
|
-
|
39
|
-
def stereotype_name
|
40
|
-
self.class.name.deconstantize.demodulize
|
28
|
+
context(:stereotype_module).const_get('Deploy')
|
41
29
|
end
|
42
30
|
|
43
31
|
def run
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_webapp_base0/apache_host'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacWordpressBase0
|
7
|
+
class ApacheHost < ::Avm::EacWebappBase0::ApacheHost
|
8
|
+
def document_root
|
9
|
+
instance.read_entry(::Avm::Instances::EntryKeys::FS_PATH)
|
10
|
+
end
|
11
|
+
|
12
|
+
def extra_content
|
13
|
+
"AssignUserID #{system_user} #{system_group}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def system_user
|
17
|
+
instance.read_entry('system.username')
|
18
|
+
end
|
19
|
+
|
20
|
+
def system_group
|
21
|
+
instance.read_entry('system.groupname')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/instances/entry_keys'
|
4
|
+
require 'avm/eac_webapp_base0/instance'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacWordpressBase0
|
8
|
+
class Instance < ::Avm::EacWebappBase0::Instance
|
9
|
+
FILES_UNITS = { uploads: 'wp-content/uploads', themes: 'wp-content/themes' }.freeze
|
10
|
+
|
11
|
+
def database_unit
|
12
|
+
web_url = read_entry(::Avm::Instances::EntryKeys::WEB_URL)
|
13
|
+
super.after_load do
|
14
|
+
info 'Fixing web addresses...'
|
15
|
+
run_sql(<<~SQL)
|
16
|
+
update wp_options
|
17
|
+
set option_value = '#{web_url}'
|
18
|
+
where option_name in ('siteurl', 'home')
|
19
|
+
SQL
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_webapp_base0/apache_host'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacWritingsBase0
|
7
|
+
class ApacheHost < ::Avm::EacWebappBase0::ApacheHost
|
8
|
+
def document_root
|
9
|
+
instance.read_entry(::Avm::Instances::EntryKeys::FS_PATH)
|
10
|
+
end
|
11
|
+
|
12
|
+
def extra_content
|
13
|
+
''
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_webapp_base0/deploy'
|
4
|
+
require 'avm/eac_writings_base0/project'
|
5
|
+
require 'avm/eac_writings_base0/project_build'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacWritingsBase0
|
9
|
+
class Deploy < ::Avm::EacWebappBase0::Deploy
|
10
|
+
def build_content
|
11
|
+
::Avm::EacWritingsBase0::ProjectBuild.new(project, output_file:
|
12
|
+
build_dir.join(pdf_path))
|
13
|
+
end
|
14
|
+
|
15
|
+
def title
|
16
|
+
instance.id.humanize
|
17
|
+
end
|
18
|
+
|
19
|
+
def pdf_path
|
20
|
+
"#{instance.id.underscore}.pdf"
|
21
|
+
end
|
22
|
+
|
23
|
+
def variables_source
|
24
|
+
self
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def project_uncached
|
30
|
+
::Avm::EacWritingsBase0::Project.new(
|
31
|
+
instance.source_instance.read_entry(::Avm::Instances::EntryKeys::FS_PATH)
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
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,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,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,28 @@
|
|
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 TemplatizedDirectory < ::Avm::Files::Appendable::ResourceBase
|
10
|
+
attr_reader :source_path
|
11
|
+
|
12
|
+
def initialize(appender, source_path)
|
13
|
+
super(appender)
|
14
|
+
@source_path = source_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def write_on(target_dir)
|
18
|
+
raise 'Variables source not set' if appender.variables_source.blank?
|
19
|
+
|
20
|
+
::EacRubyUtils::Templates::Directory.new(source_path).apply(
|
21
|
+
appender.variables_source,
|
22
|
+
target_dir
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'addressable'
|
4
|
+
require 'avm/files/appendable'
|
5
|
+
require 'avm/patches/object/template'
|
6
|
+
require 'eac_ruby_utils/core_ext'
|
7
|
+
|
8
|
+
module Avm
|
9
|
+
module Files
|
10
|
+
class Deploy
|
11
|
+
include ::Avm::Files::Appendable
|
12
|
+
enable_simple_cache
|
13
|
+
|
14
|
+
attr_reader :build_dir, :target_env, :target_path
|
15
|
+
|
16
|
+
common_constructor :target_env, :target_path
|
17
|
+
|
18
|
+
def run
|
19
|
+
on_build_dir do
|
20
|
+
copy_content_to_build_dir
|
21
|
+
mkdir_target
|
22
|
+
clear_content
|
23
|
+
send_untar_package
|
24
|
+
set_target_permission
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def on_build_dir
|
31
|
+
@build_dir = ::Dir.mktmpdir
|
32
|
+
yield
|
33
|
+
ensure
|
34
|
+
::FileUtils.rm_rf(@build_dir)
|
35
|
+
end
|
36
|
+
|
37
|
+
def copy_content_to_build_dir
|
38
|
+
write_appended_on(build_dir)
|
39
|
+
end
|
40
|
+
|
41
|
+
def mkdir_target
|
42
|
+
target_env.command('mkdir', '-p', target_path).execute!
|
43
|
+
end
|
44
|
+
|
45
|
+
def clear_content
|
46
|
+
target_env.command(
|
47
|
+
'find', target_path, '-mindepth', '1', '-maxdepth', '1', '-exec', 'rm', '-rf', '{}', ';'
|
48
|
+
).execute!
|
49
|
+
end
|
50
|
+
|
51
|
+
def send_untar_package
|
52
|
+
tar_build_command.pipe(untar_build_command).execute!
|
53
|
+
end
|
54
|
+
|
55
|
+
def set_target_permission
|
56
|
+
target_env.command('chmod', '755', target_path).execute!
|
57
|
+
end
|
58
|
+
|
59
|
+
def tar_build_command
|
60
|
+
source_env.command('tar', '-czO', '-C', build_dir, '.')
|
61
|
+
end
|
62
|
+
|
63
|
+
def untar_build_command
|
64
|
+
target_env.command('tar', '-xzf', '-', '-C', target_path)
|
65
|
+
end
|
66
|
+
|
67
|
+
def source_env
|
68
|
+
::EacRubyUtils::Envs.local
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|