dapp 0.8.0 → 0.9.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 +5 -5
- data/config/en/common.yml +6 -4
- data/config/en/net_status.yml +8 -7
- data/lib/dapp.rb +157 -139
- data/lib/dapp/cli.rb +6 -16
- data/lib/dapp/cli/base.rb +3 -5
- data/lib/dapp/config/base.rb +19 -7
- data/lib/dapp/config/directive/base.rb +0 -1
- data/lib/dapp/config/error/config.rb +7 -0
- data/lib/dapp/core_ext/hash.rb +0 -2
- data/lib/dapp/core_ext/pathname.rb +1 -3
- data/lib/dapp/{project.rb → dapp.rb} +2 -21
- data/lib/dapp/{project → dapp}/chef.rb +2 -4
- data/lib/dapp/{project → dapp}/dappfile.rb +5 -7
- data/lib/dapp/{project → dapp}/deps/base.rb +3 -6
- data/lib/dapp/{project → dapp}/deps/gitartifact.rb +2 -5
- data/lib/dapp/{project → dapp}/git_artifact.rb +2 -4
- data/lib/dapp/{project → dapp}/lock.rb +3 -5
- data/lib/dapp/{project → dapp}/logging/base.rb +2 -5
- data/lib/dapp/{project → dapp}/logging/i18n.rb +2 -3
- data/lib/dapp/{project → dapp}/logging/paint.rb +2 -4
- data/lib/dapp/{project → dapp}/logging/process.rb +2 -5
- data/lib/dapp/{project → dapp}/shellout/base.rb +2 -4
- data/lib/dapp/{project → dapp}/shellout/streaming.rb +3 -8
- data/lib/dapp/{project → dapp}/ssh_agent.rb +6 -9
- data/lib/dapp/dimg.rb +1 -192
- data/lib/dapp/dimg/artifact.rb +24 -0
- data/lib/dapp/dimg/build/stage/after_install_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/after_setup_artifact.rb +18 -0
- data/lib/dapp/dimg/build/stage/artifact_base.rb +80 -0
- data/lib/dapp/dimg/build/stage/artifact_default.rb +63 -0
- data/lib/dapp/dimg/build/stage/base.rb +210 -0
- data/lib/dapp/dimg/build/stage/before_install.rb +33 -0
- data/lib/dapp/dimg/build/stage/before_install_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/before_setup.rb +31 -0
- data/lib/dapp/dimg/build/stage/before_setup_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/build_artifact.rb +31 -0
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +25 -0
- data/lib/dapp/dimg/build/stage/from.rb +50 -0
- data/lib/dapp/dimg/build/stage/ga_archive.rb +28 -0
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +27 -0
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/ga_base.rb +80 -0
- data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +20 -0
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +54 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +64 -0
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/install.rb +35 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +42 -0
- data/lib/dapp/dimg/build/stage/mod/logging.rb +101 -0
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +32 -0
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/setup.rb +35 -0
- data/lib/dapp/dimg/builder.rb +6 -0
- data/lib/dapp/{builder → dimg/builder}/base.rb +4 -5
- data/lib/dapp/{builder → dimg/builder}/chef.rb +41 -33
- data/lib/dapp/dimg/builder/chef/berksfile.rb +121 -0
- data/lib/dapp/dimg/builder/chef/cookbook.rb +285 -0
- data/lib/dapp/dimg/builder/chef/cookbook_metadata.rb +106 -0
- data/lib/dapp/{builder → dimg/builder}/none.rb +4 -5
- data/lib/dapp/{builder → dimg/builder}/shell.rb +5 -6
- data/lib/dapp/dimg/cli/base.rb +16 -0
- data/lib/dapp/dimg/cli/bp.rb +37 -0
- data/lib/dapp/dimg/cli/build.rb +64 -0
- data/lib/dapp/dimg/cli/build_context.rb +18 -0
- data/lib/dapp/dimg/cli/build_context/export.rb +26 -0
- data/lib/dapp/dimg/cli/build_context/import.rb +17 -0
- data/lib/dapp/dimg/cli/cleanup.rb +22 -0
- data/lib/dapp/dimg/cli/cli.rb +1 -0
- data/lib/dapp/dimg/cli/dimg.rb +30 -0
- data/lib/dapp/dimg/cli/list.rb +17 -0
- data/lib/dapp/dimg/cli/mrproper.rb +26 -0
- data/lib/dapp/dimg/cli/push.rb +61 -0
- data/lib/dapp/dimg/cli/run.rb +59 -0
- data/lib/dapp/{cli → dimg/cli}/spush.rb +7 -7
- data/lib/dapp/dimg/cli/stage_image.rb +24 -0
- data/lib/dapp/dimg/cli/stages.rb +22 -0
- data/lib/dapp/dimg/cli/stages/cleanup_local.rb +44 -0
- data/lib/dapp/dimg/cli/stages/cleanup_repo.rb +26 -0
- data/lib/dapp/dimg/cli/stages/flush_local.rb +23 -0
- data/lib/dapp/dimg/cli/stages/flush_repo.rb +24 -0
- data/lib/dapp/dimg/cli/stages/pull.rb +28 -0
- data/lib/dapp/dimg/cli/stages/push.rb +24 -0
- data/lib/dapp/dimg/cli/tag.rb +24 -0
- data/lib/dapp/dimg/config/artifact_dimg.rb +17 -0
- data/lib/dapp/dimg/config/artifact_group.rb +47 -0
- data/lib/dapp/dimg/config/base.rb +7 -0
- data/lib/dapp/dimg/config/dimg.rb +24 -0
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +177 -0
- data/lib/dapp/dimg/config/dimg/validation.rb +126 -0
- data/lib/dapp/dimg/config/dimg_group.rb +61 -0
- data/lib/dapp/dimg/config/dimg_group_base.rb +54 -0
- data/lib/dapp/dimg/config/dimg_group_main.rb +22 -0
- data/lib/dapp/dimg/config/directive/artifact.rb +70 -0
- data/lib/dapp/dimg/config/directive/artifact_base.rb +97 -0
- data/lib/dapp/dimg/config/directive/base.rb +9 -0
- data/lib/dapp/dimg/config/directive/chef.rb +68 -0
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +15 -0
- data/lib/dapp/dimg/config/directive/docker/base.rb +22 -0
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +82 -0
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +47 -0
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +58 -0
- data/lib/dapp/dimg/config/directive/mount.rb +27 -0
- data/lib/dapp/dimg/config/directive/shell/artifact.rb +18 -0
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +65 -0
- data/lib/dapp/dimg/dapp/command.rb +21 -0
- data/lib/dapp/dimg/dapp/command/bp.rb +20 -0
- data/lib/dapp/dimg/dapp/command/build.rb +22 -0
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +27 -0
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +55 -0
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +71 -0
- data/lib/dapp/dimg/dapp/command/cleanup.rb +23 -0
- data/lib/dapp/dimg/dapp/command/common.rb +96 -0
- data/lib/dapp/dimg/dapp/command/list.rb +19 -0
- data/lib/dapp/dimg/dapp/command/mrproper.rb +75 -0
- data/lib/dapp/dimg/dapp/command/push.rb +27 -0
- data/lib/dapp/dimg/dapp/command/run.rb +15 -0
- data/lib/dapp/dimg/dapp/command/spush.rb +17 -0
- data/lib/dapp/dimg/dapp/command/stage_image.rb +14 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +137 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +124 -0
- data/lib/dapp/dimg/dapp/command/stages/common.rb +85 -0
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +21 -0
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +21 -0
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +26 -0
- data/lib/dapp/dimg/dapp/command/stages/push.rb +22 -0
- data/lib/dapp/dimg/dapp/command/tag.rb +17 -0
- data/lib/dapp/dimg/dimg.rb +192 -0
- data/lib/dapp/dimg/dimg/git_artifact.rb +26 -0
- data/lib/dapp/dimg/dimg/path.rb +37 -0
- data/lib/dapp/dimg/dimg/stages.rb +60 -0
- data/lib/dapp/dimg/dimg/tags.rb +65 -0
- data/lib/dapp/dimg/docker_registry.rb +37 -0
- data/lib/dapp/dimg/docker_registry/base.rb +109 -0
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +63 -0
- data/lib/dapp/dimg/docker_registry/base/request.rb +34 -0
- data/lib/dapp/dimg/docker_registry/default.rb +18 -0
- data/lib/dapp/dimg/error/base.rb +7 -0
- data/lib/dapp/dimg/error/build.rb +7 -0
- data/lib/dapp/dimg/error/chef.rb +11 -0
- data/lib/dapp/dimg/error/command.rb +7 -0
- data/lib/dapp/dimg/error/config.rb +7 -0
- data/lib/dapp/dimg/error/dimg.rb +7 -0
- data/lib/dapp/dimg/error/lock.rb +7 -0
- data/lib/dapp/dimg/error/registry.rb +7 -0
- data/lib/dapp/dimg/error/rugged.rb +7 -0
- data/lib/dapp/dimg/error/shellout.rb +7 -0
- data/lib/dapp/dimg/error/tar_writer.rb +7 -0
- data/lib/dapp/dimg/exception/base.rb +7 -0
- data/lib/dapp/dimg/exception/introspect_image.rb +7 -0
- data/lib/dapp/dimg/exception/registry.rb +7 -0
- data/lib/dapp/dimg/filelock.rb +43 -0
- data/lib/dapp/dimg/git_artifact.rb +241 -18
- data/lib/dapp/dimg/git_repo/base.rb +90 -0
- data/lib/dapp/dimg/git_repo/own.rb +39 -0
- data/lib/dapp/dimg/git_repo/remote.rb +50 -0
- data/lib/dapp/dimg/image/argument.rb +143 -0
- data/lib/dapp/dimg/image/docker.rb +127 -0
- data/lib/dapp/dimg/image/scratch.rb +32 -0
- data/lib/dapp/dimg/image/stage.rb +95 -0
- data/lib/dapp/dimg/lock/base.rb +51 -0
- data/lib/dapp/dimg/lock/file.rb +48 -0
- data/lib/dapp/error/base.rb +0 -1
- data/lib/dapp/error/dapp.rb +5 -0
- data/lib/dapp/error/dappfile.rb +0 -1
- data/lib/dapp/error/shellout.rb +0 -1
- data/lib/dapp/exception/base.rb +0 -1
- data/lib/dapp/helper/cli.rb +5 -6
- data/lib/dapp/helper/net_status.rb +0 -1
- data/lib/dapp/helper/sha256.rb +0 -1
- data/lib/dapp/helper/trivia.rb +0 -1
- data/lib/dapp/prctl.rb +0 -1
- data/lib/dapp/version.rb +1 -2
- metadata +172 -140
- data/lib/dapp/artifact.rb +0 -23
- data/lib/dapp/build/stage/after_install_artifact.rb +0 -13
- data/lib/dapp/build/stage/after_setup_artifact.rb +0 -17
- data/lib/dapp/build/stage/artifact_base.rb +0 -80
- data/lib/dapp/build/stage/artifact_default.rb +0 -63
- data/lib/dapp/build/stage/base.rb +0 -203
- data/lib/dapp/build/stage/before_install.rb +0 -32
- data/lib/dapp/build/stage/before_install_artifact.rb +0 -13
- data/lib/dapp/build/stage/before_setup.rb +0 -30
- data/lib/dapp/build/stage/before_setup_artifact.rb +0 -13
- data/lib/dapp/build/stage/build_artifact.rb +0 -36
- data/lib/dapp/build/stage/docker_instructions.rb +0 -24
- data/lib/dapp/build/stage/from.rb +0 -34
- data/lib/dapp/build/stage/ga_archive.rb +0 -27
- data/lib/dapp/build/stage/ga_archive_dependencies.rb +0 -26
- data/lib/dapp/build/stage/ga_artifact_patch.rb +0 -21
- data/lib/dapp/build/stage/ga_base.rb +0 -79
- data/lib/dapp/build/stage/ga_dependencies_base.rb +0 -19
- data/lib/dapp/build/stage/ga_latest_patch.rb +0 -53
- data/lib/dapp/build/stage/import_artifact.rb +0 -65
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +0 -21
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +0 -21
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/install/install.rb +0 -40
- data/lib/dapp/build/stage/mod/group.rb +0 -42
- data/lib/dapp/build/stage/mod/logging.rb +0 -104
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +0 -21
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -31
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +0 -21
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/setup/setup.rb +0 -40
- data/lib/dapp/builder/chef/berksfile.rb +0 -78
- data/lib/dapp/builder/chef/cookbook.rb +0 -257
- data/lib/dapp/builder/chef/cookbook_metadata.rb +0 -54
- data/lib/dapp/builder/chef/error.rb +0 -12
- data/lib/dapp/cli/bp.rb +0 -37
- data/lib/dapp/cli/build.rb +0 -60
- data/lib/dapp/cli/cleanup.rb +0 -22
- data/lib/dapp/cli/list.rb +0 -17
- data/lib/dapp/cli/mrproper.rb +0 -26
- data/lib/dapp/cli/push.rb +0 -61
- data/lib/dapp/cli/run.rb +0 -53
- data/lib/dapp/cli/stage_image.rb +0 -24
- data/lib/dapp/cli/stages.rb +0 -23
- data/lib/dapp/cli/stages/cleanup_local.rb +0 -44
- data/lib/dapp/cli/stages/cleanup_repo.rb +0 -26
- data/lib/dapp/cli/stages/flush_local.rb +0 -23
- data/lib/dapp/cli/stages/flush_repo.rb +0 -24
- data/lib/dapp/cli/stages/pull.rb +0 -28
- data/lib/dapp/cli/stages/push.rb +0 -24
- data/lib/dapp/cli/tag.rb +0 -24
- data/lib/dapp/config/artifact_dimg.rb +0 -20
- data/lib/dapp/config/artifact_group.rb +0 -56
- data/lib/dapp/config/dimg.rb +0 -23
- data/lib/dapp/config/dimg/instance_methods.rb +0 -194
- data/lib/dapp/config/dimg/validation.rb +0 -125
- data/lib/dapp/config/dimg_group.rb +0 -60
- data/lib/dapp/config/dimg_group_base.rb +0 -53
- data/lib/dapp/config/dimg_group_main.rb +0 -21
- data/lib/dapp/config/directive/artifact.rb +0 -69
- data/lib/dapp/config/directive/artifact_base.rb +0 -93
- data/lib/dapp/config/directive/chef.rb +0 -57
- data/lib/dapp/config/directive/docker/artifact.rb +0 -15
- data/lib/dapp/config/directive/docker/base.rb +0 -20
- data/lib/dapp/config/directive/docker/dimg.rb +0 -81
- data/lib/dapp/config/directive/git_artifact_local.rb +0 -13
- data/lib/dapp/config/directive/git_artifact_remote.rb +0 -57
- data/lib/dapp/config/directive/mount.rb +0 -26
- data/lib/dapp/config/directive/shell/artifact.rb +0 -17
- data/lib/dapp/config/directive/shell/dimg.rb +0 -65
- data/lib/dapp/dimg/path.rb +0 -37
- data/lib/dapp/dimg/stages.rb +0 -59
- data/lib/dapp/dimg/tags.rb +0 -65
- data/lib/dapp/docker_registry.rb +0 -36
- data/lib/dapp/docker_registry/base.rb +0 -109
- data/lib/dapp/docker_registry/default.rb +0 -18
- data/lib/dapp/docker_registry/mod/authorization.rb +0 -63
- data/lib/dapp/docker_registry/mod/request.rb +0 -32
- data/lib/dapp/error/build.rb +0 -6
- data/lib/dapp/error/config.rb +0 -6
- data/lib/dapp/error/dimg.rb +0 -6
- data/lib/dapp/error/image.rb +0 -6
- data/lib/dapp/error/project.rb +0 -6
- data/lib/dapp/error/registry.rb +0 -6
- data/lib/dapp/error/rugged.rb +0 -6
- data/lib/dapp/error/tar_writer.rb +0 -6
- data/lib/dapp/exception/introspect_image.rb +0 -6
- data/lib/dapp/exception/registry.rb +0 -6
- data/lib/dapp/filelock.rb +0 -43
- data/lib/dapp/git_artifact.rb +0 -241
- data/lib/dapp/git_repo/base.rb +0 -88
- data/lib/dapp/git_repo/own.rb +0 -38
- data/lib/dapp/git_repo/remote.rb +0 -49
- data/lib/dapp/image/argument.rb +0 -134
- data/lib/dapp/image/docker.rb +0 -115
- data/lib/dapp/image/scratch.rb +0 -32
- data/lib/dapp/image/stage.rb +0 -94
- data/lib/dapp/lock/base.rb +0 -51
- data/lib/dapp/lock/error.rb +0 -14
- data/lib/dapp/lock/file.rb +0 -45
- data/lib/dapp/project/command/bp.rb +0 -21
- data/lib/dapp/project/command/build.rb +0 -20
- data/lib/dapp/project/command/cleanup.rb +0 -24
- data/lib/dapp/project/command/common.rb +0 -96
- data/lib/dapp/project/command/list.rb +0 -20
- data/lib/dapp/project/command/mrproper.rb +0 -69
- data/lib/dapp/project/command/push.rb +0 -28
- data/lib/dapp/project/command/run.rb +0 -15
- data/lib/dapp/project/command/spush.rb +0 -18
- data/lib/dapp/project/command/stage_image.rb +0 -15
- data/lib/dapp/project/command/stages/cleanup_local.rb +0 -138
- data/lib/dapp/project/command/stages/cleanup_repo.rb +0 -125
- data/lib/dapp/project/command/stages/common.rb +0 -86
- data/lib/dapp/project/command/stages/flush_local.rb +0 -22
- data/lib/dapp/project/command/stages/flush_repo.rb +0 -22
- data/lib/dapp/project/command/stages/pull.rb +0 -27
- data/lib/dapp/project/command/stages/push.rb +0 -23
- data/lib/dapp/project/command/tag.rb +0 -18
@@ -0,0 +1,59 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Run < Base
|
5
|
+
banner <<BANNER.freeze
|
6
|
+
Usage:
|
7
|
+
|
8
|
+
dapp dimg run [options] [DIMG] [DOCKER ARGS]
|
9
|
+
|
10
|
+
DIMG Dapp image to process [default: *].
|
11
|
+
DOCKER ARGS Docker run options and command separated by '--'
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
option :ssh_key,
|
16
|
+
long: '--ssh-key SSH_KEY',
|
17
|
+
description: ['Enable only specified ssh keys ',
|
18
|
+
'(use system ssh-agent by default)'].join,
|
19
|
+
default: nil,
|
20
|
+
proc: ->(v) { composite_options(:ssh_key) << v }
|
21
|
+
|
22
|
+
def read_cli_options(args)
|
23
|
+
self.class.cli_wrapper(self) do
|
24
|
+
args.each_with_index do |arg, i|
|
25
|
+
next if arg == '--'
|
26
|
+
next if (key = find_option(arg)).nil?
|
27
|
+
cli_option = []
|
28
|
+
cli_option << args.slice!(i)
|
29
|
+
if key[:with_arg]
|
30
|
+
raise OptionParser::InvalidOption if args.count < i + 1
|
31
|
+
cli_option << args.slice!(i)
|
32
|
+
end
|
33
|
+
parse_options(cli_option)
|
34
|
+
return read_cli_options(args)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def find_option(arg)
|
40
|
+
expected_options.each { |hash| return hash if hash[:formats].any? { |f| f.start_with? arg } }
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
|
44
|
+
def expected_options
|
45
|
+
@expected_options ||= options.values.map { |opt| { formats: [opt[:long], opt[:short]].compact, with_arg: !opt[:long].split.one? } }
|
46
|
+
end
|
47
|
+
|
48
|
+
def run(argv = ARGV)
|
49
|
+
filtered_args = read_cli_options(argv)
|
50
|
+
pattern = filtered_args.any? && !filtered_args.first.start_with?('-') ? [filtered_args.shift] : []
|
51
|
+
index = filtered_args.index('--') || filtered_args.count
|
52
|
+
docker_options = index.nonzero? ? filtered_args.slice(0..index - 1) : []
|
53
|
+
command = filtered_args.slice(index + 1..-1) || []
|
54
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: pattern).run(docker_options, command)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
module Dapp
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
Version: #{Dapp::VERSION}
|
7
|
-
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Spush < Push
|
5
|
+
banner <<BANNER.freeze
|
8
6
|
Usage:
|
9
|
-
|
7
|
+
|
8
|
+
dapp dimg spush [options] [DIMG] REPO
|
10
9
|
|
11
10
|
DIMG Dapp image to process [default: *].
|
12
11
|
REPO Pushed image name.
|
13
12
|
|
14
13
|
Options:
|
15
14
|
BANNER
|
15
|
+
end
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class StageImage < Base
|
5
|
+
banner <<BANNER.freeze
|
6
|
+
Usage:
|
7
|
+
|
8
|
+
dapp dimg stage image [options] [DIMG]
|
9
|
+
|
10
|
+
DIMG Dapp image to process [default: *].
|
11
|
+
|
12
|
+
Options:
|
13
|
+
BANNER
|
14
|
+
option :stage,
|
15
|
+
long: '--stage STAGE',
|
16
|
+
proc: proc { |v| v.to_sym },
|
17
|
+
default: :docker_instructions,
|
18
|
+
in: [:from, :before_install, :before_install_artifact, :g_a_archive, :g_a_pre_install_patch, :install,
|
19
|
+
:g_a_post_install_patch, :after_install_artifact, :before_setup, :before_setup_artifact, :g_a_pre_setup_patch,
|
20
|
+
:setup, :g_a_post_setup_patch, :after_setup_artifact, :g_a_latest_patch, :docker_instructions]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
|
+
SUBCOMMANDS = ['flush local', 'flush repo', 'cleanup local', 'cleanup repo', 'push', 'pull'].freeze
|
6
|
+
|
7
|
+
banner <<BANNER.freeze
|
8
|
+
Available subcommands: (for details, dapp dimg stages SUB-COMMAND --help)
|
9
|
+
|
10
|
+
dapp dimg stages cleanup local [options] [DIMG ...] [REPO]
|
11
|
+
dapp dimg stages cleanup repo [options] [DIMG ...] REPO
|
12
|
+
dapp dimg stages flush local [options] [DIMG ...]
|
13
|
+
dapp dimg stages flush repo [options] [DIMG ...] REPO
|
14
|
+
dapp dimg stages push [options] [DIMG ...] REPO
|
15
|
+
dapp dimg stages pull [options] [DIMG ...] REPO
|
16
|
+
|
17
|
+
Options:
|
18
|
+
BANNER
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages
|
5
|
+
class CleanupLocal < Base
|
6
|
+
banner <<BANNER.freeze
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
dapp dimg stages cleanup local [options] [DIMG ...] [REPO]
|
10
|
+
|
11
|
+
DIMG Dapp image to process [default: *].
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
option :proper_cache_version,
|
16
|
+
long: '--improper-cache-version',
|
17
|
+
boolean: true
|
18
|
+
|
19
|
+
option :proper_git_commit,
|
20
|
+
long: '--improper-git-commit',
|
21
|
+
boolean: true
|
22
|
+
|
23
|
+
option :proper_repo_cache,
|
24
|
+
long: '--improper-repo-cache',
|
25
|
+
boolean: true
|
26
|
+
|
27
|
+
def run(argv = ARGV)
|
28
|
+
self.class.parse_options(self, argv)
|
29
|
+
repository = repo
|
30
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: cli_arguments).send(run_method, repository)
|
31
|
+
end
|
32
|
+
|
33
|
+
def repo
|
34
|
+
config[:proper_repo_cache] ? self.class.required_argument(self) : nil
|
35
|
+
end
|
36
|
+
|
37
|
+
def run_method
|
38
|
+
:stages_cleanup_local
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages
|
5
|
+
class CleanupRepo < CleanupLocal
|
6
|
+
banner <<BANNER.freeze
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
dapp dimg stages cleanup repo [options] [DIMG ...] REPO
|
10
|
+
|
11
|
+
DIMG Dapp image to process [default: *].
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
def run_method
|
16
|
+
:stages_cleanup_repo
|
17
|
+
end
|
18
|
+
|
19
|
+
def repo
|
20
|
+
self.class.required_argument(self)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages
|
5
|
+
class FlushLocal < Base
|
6
|
+
banner <<BANNER.freeze
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
dapp dimg stages flush local [options] [DIMG ...]
|
10
|
+
|
11
|
+
DIMG Dapp image to process [default: *].
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
def run(argv = ARGV)
|
16
|
+
self.class.parse_options(self, argv)
|
17
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: cli_arguments).stages_flush_local
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages
|
5
|
+
class FlushRepo < Base
|
6
|
+
banner <<BANNER.freeze
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
dapp dimg stages flush repo [options] [DIMG ...] REPO
|
10
|
+
|
11
|
+
DIMG Dapp image to process [default: *].
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
def run(argv = ARGV)
|
16
|
+
self.class.parse_options(self, argv)
|
17
|
+
repo = self.class.required_argument(self)
|
18
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: cli_arguments).stages_flush_repo(repo)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages
|
5
|
+
class Pull < Base
|
6
|
+
banner <<BANNER.freeze
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
dapp dimg stages pull [options] [DIMG ...] REPO
|
10
|
+
|
11
|
+
DIMG Dapp image to process [default: *].
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
option :pull_all_stages,
|
16
|
+
long: '--all',
|
17
|
+
boolean: true
|
18
|
+
|
19
|
+
def run(argv = ARGV)
|
20
|
+
self.class.parse_options(self, argv)
|
21
|
+
repo = self.class.required_argument(self)
|
22
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: cli_arguments).stages_pull(repo)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Stages
|
5
|
+
class Push < Base
|
6
|
+
banner <<BANNER.freeze
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
dapp dimg stages push [options] [DIMG ...] REPO
|
10
|
+
|
11
|
+
DIMG Dapp image to process [default: *].
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
def run(argv = ARGV)
|
16
|
+
self.class.parse_options(self, argv)
|
17
|
+
repo = self.class.required_argument(self)
|
18
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: cli_arguments).stages_push(repo)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module CLI
|
4
|
+
class Tag < Base
|
5
|
+
banner <<BANNER.freeze
|
6
|
+
Usage:
|
7
|
+
|
8
|
+
dapp dimg tag [options] [DIMG] TAG
|
9
|
+
|
10
|
+
DIMG Dapp image to process [default: *].
|
11
|
+
REPO Pushed image name.
|
12
|
+
|
13
|
+
Options:
|
14
|
+
BANNER
|
15
|
+
|
16
|
+
def run(argv = ARGV)
|
17
|
+
self.class.parse_options(self, argv)
|
18
|
+
tag = self.class.required_argument(self)
|
19
|
+
::Dapp::Dapp.new(cli_options: config, dimgs_patterns: cli_arguments).public_send(class_to_lowercase, tag)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class ArtifactDimg < Dimg
|
5
|
+
def validate_scratch!
|
6
|
+
end
|
7
|
+
|
8
|
+
def validate_artifacts_artifacts!
|
9
|
+
end
|
10
|
+
|
11
|
+
def validated_artifacts
|
12
|
+
_git_artifact._local + _git_artifact._remote
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class ArtifactGroup < DimgGroup
|
5
|
+
def _shell(&blk)
|
6
|
+
@_shell ||= Directive::Shell::Artifact.new(dapp: dapp, &blk)
|
7
|
+
end
|
8
|
+
|
9
|
+
def _docker(&blk)
|
10
|
+
@_docker ||= Directive::Docker::Artifact.new(dapp: dapp, &blk)
|
11
|
+
end
|
12
|
+
|
13
|
+
def _export
|
14
|
+
@_export ||= []
|
15
|
+
end
|
16
|
+
|
17
|
+
undef :artifact
|
18
|
+
undef :dimg
|
19
|
+
undef :dimg_group
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def export(*args, &blk)
|
24
|
+
_export.concat begin
|
25
|
+
artifact_config = pass_to_default(
|
26
|
+
ArtifactDimg.new(
|
27
|
+
"artifact-#{SecureRandom.hex(2)}",
|
28
|
+
dapp: dapp
|
29
|
+
)
|
30
|
+
)
|
31
|
+
|
32
|
+
artifact = Directive::Artifact.new(dapp: dapp, config: artifact_config)
|
33
|
+
artifact.send(:export, *args, &blk)
|
34
|
+
|
35
|
+
artifact._export
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def check_dimg_directive_order(_directive)
|
40
|
+
end
|
41
|
+
|
42
|
+
def check_dimg_group_directive_order(_directive)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class Dimg < Base
|
5
|
+
include Validation
|
6
|
+
include InstanceMethods
|
7
|
+
|
8
|
+
attr_reader :_name
|
9
|
+
|
10
|
+
def initialize(name, dapp:)
|
11
|
+
self._name = name
|
12
|
+
super(dapp: dapp)
|
13
|
+
end
|
14
|
+
|
15
|
+
def _name=(name)
|
16
|
+
return if name.nil?
|
17
|
+
reg = '^[[[:alnum:]]_.-]*$'
|
18
|
+
raise Error::Config, code: :dimg_name_incorrect, data: { name: name, reg: reg } unless name =~ /#{reg}/
|
19
|
+
@_name = name
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,177 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class Dimg < Base
|
5
|
+
module InstanceMethods
|
6
|
+
attr_reader :_builder
|
7
|
+
attr_reader :_chef, :_shell, :_docker, :_git_artifact, :_mount, :_artifact
|
8
|
+
|
9
|
+
def dev_mode
|
10
|
+
@_dev_mode = true
|
11
|
+
end
|
12
|
+
|
13
|
+
def chef(&blk)
|
14
|
+
builder(:chef)
|
15
|
+
directive_eval(_chef, &blk)
|
16
|
+
end
|
17
|
+
|
18
|
+
def shell(&blk)
|
19
|
+
builder(:shell)
|
20
|
+
directive_eval(_shell, &blk)
|
21
|
+
end
|
22
|
+
|
23
|
+
def docker(&blk)
|
24
|
+
directive_eval(_docker, &blk)
|
25
|
+
end
|
26
|
+
|
27
|
+
def artifact(&blk)
|
28
|
+
_artifact.concat begin
|
29
|
+
pass_to_custom(ArtifactGroup.new(dapp: dapp), :clone_to_artifact).tap do |artifact_group|
|
30
|
+
artifact_group.instance_eval(&blk) if block_given?
|
31
|
+
end._export
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def git(url = nil, &blk)
|
36
|
+
type = url.nil? ? :local : :remote
|
37
|
+
_git_artifact.send(type, url.to_s, &blk)
|
38
|
+
end
|
39
|
+
|
40
|
+
def mount(to, &blk)
|
41
|
+
_mount << Directive::Mount.new(to, dapp: dapp, &blk)
|
42
|
+
end
|
43
|
+
|
44
|
+
def _dev_mode
|
45
|
+
!!@_dev_mode
|
46
|
+
end
|
47
|
+
|
48
|
+
def _builder
|
49
|
+
@_builder || :none
|
50
|
+
end
|
51
|
+
|
52
|
+
def _chef
|
53
|
+
@_chef ||= Directive::Chef.new(dapp: dapp)
|
54
|
+
end
|
55
|
+
|
56
|
+
def _shell
|
57
|
+
@_shell ||= Directive::Shell::Dimg.new(dapp: dapp)
|
58
|
+
end
|
59
|
+
|
60
|
+
def _docker
|
61
|
+
@_docker ||= Directive::Docker::Dimg.new(dapp: dapp)
|
62
|
+
end
|
63
|
+
|
64
|
+
def _mount
|
65
|
+
@_mount ||= []
|
66
|
+
end
|
67
|
+
|
68
|
+
def _git_artifact
|
69
|
+
@_git_artifact ||= GitArtifact.new(dapp: dapp)
|
70
|
+
end
|
71
|
+
|
72
|
+
[:build_dir, :tmp_dir].each do |mount_type|
|
73
|
+
define_method "_#{mount_type}_mount" do
|
74
|
+
_mount.select { |m| m._type == mount_type }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def _artifact
|
79
|
+
@_artifact ||= []
|
80
|
+
end
|
81
|
+
|
82
|
+
[:before, :after].each do |order|
|
83
|
+
[:setup, :install].each do |stage|
|
84
|
+
define_method "_#{order}_#{stage}_artifact" do
|
85
|
+
_artifact.select do |art|
|
86
|
+
art.public_send("_#{order}") == stage
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def _import_artifact
|
93
|
+
_artifact.select(&:not_associated?)
|
94
|
+
end
|
95
|
+
|
96
|
+
class GitArtifact < Directive::Base
|
97
|
+
attr_reader :_local, :_remote
|
98
|
+
|
99
|
+
def initialize(**kwargs, &blk)
|
100
|
+
@_local = []
|
101
|
+
@_remote = []
|
102
|
+
|
103
|
+
super(**kwargs, &blk)
|
104
|
+
end
|
105
|
+
|
106
|
+
def local(_, &blk)
|
107
|
+
@_local << Directive::GitArtifactLocal.new(dapp: dapp, &blk)
|
108
|
+
end
|
109
|
+
|
110
|
+
def remote(repo_url, &blk)
|
111
|
+
@_remote << Directive::GitArtifactRemote.new(repo_url, dapp: dapp, &blk)
|
112
|
+
end
|
113
|
+
|
114
|
+
def _local
|
115
|
+
@_local.map(&:_export).flatten
|
116
|
+
end
|
117
|
+
|
118
|
+
def _remote
|
119
|
+
@_remote.map(&:_export).flatten
|
120
|
+
end
|
121
|
+
|
122
|
+
protected
|
123
|
+
|
124
|
+
def empty?
|
125
|
+
(_local + _remote).empty?
|
126
|
+
end
|
127
|
+
|
128
|
+
def validate!
|
129
|
+
(_local + _remote).each { |exp| exp.send(:validate!) }
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
protected
|
134
|
+
|
135
|
+
def builder(type)
|
136
|
+
@_builder = type if _builder == :none
|
137
|
+
raise Error::Config, code: :builder_type_conflict unless @_builder == type
|
138
|
+
end
|
139
|
+
|
140
|
+
def directive_eval(directive, &blk)
|
141
|
+
directive.instance_eval(&blk) if block_given?
|
142
|
+
directive
|
143
|
+
end
|
144
|
+
|
145
|
+
def pass_to_default(dimg)
|
146
|
+
pass_to_custom(dimg, :clone)
|
147
|
+
end
|
148
|
+
|
149
|
+
def pass_to_custom(obj, clone_method)
|
150
|
+
passed_directives.each do |directive|
|
151
|
+
next if (variable = instance_variable_get(directive)).nil?
|
152
|
+
|
153
|
+
obj.instance_variable_set(directive, begin
|
154
|
+
case variable
|
155
|
+
when Directive::Base, GitArtifact then variable.send(clone_method)
|
156
|
+
when Symbol then variable
|
157
|
+
when Array then variable.dup
|
158
|
+
when TrueClass, FalseClass then variable
|
159
|
+
else
|
160
|
+
raise
|
161
|
+
end
|
162
|
+
end)
|
163
|
+
end
|
164
|
+
obj
|
165
|
+
end
|
166
|
+
|
167
|
+
def passed_directives
|
168
|
+
[:@_chef, :@_shell, :@_docker,
|
169
|
+
:@_git_artifact, :@_mount,
|
170
|
+
:@_artifact, :@_builder, :@_dev_mode]
|
171
|
+
end
|
172
|
+
end # InstanceMethods
|
173
|
+
# rubocop:enable Metrics/ModuleLength
|
174
|
+
end # Dimg
|
175
|
+
end # Config
|
176
|
+
end # Dimg
|
177
|
+
end # Dapp
|