dapp 0.5.13 → 0.6.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.
- checksums.yaml +4 -4
- data/bin/dapp +3 -0
- data/config/en/common.yml +35 -6
- data/config/en/net_status.yml +20 -6
- data/lib/dapp.rb +53 -27
- data/lib/dapp/application.rb +48 -27
- data/lib/dapp/application/git_artifact.rb +1 -1
- data/lib/dapp/application/path.rb +2 -18
- data/lib/dapp/application/tags.rb +5 -5
- data/lib/dapp/build/stage/artifact.rb +8 -3
- data/lib/dapp/build/stage/base.rb +43 -30
- data/lib/dapp/build/stage/{infra_install.rb → before_install.rb} +6 -6
- data/lib/dapp/build/stage/before_setup.rb +27 -0
- data/lib/dapp/build/stage/docker_instructions.rb +12 -1
- data/lib/dapp/build/stage/from.rb +4 -3
- data/lib/dapp/build/stage/{source_1_archive.rb → ga_archive.rb} +7 -7
- data/lib/dapp/build/stage/{source_1_archive_dependencies.rb → ga_archive_dependencies.rb} +4 -4
- data/lib/dapp/build/stage/{source_base.rb → ga_base.rb} +31 -7
- data/lib/dapp/build/stage/{source_dependencies_base.rb → ga_dependencies_base.rb} +5 -6
- data/lib/dapp/build/stage/{source_5.rb → ga_latest_patch.rb} +6 -6
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +21 -0
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +21 -0
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +21 -0
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +31 -0
- data/lib/dapp/build/stage/install/install.rb +31 -0
- data/lib/dapp/build/stage/mod/artifact.rb +9 -19
- data/lib/dapp/build/stage/mod/group.rb +42 -0
- data/lib/dapp/build/stage/mod/logging.rb +62 -26
- data/lib/dapp/build/stage/setup/chef_cookbooks.rb +37 -0
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +25 -0
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +31 -0
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +25 -0
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +27 -0
- data/lib/dapp/build/stage/setup/setup.rb +31 -0
- data/lib/dapp/builder/base.rb +9 -6
- data/lib/dapp/builder/chef.rb +128 -107
- data/lib/dapp/builder/chef/berksfile.rb +3 -0
- data/lib/dapp/builder/shell.rb +4 -3
- data/lib/dapp/cli.rb +8 -6
- data/lib/dapp/cli/base.rb +6 -1
- data/lib/dapp/cli/bp.rb +41 -0
- data/lib/dapp/cli/build.rb +17 -4
- data/lib/dapp/cli/cleanup.rb +24 -0
- data/lib/dapp/cli/list.rb +2 -2
- data/lib/dapp/cli/push.rb +8 -9
- data/lib/dapp/cli/run.rb +3 -4
- data/lib/dapp/cli/spush.rb +20 -0
- data/lib/dapp/cli/stages.rb +2 -0
- data/lib/dapp/cli/stages/cleanup.rb +7 -3
- data/lib/dapp/cli/stages/flush.rb +6 -3
- data/lib/dapp/config/application.rb +17 -11
- data/lib/dapp/config/chef.rb +4 -0
- data/lib/dapp/config/docker.rb +3 -2
- data/lib/dapp/config/git_artifact.rb +1 -2
- data/lib/dapp/config/main.rb +5 -2
- data/lib/dapp/config/shell.rb +20 -16
- data/lib/dapp/docker_registry.rb +32 -0
- data/lib/dapp/docker_registry/base.rb +47 -0
- data/lib/dapp/docker_registry/default.rb +18 -0
- data/lib/dapp/docker_registry/mod/authorization.rb +62 -0
- data/lib/dapp/docker_registry/mod/request.rb +44 -0
- data/lib/dapp/error/image.rb +6 -0
- data/lib/dapp/error/project.rb +6 -0
- data/lib/dapp/error/registry.rb +6 -0
- data/lib/dapp/exception/registry.rb +6 -0
- data/lib/dapp/git_artifact.rb +6 -7
- data/lib/dapp/git_repo/base.rb +1 -1
- data/lib/dapp/git_repo/remote.rb +6 -38
- data/lib/dapp/helper/sha256.rb +3 -3
- data/lib/dapp/helper/shellout.rb +25 -7
- data/lib/dapp/helper/streaming.rb +1 -3
- data/lib/dapp/image/argument.rb +31 -18
- data/lib/dapp/image/docker.rb +15 -8
- data/lib/dapp/image/stage.rb +10 -12
- data/lib/dapp/lock/base.rb +44 -0
- data/lib/dapp/lock/error.rb +14 -0
- data/lib/dapp/lock/file.rb +33 -0
- data/lib/dapp/prctl.rb +22 -0
- data/lib/dapp/project.rb +75 -0
- data/lib/dapp/project/command/bp.rb +24 -0
- data/lib/dapp/project/command/build.rb +21 -0
- data/lib/dapp/project/command/cleanup.rb +24 -0
- data/lib/dapp/project/command/common.rb +51 -0
- data/lib/dapp/project/command/list.rb +14 -0
- data/lib/dapp/project/command/push.rb +21 -0
- data/lib/dapp/project/command/run.rb +15 -0
- data/lib/dapp/project/command/spush.rb +17 -0
- data/lib/dapp/project/command/stages_cleanup.rb +70 -0
- data/lib/dapp/project/command/stages_flush.rb +18 -0
- data/lib/dapp/project/dappfile.rb +70 -0
- data/lib/dapp/project/lock.rb +27 -0
- data/lib/dapp/project/logging/base.rb +107 -0
- data/lib/dapp/project/logging/process.rb +104 -0
- data/lib/dapp/project/paint.rb +16 -0
- data/lib/dapp/project/ssh_agent.rb +77 -0
- data/lib/dapp/version.rb +1 -1
- metadata +74 -27
- data/lib/dapp/application/deps/gitartifact.rb +0 -39
- data/lib/dapp/application/logging.rb +0 -120
- data/lib/dapp/application/system_shellout.rb +0 -63
- data/lib/dapp/build/stage/chef_cookbooks.rb +0 -33
- data/lib/dapp/build/stage/infra_setup.rb +0 -27
- data/lib/dapp/build/stage/install.rb +0 -27
- data/lib/dapp/build/stage/setup.rb +0 -27
- data/lib/dapp/build/stage/source_1.rb +0 -21
- data/lib/dapp/build/stage/source_1_dependencies.rb +0 -27
- data/lib/dapp/build/stage/source_2.rb +0 -17
- data/lib/dapp/build/stage/source_2_dependencies.rb +0 -17
- data/lib/dapp/build/stage/source_3.rb +0 -17
- data/lib/dapp/build/stage/source_3_dependencies.rb +0 -23
- data/lib/dapp/build/stage/source_4.rb +0 -21
- data/lib/dapp/build/stage/source_4_dependencies.rb +0 -27
- data/lib/dapp/cli/smartpush.rb +0 -19
- data/lib/dapp/controller.rb +0 -119
- data/lib/dapp/error/controller.rb +0 -6
- data/lib/dapp/helper/log.rb +0 -73
@@ -1,63 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# Application
|
3
|
-
class Application
|
4
|
-
# SystemShellout
|
5
|
-
module SystemShellout
|
6
|
-
SYSTEM_SHELLOUT_IMAGE = 'ubuntu:14.04'
|
7
|
-
SYSTEM_SHELLOUT_VERSION = 4
|
8
|
-
|
9
|
-
def system_shellout_container_name
|
10
|
-
"dapp_system_shellout_#{hashsum [SYSTEM_SHELLOUT_VERSION,
|
11
|
-
SYSTEM_SHELLOUT_IMAGE,
|
12
|
-
Deps::Gitartifact::GITARTIFACT_IMAGE]}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def system_shellout_container
|
16
|
-
@system_shellout_container ||= begin
|
17
|
-
if shellout("docker inspect #{system_shellout_container_name}").exitstatus.nonzero?
|
18
|
-
volumes_from = [gitartifact_container]
|
19
|
-
log_secondary_process(t(code: 'process.system_shellout_container_loading'), short: true) do
|
20
|
-
shellout! ['docker run --detach --privileged',
|
21
|
-
"--name #{system_shellout_container_name}",
|
22
|
-
*volumes_from.map { |container| "--volumes-from #{container}" },
|
23
|
-
'--volume /:/.system_shellout_root',
|
24
|
-
"#{SYSTEM_SHELLOUT_IMAGE} bash -ec 'while true ; do sleep 1 ; done'"].join(' ')
|
25
|
-
|
26
|
-
shellout! ["docker exec #{system_shellout_container_name}",
|
27
|
-
"bash -ec '#{[
|
28
|
-
'export DEBIAN_FRONTEND=noninteractive',
|
29
|
-
'mkdir -p /.system_shellout_root/.dapp',
|
30
|
-
'mount --rbind /.dapp /.system_shellout_root/.dapp',
|
31
|
-
# KOSTYL 0.5 only {
|
32
|
-
"mkdir -p /.system_shellout_root/tmp/dapp_system_shellout/usr/bin",
|
33
|
-
'mount --rbind /usr/bin /.system_shellout_root/tmp/dapp_system_shellout/usr/bin',
|
34
|
-
'mount --rbind /.system_shellout_root/sys /sys',
|
35
|
-
'if [ -d /sys/fs/selinux ] ; then mount -o remount,ro,bind /sys/fs/selinux ; fi',
|
36
|
-
'apt-get update -qq',
|
37
|
-
'apt-get install -qq openssh-client'
|
38
|
-
# } KOSTYL 0.5 only
|
39
|
-
].join(' && ')}'"].join(' ')
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
system_shellout_container_name
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def system_shellout(command, **kwargs)
|
48
|
-
shellout _to_system_shellout_command(command), **kwargs
|
49
|
-
end
|
50
|
-
|
51
|
-
def system_shellout!(command, **kwargs)
|
52
|
-
shellout! _to_system_shellout_command(command), **kwargs
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def _to_system_shellout_command(command)
|
58
|
-
cmd = shellout_pack ["cd #{Dir.pwd}", command].join(' && ')
|
59
|
-
"docker exec #{system_shellout_container} chroot /.system_shellout_root bash -ec '#{cmd}'"
|
60
|
-
end
|
61
|
-
end # SystemShellout
|
62
|
-
end # Application
|
63
|
-
end # Dapp
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# ChefCookbooks
|
5
|
-
class ChefCookbooks < Base
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Setup.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def dependencies
|
12
|
-
[application.builder.chef_cookbooks_checksum]
|
13
|
-
end
|
14
|
-
|
15
|
-
def image
|
16
|
-
super do |image|
|
17
|
-
application.builder.chef_cookbooks(image)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
|
23
|
-
def should_be_not_detailed?
|
24
|
-
true
|
25
|
-
end
|
26
|
-
|
27
|
-
def ignore_log_commands?
|
28
|
-
true
|
29
|
-
end
|
30
|
-
end # ChefCookbooks
|
31
|
-
end # Stage
|
32
|
-
end # Build
|
33
|
-
end # Dapp
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# InfraSetup
|
5
|
-
class InfraSetup < Base
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source2.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def empty?
|
12
|
-
super && !application.builder.infra_setup?
|
13
|
-
end
|
14
|
-
|
15
|
-
def dependencies
|
16
|
-
prev_stage.prev_stage.dependencies
|
17
|
-
end
|
18
|
-
|
19
|
-
def image
|
20
|
-
super do |image|
|
21
|
-
application.builder.infra_setup(image)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end # InfraSetup
|
25
|
-
end # Stage
|
26
|
-
end # Build
|
27
|
-
end # Dapp
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Install
|
5
|
-
class Install < Base
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source1.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def empty?
|
12
|
-
super && !application.builder.install?
|
13
|
-
end
|
14
|
-
|
15
|
-
def dependencies
|
16
|
-
prev_stage.prev_stage.dependencies
|
17
|
-
end
|
18
|
-
|
19
|
-
def image
|
20
|
-
super do |image|
|
21
|
-
application.builder.install(image)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end # Install
|
25
|
-
end # Stage
|
26
|
-
end # Build
|
27
|
-
end # Dapp
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Setup
|
5
|
-
class Setup < Base
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source3.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def empty?
|
12
|
-
super && !application.builder.setup?
|
13
|
-
end
|
14
|
-
|
15
|
-
def dependencies
|
16
|
-
prev_stage.prev_stage.dependencies
|
17
|
-
end
|
18
|
-
|
19
|
-
def image
|
20
|
-
super do |image|
|
21
|
-
application.builder.setup(image)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end # Setup
|
25
|
-
end # Stage
|
26
|
-
end # Build
|
27
|
-
end # Dapp
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source1
|
5
|
-
class Source1 < SourceBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source1Dependencies.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def prev_source_stage
|
12
|
-
dependencies_stage.prev_stage
|
13
|
-
end
|
14
|
-
|
15
|
-
def next_source_stage
|
16
|
-
super.next_stage
|
17
|
-
end
|
18
|
-
end # Source1
|
19
|
-
end # Stage
|
20
|
-
end # Build
|
21
|
-
end # Dapp
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source1Dependencies
|
5
|
-
class Source1Dependencies < SourceDependenciesBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source1Archive.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def dependencies
|
12
|
-
[install_dependencies_files_checksum, application.builder.install_checksum]
|
13
|
-
end
|
14
|
-
|
15
|
-
def empty?
|
16
|
-
super || dependencies_empty?
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def install_dependencies_files_checksum
|
22
|
-
@install_dependencies_files_checksum ||= dependencies_files_checksum(application.config._install_dependencies)
|
23
|
-
end
|
24
|
-
end # Source1Dependencies
|
25
|
-
end # Stage
|
26
|
-
end # Build
|
27
|
-
end # Dapp
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source2
|
5
|
-
class Source2 < SourceBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source2Dependencies.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def prev_source_stage
|
12
|
-
super.prev_stage
|
13
|
-
end
|
14
|
-
end # Source2
|
15
|
-
end # Stage
|
16
|
-
end # Build
|
17
|
-
end # Dapp
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source2Dependencies
|
5
|
-
class Source2Dependencies < SourceDependenciesBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Artifact.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def dependencies
|
12
|
-
[application.builder.infra_setup_checksum]
|
13
|
-
end
|
14
|
-
end # Source2Dependencies
|
15
|
-
end # Stage
|
16
|
-
end # Build
|
17
|
-
end # Dapp
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source3
|
5
|
-
class Source3 < SourceBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source3Dependencies.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def next_source_stage
|
12
|
-
super.next_stage
|
13
|
-
end
|
14
|
-
end # Source3
|
15
|
-
end # Stage
|
16
|
-
end # Build
|
17
|
-
end # Dapp
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source3Dependencies
|
5
|
-
class Source3Dependencies < SourceDependenciesBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = InfraSetup.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def dependencies
|
12
|
-
[setup_dependencies_files_checksum, application.builder.setup_checksum]
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def setup_dependencies_files_checksum
|
18
|
-
@setup_files_checksum ||= dependencies_files_checksum(application.config._setup_dependencies)
|
19
|
-
end
|
20
|
-
end # Source3Dependencies
|
21
|
-
end # Stage
|
22
|
-
end # Build
|
23
|
-
end # Dapp
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source4
|
5
|
-
class Source4 < SourceBase
|
6
|
-
def initialize(application, next_stage)
|
7
|
-
@prev_stage = Source4Dependencies.new(application, self)
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def prev_source_stage
|
12
|
-
super.prev_stage
|
13
|
-
end
|
14
|
-
|
15
|
-
def next_source_stage
|
16
|
-
next_stage
|
17
|
-
end
|
18
|
-
end # Source4
|
19
|
-
end # Stage
|
20
|
-
end # Build
|
21
|
-
end # Dapp
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Build
|
3
|
-
module Stage
|
4
|
-
# Source4Dependencies
|
5
|
-
class Source4Dependencies < SourceDependenciesBase
|
6
|
-
MAX_PATCH_SIZE = 1024 * 1024
|
7
|
-
|
8
|
-
def initialize(application, next_stage)
|
9
|
-
@prev_stage = ChefCookbooks.new(application, self)
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
def dependencies
|
14
|
-
[(changes_size_since_source3 / MAX_PATCH_SIZE).to_i]
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def changes_size_since_source3
|
20
|
-
application.git_artifacts.map do |git_artifact|
|
21
|
-
git_artifact.patch_size(prev_stage.prev_stage.prev_stage.layer_commit(git_artifact), git_artifact.latest_commit)
|
22
|
-
end.reduce(0, :+)
|
23
|
-
end
|
24
|
-
end # Source4Dependencies
|
25
|
-
end # Stage
|
26
|
-
end # Build
|
27
|
-
end # Dapp
|
data/lib/dapp/cli/smartpush.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'mixlib/cli'
|
2
|
-
|
3
|
-
module Dapp
|
4
|
-
class CLI
|
5
|
-
# CLI smartpush subcommand
|
6
|
-
class Smartpush < Push
|
7
|
-
banner <<BANNER.freeze
|
8
|
-
Version: #{Dapp::VERSION}
|
9
|
-
|
10
|
-
Usage:
|
11
|
-
dapp smartpush [options] [PATTERN ...] REPOPREFIX
|
12
|
-
|
13
|
-
PATTERN Applications to process [default: *].
|
14
|
-
REPOPREFIX Pushed image name prefix.
|
15
|
-
Options:
|
16
|
-
BANNER
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/dapp/controller.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# Controller
|
3
|
-
class Controller
|
4
|
-
include Helper::Log
|
5
|
-
include Helper::Shellout
|
6
|
-
|
7
|
-
attr_reader :cli_options, :patterns
|
8
|
-
|
9
|
-
def initialize(cli_options: {}, patterns: nil)
|
10
|
-
@cli_options = cli_options
|
11
|
-
@cli_options[:log_indent] = 0
|
12
|
-
|
13
|
-
@patterns = patterns || []
|
14
|
-
@patterns << '*' unless @patterns.any?
|
15
|
-
|
16
|
-
paint_initialize
|
17
|
-
Helper::I18n.initialize
|
18
|
-
end
|
19
|
-
|
20
|
-
def run(docker_options, command)
|
21
|
-
raise Error::Controller, code: :run_command_unexpected_apps_number unless build_configs.one?
|
22
|
-
Application.new(config: build_configs.first, cli_options: cli_options, ignore_git_fetch: true).run(docker_options, command)
|
23
|
-
end
|
24
|
-
|
25
|
-
def build
|
26
|
-
build_configs.each do |config|
|
27
|
-
log_step(config._name)
|
28
|
-
with_log_indent do
|
29
|
-
Application.new(config: config, cli_options: cli_options).build!
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def list
|
35
|
-
build_configs.each { |config| log(config._name) }
|
36
|
-
end
|
37
|
-
|
38
|
-
def push(repo)
|
39
|
-
raise Error::Controller, code: :push_command_unexpected_apps_number unless build_configs.one?
|
40
|
-
Application.new(config: build_configs.first, cli_options: cli_options, ignore_git_fetch: true).export!(repo)
|
41
|
-
end
|
42
|
-
|
43
|
-
def smartpush(repo_prefix)
|
44
|
-
build_configs.each do |config|
|
45
|
-
log_step(config._name)
|
46
|
-
repo = File.join(repo_prefix, config._name)
|
47
|
-
with_log_indent { Application.new(config: config, cli_options: cli_options, ignore_git_fetch: true).export!(repo) }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def stages_flush
|
52
|
-
build_configs.map(&:_basename).uniq.each do |basename|
|
53
|
-
log(basename)
|
54
|
-
shellout(%{docker rmi $(docker images --format="{{.Repository}}:{{.Tag}}" #{basename}-dappstage)})
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def stages_cleanup
|
59
|
-
build_configs.map(&:_basename).uniq.each do |basename|
|
60
|
-
log(basename)
|
61
|
-
shellout(%{docker rmi $(docker images -f "dangling=true" -f "label=dapp=#{basename}" -q)})
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
def build_configs
|
68
|
-
@configs ||= begin
|
69
|
-
if File.exist? dappfile_path
|
70
|
-
dappfiles = dappfile_path
|
71
|
-
elsif (dappfiles = dapps_dappfiles_pathes).empty? && (dappfiles = search_dappfile_up).nil?
|
72
|
-
raise Error::Controller, code: :dappfile_not_found
|
73
|
-
end
|
74
|
-
Array(dappfiles).map { |dappfile| apps(dappfile, app_filters: patterns) }.flatten.tap do |apps|
|
75
|
-
raise Error::Controller, code: :no_such_app, data: { patterns: patterns.join(', ') } if apps.empty?
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def apps(dappfile_path, app_filters:)
|
81
|
-
config = Config::Main.new(dappfile_path: dappfile_path) do |conf|
|
82
|
-
begin
|
83
|
-
conf.instance_eval File.read(dappfile_path), dappfile_path
|
84
|
-
rescue SyntaxError, StandardError => e
|
85
|
-
backtrace = e.backtrace.find { |line| line.start_with?(dappfile_path) }
|
86
|
-
message = e.is_a?(NoMethodError) ? e.message[/.*(?= for)/] : e.message
|
87
|
-
message = "#{backtrace[/.*(?=:in)/]}: #{message}" if backtrace
|
88
|
-
raise Error::Dappfile, code: :incorrect, data: { error: e.class.name, message: message }
|
89
|
-
end
|
90
|
-
end
|
91
|
-
config._apps.select { |app| app_filters.any? { |pattern| File.fnmatch(pattern, app._name) } }
|
92
|
-
end
|
93
|
-
|
94
|
-
def dappfile_path
|
95
|
-
File.join [cli_options[:dir], 'Dappfile'].compact
|
96
|
-
end
|
97
|
-
|
98
|
-
def dapps_dappfiles_pathes
|
99
|
-
Dir.glob(File.join([cli_options[:dir], '.dapps', '*', 'Dappfile'].compact))
|
100
|
-
end
|
101
|
-
|
102
|
-
def search_dappfile_up
|
103
|
-
cdir = Pathname(File.expand_path(cli_options[:dir] || Dir.pwd))
|
104
|
-
until (cdir = cdir.parent).root?
|
105
|
-
next unless (path = cdir.join('Dappfile')).exist?
|
106
|
-
return path.to_s
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def paint_initialize
|
111
|
-
Paint.mode = case cli_options[:log_color]
|
112
|
-
when 'auto' then STDOUT.tty? ? 8 : 0
|
113
|
-
when 'on' then 8
|
114
|
-
when 'off' then 0
|
115
|
-
else raise
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end # Controller
|
119
|
-
end # Dapp
|