dapp 0.10.2 → 0.36.24
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 +5 -5
- data/bin/dapp +77 -15
- data/config/en/common.yml +20 -11
- data/config/en/net_status.yml +108 -27
- data/lib/dapp/cli/cli.rb +1 -0
- data/lib/dapp/cli/command/base.rb +111 -0
- data/lib/dapp/cli/command/sample/base.rb +28 -0
- data/lib/dapp/cli/command/sample/create.rb +24 -0
- data/lib/dapp/cli/command/sample/list.rb +25 -0
- data/lib/dapp/cli/command/sample.rb +20 -0
- data/lib/dapp/cli/command/slug.rb +26 -0
- data/lib/dapp/cli/command/update.rb +65 -0
- data/lib/dapp/cli/options/ssh.rb +18 -0
- data/lib/dapp/cli/options/tag.rb +51 -0
- data/lib/dapp/cli.rb +11 -3
- data/lib/dapp/config/config.rb +21 -0
- data/lib/dapp/config/directive/base.rb +100 -3
- data/lib/dapp/core_ext/hash.rb +14 -0
- data/lib/dapp/core_ext/pathname.rb +6 -4
- data/lib/dapp/dapp/chef.rb +1 -9
- data/lib/dapp/dapp/command/common.rb +24 -0
- data/lib/dapp/dapp/command/sample/common.rb +54 -0
- data/lib/dapp/dapp/command/sample/create.rb +57 -0
- data/lib/dapp/dapp/command/sample/list.rb +13 -0
- data/lib/dapp/dapp/command/slug.rb +11 -0
- data/lib/dapp/dapp/dapp_config.rb +85 -0
- data/lib/dapp/dapp/dappfile.rb +108 -27
- data/lib/dapp/dapp/deps/base.rb +9 -32
- data/lib/dapp/dapp/deps/common.rb +26 -0
- data/lib/dapp/dapp/deps/gitartifact.rb +2 -20
- data/lib/dapp/dapp/deps/toolchain.rb +11 -0
- data/lib/dapp/dapp/git_artifact.rb +6 -4
- data/lib/dapp/dapp/lock.rb +6 -5
- data/lib/dapp/dapp/logging/base.rb +32 -20
- data/lib/dapp/dapp/logging/i18n.rb +5 -1
- data/lib/dapp/dapp/logging/process.rb +6 -6
- data/lib/dapp/dapp/option_tags.rb +98 -0
- data/lib/dapp/dapp/ruby2go.rb +130 -0
- data/lib/dapp/dapp/sentry.rb +97 -0
- data/lib/dapp/dapp/shellout/base.rb +26 -18
- data/lib/dapp/dapp/shellout/streaming.rb +2 -2
- data/lib/dapp/dapp/slug.rb +12 -0
- data/lib/dapp/dapp/ssh_agent.rb +25 -7
- data/lib/dapp/dapp.rb +192 -41
- data/lib/dapp/deployment.rb +1 -0
- data/lib/dapp/dimg/artifact.rb +12 -4
- data/lib/dapp/dimg/build/stage/artifact_base.rb +26 -30
- data/lib/dapp/dimg/build/stage/artifact_default.rb +50 -28
- data/lib/dapp/dimg/build/stage/base.rb +187 -52
- data/lib/dapp/dimg/build/stage/before_install.rb +4 -15
- data/lib/dapp/dimg/build/stage/before_install_artifact.rb +4 -0
- data/lib/dapp/dimg/build/stage/before_setup.rb +1 -20
- data/lib/dapp/dimg/build/stage/build_artifact.rb +1 -20
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +5 -4
- data/lib/dapp/dimg/build/stage/from.rb +62 -9
- data/lib/dapp/dimg/build/stage/ga_archive.rb +14 -1
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +5 -35
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +15 -34
- data/lib/dapp/dimg/build/stage/ga_related_base.rb +21 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +22 -11
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/install/install.rb +1 -19
- data/lib/dapp/dimg/build/stage/instructions.rb +27 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
- data/lib/dapp/dimg/build/stage/mod/logging.rb +15 -19
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +24 -1
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -19
- data/lib/dapp/dimg/builder/ansible.rb +5 -0
- data/lib/dapp/dimg/builder/chef/cookbook.rb +8 -8
- data/lib/dapp/dimg/builder/chef.rb +29 -16
- data/lib/dapp/dimg/builder/none.rb +1 -34
- data/lib/dapp/dimg/builder/ruby2go.rb +57 -0
- data/lib/dapp/dimg/builder/shell.rb +1 -20
- data/lib/dapp/dimg/cli/cli.rb +2 -1
- data/lib/dapp/dimg/cli/command/base.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/bp.rb +60 -0
- data/lib/dapp/dimg/cli/command/dimg/build.rb +43 -0
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +9 -4
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
- data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +5 -5
- data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +4 -6
- data/lib/dapp/dimg/cli/command/dimg/cleanup_repo.rb +47 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_repo.rb +36 -0
- data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +6 -3
- data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
- data/lib/dapp/dimg/cli/command/dimg/push.rb +39 -0
- data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +30 -15
- data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
- data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +12 -3
- data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +13 -0
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +13 -9
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +6 -8
- data/lib/dapp/dimg/cli/command/dimg/stages/flush_local.rb +21 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/flush_repo.rb +28 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/pull.rb +34 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/push.rb +30 -0
- data/lib/dapp/dimg/cli/command/dimg/stages.rb +22 -0
- data/lib/dapp/dimg/cli/command/dimg/tag.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg.rb +31 -0
- data/lib/dapp/dimg/cli/options/introspection.rb +45 -0
- data/lib/dapp/dimg/config/config.rb +24 -0
- data/lib/dapp/dimg/config/directive/artifact.rb +13 -15
- data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -8
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +12 -0
- data/lib/dapp/dimg/config/directive/artifact_group.rb +60 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +203 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +217 -0
- data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
- data/lib/dapp/dimg/config/directive/dimg_group.rb +73 -0
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +5 -0
- data/lib/dapp/dimg/config/directive/docker/base.rb +2 -3
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +24 -5
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +23 -12
- data/lib/dapp/dimg/config/directive/mount.rb +11 -3
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +2 -2
- data/lib/dapp/dimg/dapp/command/bp.rb +3 -5
- data/lib/dapp/dimg/dapp/command/build.rb +4 -6
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +14 -14
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +28 -23
- data/lib/dapp/dimg/dapp/command/cleanup.rb +4 -11
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +143 -0
- data/lib/dapp/dimg/dapp/command/common.rb +148 -38
- data/lib/dapp/dimg/dapp/command/flush_local.rb +25 -0
- data/lib/dapp/dimg/dapp/command/flush_repo.rb +25 -0
- data/lib/dapp/dimg/dapp/command/list.rb +1 -1
- data/lib/dapp/dimg/dapp/command/mrproper.rb +16 -63
- data/lib/dapp/dimg/dapp/command/push.rb +11 -16
- data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +48 -0
- data/lib/dapp/dimg/dapp/command/run.rb +4 -4
- data/lib/dapp/dimg/dapp/command/spush.rb +4 -5
- data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +13 -115
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +23 -102
- data/lib/dapp/dimg/dapp/command/stages/common.rb +57 -39
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +13 -7
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +14 -8
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +4 -13
- data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -9
- data/lib/dapp/dimg/dapp/command/tag.rb +4 -6
- data/lib/dapp/dimg/dapp/config_artifact_group.rb +20 -0
- data/lib/dapp/dimg/dapp/dapp.rb +40 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +43 -0
- data/lib/dapp/dimg/dapp/dimg.rb +41 -0
- data/lib/dapp/dimg/dimg/git_artifact.rb +25 -11
- data/lib/dapp/dimg/dimg/path.rb +7 -9
- data/lib/dapp/dimg/dimg/stages.rb +27 -15
- data/lib/dapp/dimg/dimg.rb +172 -69
- data/lib/dapp/dimg/docker_registry/base.rb +31 -74
- data/lib/dapp/dimg/docker_registry/dimg.rb +55 -0
- data/lib/dapp/dimg/docker_registry.rb +5 -23
- data/lib/dapp/dimg/error/build.rb +1 -1
- data/lib/dapp/dimg/error/chef.rb +1 -5
- data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
- data/lib/dapp/dimg/error/dimg.rb +1 -1
- data/lib/dapp/dimg/error/lock.rb +1 -1
- data/lib/dapp/dimg/error/registry.rb +1 -1
- data/lib/dapp/dimg/error/rugged.rb +1 -1
- data/lib/dapp/dimg/error/tar_writer.rb +1 -1
- data/lib/dapp/dimg/git_artifact.rb +195 -179
- data/lib/dapp/dimg/git_repo/base.rb +49 -45
- data/lib/dapp/dimg/git_repo/local.rb +45 -0
- data/lib/dapp/dimg/git_repo/own.rb +3 -31
- data/lib/dapp/dimg/git_repo/remote.rb +65 -26
- data/lib/dapp/dimg/image/argument.rb +15 -50
- data/lib/dapp/dimg/image/dimg.rb +15 -0
- data/lib/dapp/dimg/image/scratch.rb +35 -9
- data/lib/dapp/dimg/image/stage.rb +223 -44
- data/lib/dapp/dimg/lock/file.rb +4 -4
- data/lib/dapp/downloader.rb +117 -0
- data/lib/dapp/error/base.rb +1 -5
- data/lib/dapp/error/command.rb +5 -0
- data/lib/dapp/error/config.rb +5 -0
- data/lib/dapp/error/dapp.rb +1 -1
- data/lib/dapp/error/dappfile.rb +1 -1
- data/lib/dapp/error/default.rb +11 -0
- data/lib/dapp/error/mod/user.rb +11 -0
- data/lib/dapp/error/shellout.rb +1 -1
- data/lib/dapp/exception/base.rb +1 -1
- data/lib/dapp/helper/case_conversion.rb +17 -0
- data/lib/dapp/helper/cli.rb +18 -7
- data/lib/dapp/helper/net_status.rb +5 -1
- data/lib/dapp/helper/sha256.rb +1 -1
- data/lib/dapp/helper/tar.rb +31 -0
- data/lib/dapp/helper/trivia.rb +40 -1
- data/lib/dapp/helper/url.rb +23 -0
- data/lib/dapp/helper/yaml.rb +24 -0
- data/lib/dapp/kube/cli/cli.rb +1 -0
- data/lib/dapp/kube/cli/command/base.rb +14 -0
- data/lib/dapp/kube/cli/command/kube/chart_create.rb +19 -0
- data/lib/dapp/kube/cli/command/kube/deploy.rb +80 -0
- data/lib/dapp/kube/cli/command/kube/dismiss.rb +31 -0
- data/lib/dapp/kube/cli/command/kube/lint.rb +53 -0
- data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +19 -0
- data/lib/dapp/kube/cli/command/kube/render.rb +63 -0
- data/lib/dapp/kube/cli/command/kube/secret_edit.rb +30 -0
- data/lib/dapp/kube/cli/command/kube/secret_extract.rb +39 -0
- data/lib/dapp/kube/cli/command/kube/secret_generate.rb +34 -0
- data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +16 -0
- data/lib/dapp/kube/cli/command/kube/secret_regenerate.rb +29 -0
- data/lib/dapp/kube/cli/command/kube/value_get.rb +47 -0
- data/lib/dapp/kube/cli/command/kube.rb +28 -0
- data/lib/dapp/kube/dapp/command/chart_create.rb +103 -0
- data/lib/dapp/kube/dapp/command/common.rb +379 -0
- data/lib/dapp/kube/dapp/command/deploy.rb +351 -0
- data/lib/dapp/kube/dapp/command/dismiss.rb +50 -0
- data/lib/dapp/kube/dapp/command/lint.rb +69 -0
- data/lib/dapp/kube/dapp/command/minikube_setup.rb +402 -0
- data/lib/dapp/kube/dapp/command/render.rb +54 -0
- data/lib/dapp/kube/dapp/command/ruby2go.rb +17 -0
- data/lib/dapp/kube/dapp/command/secret_edit.rb +21 -0
- data/lib/dapp/kube/dapp/command/secret_extract.rb +17 -0
- data/lib/dapp/kube/dapp/command/secret_generate.rb +21 -0
- data/lib/dapp/kube/dapp/command/secret_key_generate.rb +13 -0
- data/lib/dapp/kube/dapp/command/secret_regenerate.rb +13 -0
- data/lib/dapp/kube/dapp/command/value_get.rb +32 -0
- data/lib/dapp/kube/dapp/dapp.rb +26 -0
- data/lib/dapp/kube/error/default.rb +7 -0
- data/lib/dapp/kube/helm/release.rb +189 -0
- data/lib/dapp/kube/helm/values.rb +148 -0
- data/lib/dapp/kube/helm.rb +5 -0
- data/lib/dapp/kube/kubernetes/client/error.rb +43 -0
- data/lib/dapp/kube/kubernetes/client/resource/base.rb +33 -0
- data/lib/dapp/kube/kubernetes/client/resource/deployment.rb +11 -0
- data/lib/dapp/kube/kubernetes/client/resource/event.rb +8 -0
- data/lib/dapp/kube/kubernetes/client/resource/job.rb +27 -0
- data/lib/dapp/kube/kubernetes/client/resource/pod.rb +62 -0
- data/lib/dapp/kube/kubernetes/client/resource/replicaset.rb +8 -0
- data/lib/dapp/kube/kubernetes/client.rb +314 -0
- data/lib/dapp/kube/kubernetes/config.rb +132 -0
- data/lib/dapp/kube/kubernetes/error.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/base.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/container.rb +103 -0
- data/lib/dapp/kube/kubernetes/manager/deployment.rb +212 -0
- data/lib/dapp/kube/kubernetes/manager/job.rb +65 -0
- data/lib/dapp/kube/kubernetes/manager/pod.rb +69 -0
- data/lib/dapp/kube/kubernetes.rb +6 -0
- data/lib/dapp/kube/secret.rb +93 -0
- data/lib/dapp/kube.rb +1 -0
- data/lib/dapp/version.rb +2 -2
- data/lib/dapp.rb +155 -61
- metadata +208 -61
- data/lib/dapp/cli/base.rb +0 -63
- data/lib/dapp/config/base.rb +0 -54
- data/lib/dapp/config/error/config.rb +0 -7
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +0 -27
- data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +0 -20
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -32
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/cli/base.rb +0 -16
- data/lib/dapp/dimg/cli/bp.rb +0 -37
- data/lib/dapp/dimg/cli/build.rb +0 -64
- data/lib/dapp/dimg/cli/dimg.rb +0 -30
- data/lib/dapp/dimg/cli/push.rb +0 -61
- data/lib/dapp/dimg/cli/stages/flush_local.rb +0 -23
- data/lib/dapp/dimg/cli/stages/flush_repo.rb +0 -24
- data/lib/dapp/dimg/cli/stages/pull.rb +0 -28
- data/lib/dapp/dimg/cli/stages/push.rb +0 -24
- data/lib/dapp/dimg/cli/stages.rb +0 -22
- data/lib/dapp/dimg/cli/tag.rb +0 -24
- data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
- data/lib/dapp/dimg/config/artifact_group.rb +0 -43
- data/lib/dapp/dimg/config/base.rb +0 -7
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
- data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
- data/lib/dapp/dimg/config/dimg.rb +0 -24
- data/lib/dapp/dimg/config/dimg_group.rb +0 -61
- data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
- data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
- data/lib/dapp/dimg/dapp/command.rb +0 -21
- data/lib/dapp/dimg/dimg/tags.rb +0 -65
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +0 -63
- data/lib/dapp/dimg/docker_registry/base/request.rb +0 -34
- data/lib/dapp/dimg/docker_registry/default.rb +0 -18
- data/lib/dapp/dimg/error/base.rb +0 -7
- data/lib/dapp/dimg/error/config.rb +0 -7
- data/lib/dapp/dimg/exception/introspect_image.rb +0 -7
- data/lib/dapp/dimg/image/docker.rb +0 -134
|
@@ -2,38 +2,69 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
module GitRepo
|
|
4
4
|
class Remote < Base
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
CACHE_VERSION = 4
|
|
6
|
+
|
|
7
|
+
attr_reader :url
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
def get_or_create(dapp, name, url:)
|
|
11
|
+
repositories[url] ||= new(dapp, name, url: url).tap(&:clone_and_fetch)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def repositories
|
|
15
|
+
@repositories ||= {}
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def initialize(dapp, name, url:)
|
|
20
|
+
super(dapp, name)
|
|
7
21
|
|
|
8
22
|
@url = url
|
|
23
|
+
end
|
|
9
24
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Rugged::Repository.clone_at(url, path, bare: true)
|
|
13
|
-
rescue Rugged::NetworkError, Rugged::SslError => e
|
|
14
|
-
raise Error::Rugged, code: :rugged_remote_error, data: { message: e.message, url: url }
|
|
15
|
-
end
|
|
16
|
-
end unless File.directory?(path)
|
|
25
|
+
def url
|
|
26
|
+
@url ||= remote_origin_url
|
|
17
27
|
end
|
|
18
28
|
|
|
19
|
-
def
|
|
20
|
-
|
|
29
|
+
def ruby2go_method(method, args_hash={})
|
|
30
|
+
res = dapp.ruby2go_git_repo(args_hash.merge("RemoteGitRepo" => JSON.dump(get_ruby2go_state_hash), "method" => method))
|
|
31
|
+
|
|
32
|
+
raise res["error"] if res["error"]
|
|
33
|
+
|
|
34
|
+
self.set_ruby2go_state_hash(JSON.load(res["data"]["RemoteGitRepo"]))
|
|
35
|
+
|
|
36
|
+
res["data"]["result"]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def get_ruby2go_state_hash
|
|
40
|
+
super.tap {|res|
|
|
41
|
+
res["Url"] = @url.to_s
|
|
42
|
+
res["ClonePath"] = dapp.build_path("remote_git_repo", CACHE_VERSION.to_s, dapp.consistent_uniq_slugify(name), url_protocol(url)).to_s # FIXME
|
|
43
|
+
res["IsDryRun"] = dapp.dry_run?
|
|
44
|
+
}
|
|
21
45
|
end
|
|
22
46
|
|
|
23
|
-
def
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
git.fetch('origin', [branch])
|
|
27
|
-
raise Error::Rugged, code: :branch_not_exist_in_remote_git_repository, data: { branch: branch, url: url } unless branch_exist?(branch)
|
|
28
|
-
end unless dimg.ignore_git_fetch || dimg.dapp.dry_run?
|
|
47
|
+
def set_ruby2go_state_hash(state)
|
|
48
|
+
super(state)
|
|
49
|
+
@url = state["Url"]
|
|
29
50
|
end
|
|
30
51
|
|
|
31
|
-
def
|
|
32
|
-
|
|
52
|
+
def _rugged_credentials # TODO remove
|
|
53
|
+
@_rugged_credentials ||= begin
|
|
54
|
+
if url_protocol(url) == :ssh
|
|
55
|
+
host_with_user = url.split(':', 2).first
|
|
56
|
+
username = host_with_user.split('@', 2).reverse.last
|
|
57
|
+
Rugged::Credentials::SshKeyFromAgent.new(username: username)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
33
60
|
end
|
|
34
61
|
|
|
35
|
-
def
|
|
36
|
-
|
|
62
|
+
def path
|
|
63
|
+
Pathname(dapp.build_path("remote_git_repo", CACHE_VERSION.to_s, dapp.consistent_uniq_slugify(name), url_protocol(url)).to_s)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def clone_and_fetch
|
|
67
|
+
return ruby2go_method("CloneAndFetch")
|
|
37
68
|
end
|
|
38
69
|
|
|
39
70
|
def lookup_commit(commit)
|
|
@@ -44,15 +75,23 @@ module Dapp
|
|
|
44
75
|
|
|
45
76
|
protected
|
|
46
77
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def git
|
|
50
|
-
super(bare: true)
|
|
78
|
+
def git # TODO remove
|
|
79
|
+
super(bare: true, credentials: _rugged_credentials)
|
|
51
80
|
end
|
|
52
81
|
|
|
53
82
|
private
|
|
54
83
|
|
|
55
|
-
def
|
|
84
|
+
def url_protocol(url) # TODO remove
|
|
85
|
+
if (scheme = URI.parse(url).scheme).nil?
|
|
86
|
+
:noname
|
|
87
|
+
else
|
|
88
|
+
scheme.to_sym
|
|
89
|
+
end
|
|
90
|
+
rescue URI::InvalidURIError
|
|
91
|
+
:ssh
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def branch_format(name) # TODO remove
|
|
56
95
|
"origin/#{name.reverse.chomp('origin/'.reverse).reverse}"
|
|
57
96
|
end
|
|
58
97
|
end
|
|
@@ -11,11 +11,11 @@ module Dapp
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def add_change_env(**options)
|
|
14
|
-
|
|
14
|
+
(change_options[:env] ||= {}).merge!(options)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def add_change_label(**options)
|
|
18
|
-
|
|
18
|
+
(change_options[:label] ||= {}).merge!(options)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def add_change_cmd(value)
|
|
@@ -31,19 +31,19 @@ module Dapp
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def add_change_workdir(value)
|
|
34
|
-
|
|
34
|
+
change_options[:workdir] = value
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def add_change_user(value)
|
|
38
|
-
|
|
38
|
+
change_options[:user] = value
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def add_service_change_label(**options)
|
|
42
|
-
|
|
42
|
+
(service_change_options[:label] ||= {}).merge!(options)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
def add_env(
|
|
46
|
-
|
|
45
|
+
def add_env(**options)
|
|
46
|
+
(self.options[:env] ||= {}).merge!(options)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def add_volume(value)
|
|
@@ -65,8 +65,12 @@ module Dapp
|
|
|
65
65
|
def prepare_instructions(options)
|
|
66
66
|
options.map do |key, vals|
|
|
67
67
|
case key
|
|
68
|
-
when :
|
|
69
|
-
|
|
68
|
+
when :workdir, :user
|
|
69
|
+
[vals]
|
|
70
|
+
when :cmd, :entrypoint
|
|
71
|
+
vals = [''] if vals == [] && ::Dapp::Dapp.host_docker_minor_version >= Gem::Version.new('17.10')
|
|
72
|
+
[vals]
|
|
73
|
+
when :env, :label then options_to_args(vals)
|
|
70
74
|
else vals
|
|
71
75
|
end.map { |val| %(#{key.to_s.upcase} #{val}) }
|
|
72
76
|
end.flatten
|
|
@@ -75,7 +79,8 @@ module Dapp
|
|
|
75
79
|
protected
|
|
76
80
|
|
|
77
81
|
attr_reader :bash_commands, :service_bash_commands
|
|
78
|
-
attr_reader :change_options
|
|
82
|
+
attr_reader :change_options
|
|
83
|
+
attr_reader :service_change_options
|
|
79
84
|
attr_reader :options
|
|
80
85
|
|
|
81
86
|
def add_option(key, value)
|
|
@@ -94,49 +99,9 @@ module Dapp
|
|
|
94
99
|
hash[key] = (hash[key].nil? ? [value] : (hash[key] << value)).flatten
|
|
95
100
|
end
|
|
96
101
|
|
|
97
|
-
def from_change_options
|
|
98
|
-
return {} if from.nil?
|
|
99
|
-
[:entrypoint, :cmd].each_with_object({}) do |option, options|
|
|
100
|
-
options[option] = self.class.image_config_option(image_id: from.built_id, option: option)
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
102
|
def options_to_args(options)
|
|
105
103
|
options.map { |key, value| "#{key}=#{value}" }
|
|
106
104
|
end
|
|
107
|
-
|
|
108
|
-
def prepared_options
|
|
109
|
-
all_options.map { |key, vals| Array(vals).map { |val| "--#{key}=#{val}" } }.flatten.join(' ')
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def all_options
|
|
113
|
-
service_options.merge(options)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def all_bash_commands
|
|
117
|
-
Array(bash_commands) + Array(service_bash_commands)
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def service_options
|
|
121
|
-
{ entrypoint: dapp.bash_bin, name: container_name }
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def prepared_change
|
|
125
|
-
prepare_instructions(all_change_options).map { |instruction| %(-c '#{instruction}') }.join(' ')
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def all_change_options
|
|
129
|
-
from_change_options.merge(change_options.merge(service_change_options) { |_, v1, v2| [v1, v2].flatten })
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def prepared_bash_command
|
|
133
|
-
dapp.shellout_pack prepared_commands.join(' && ')
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def prepared_commands
|
|
137
|
-
return [dapp.true_bin] if all_bash_commands.empty?
|
|
138
|
-
all_bash_commands
|
|
139
|
-
end
|
|
140
105
|
end
|
|
141
106
|
end # Image
|
|
142
107
|
end # Dimg
|
|
@@ -2,6 +2,8 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
module Image
|
|
4
4
|
class Scratch < Stage
|
|
5
|
+
include Helper::Tar
|
|
6
|
+
|
|
5
7
|
def initialize(**_kwargs)
|
|
6
8
|
super
|
|
7
9
|
@from_archives = []
|
|
@@ -12,20 +14,44 @@ module Dapp
|
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
def build!(**_kwargs)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# build_from_command = if from_archives.empty?
|
|
19
|
-
# "#{dapp.tar_bin} c --files-from /dev/null"
|
|
20
|
-
# else
|
|
21
|
-
# "#{dapp.cat_bin} #{from_archives.join(' ')}"
|
|
22
|
-
# end
|
|
23
|
-
# @built_id = dapp.system_shellout!("#{build_from_command} | docker import #{prepared_change} - ").stdout.strip
|
|
17
|
+
@built_id = dapp.shellout!("docker import #{prepared_change} #{archive}").stdout.strip
|
|
18
|
+
ensure
|
|
19
|
+
FileUtils.rm_rf(tmp_path)
|
|
24
20
|
end
|
|
25
21
|
|
|
26
22
|
protected
|
|
27
23
|
|
|
28
24
|
attr_accessor :from_archives
|
|
25
|
+
|
|
26
|
+
def archive
|
|
27
|
+
tmp_path('archive.tar').tap do |archive_path|
|
|
28
|
+
tar_write(archive_path) do |common_tar|
|
|
29
|
+
from_archives.each do |from_archive|
|
|
30
|
+
tar_gz_read(from_archive) do |tar|
|
|
31
|
+
tar.each_entry do |entry|
|
|
32
|
+
mode = entry.header.mode
|
|
33
|
+
path = entry.full_name
|
|
34
|
+
|
|
35
|
+
if entry.directory?
|
|
36
|
+
common_tar.mkdir path, mode
|
|
37
|
+
elsif entry.symlink?
|
|
38
|
+
common_tar.add_symlink path, entry.header.linkname, mode
|
|
39
|
+
else
|
|
40
|
+
common_tar.add_file path, mode do |tf|
|
|
41
|
+
tf.write entry.read
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def tmp_path(*path)
|
|
52
|
+
@tmp_path ||= Dir.mktmpdir('dapp-scratch-', dapp.tmp_base_dir)
|
|
53
|
+
dapp.make_path(@tmp_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
|
54
|
+
end
|
|
29
55
|
end # Stage
|
|
30
56
|
end # Image
|
|
31
57
|
end # Dimg
|
|
@@ -1,11 +1,60 @@
|
|
|
1
1
|
module Dapp
|
|
2
2
|
module Dimg
|
|
3
3
|
module Image
|
|
4
|
-
class Stage
|
|
4
|
+
class Stage
|
|
5
5
|
include Argument
|
|
6
6
|
|
|
7
|
+
attr_reader :from
|
|
8
|
+
attr_reader :name
|
|
9
|
+
attr_reader :dapp
|
|
10
|
+
|
|
11
|
+
class << self
|
|
12
|
+
def image_by_name(name:, **kwargs)
|
|
13
|
+
images[name] ||= new(name: name, **kwargs)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def image_reset(name)
|
|
17
|
+
images.delete(name)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def images
|
|
21
|
+
@images ||= {}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def image_name_format
|
|
25
|
+
"#{DockerRegistry.repo_name_format}(:(?<tag>#{tag_format}))?"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def tag_format
|
|
29
|
+
'(?![-.])[a-zA-Z0-9_.-]{1,127}'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def image_name?(name)
|
|
33
|
+
!(/^#{image_name_format}$/ =~ name).nil?
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def tag?(name)
|
|
37
|
+
!(/^#{tag_format}$/ =~ name).nil?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def save!(dapp, image_or_images, file_path, verbose: false, quiet: false)
|
|
41
|
+
ruby2go_command(dapp, command: :save, options: { images: Array(image_or_images), file_path: file_path })
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def load!(dapp, file_path, verbose: false, quiet: false)
|
|
45
|
+
ruby2go_command(dapp, command: :load, options: { file_path: file_path })
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def ruby2go_command(dapp, command:, **options)
|
|
49
|
+
(options[:options] ||= {}).merge!(host_docker_config_dir: dapp.class.host_docker_config_dir)
|
|
50
|
+
dapp.ruby2go_image({ command: command }.merge(options)).tap do |res|
|
|
51
|
+
raise Error::Build, code: :ruby2go_image_command_failed_unexpected_error, data: { command: command, message: res["error"] } unless res["error"].nil?
|
|
52
|
+
break res['data']
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
7
57
|
def initialize(name:, dapp:, built_id: nil, from: nil)
|
|
8
|
-
@container_name = "#{name[/[[^:].]*/]}.#{SecureRandom.hex(4)}"
|
|
9
58
|
@built_id = built_id
|
|
10
59
|
|
|
11
60
|
@bash_commands = []
|
|
@@ -14,80 +63,210 @@ module Dapp
|
|
|
14
63
|
@change_options = {}
|
|
15
64
|
@service_change_options = {}
|
|
16
65
|
|
|
17
|
-
|
|
66
|
+
@from = from
|
|
67
|
+
@name = name
|
|
68
|
+
@dapp = dapp
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def tagged?
|
|
72
|
+
not image_inspect.empty?
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def built?
|
|
76
|
+
!built_id.nil?
|
|
18
77
|
end
|
|
19
78
|
|
|
20
79
|
def built_id
|
|
21
80
|
@built_id ||= id
|
|
22
81
|
end
|
|
23
82
|
|
|
83
|
+
def id
|
|
84
|
+
image_inspect["Id"]
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def labels
|
|
88
|
+
built_image_inspect!.fetch('Config', {}).fetch('Labels', {}) || {}
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def created_at
|
|
92
|
+
built_image_inspect!["Created"]
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def size
|
|
96
|
+
Float(built_image_inspect!["Size"])
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def built_image_inspect!
|
|
100
|
+
built_image_inspect
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def built_image_inspect
|
|
104
|
+
@built_image_inspect || image_inspect
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def reset_image_inspect
|
|
108
|
+
@image_inspect = nil
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def image_inspect
|
|
112
|
+
ruby2go_command(:inspect, short_image_option: true) if @image_inspect.nil?
|
|
113
|
+
@image_inspect
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def pull!
|
|
117
|
+
dapp.log_secondary_process(dapp.t(code: 'process.image_pull', data: { name: name })) do
|
|
118
|
+
ruby2go_command(:pull)
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def push!
|
|
123
|
+
dapp.log_secondary_process(dapp.t(code: 'process.image_push', data: { name: name })) do
|
|
124
|
+
ruby2go_command(:push)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
24
128
|
def build!
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
129
|
+
res = self.dapp.ruby2go_image(**ruby2go_image_build_options)
|
|
130
|
+
if res["error"].nil?
|
|
131
|
+
set_ruby2go_state_hash(JSON.load(res['data']['image']))
|
|
132
|
+
elsif res["error"].start_with? "container run failed"
|
|
133
|
+
raise Error::Build, code: :ruby2go_image_command_failed, data: { command: "build" }
|
|
134
|
+
else
|
|
135
|
+
raise Error::Build, code: :ruby2go_image_command_failed_unexpected_error, data: { command: "build", message: res["error"] }
|
|
136
|
+
end
|
|
29
137
|
end
|
|
30
138
|
|
|
31
|
-
def
|
|
32
|
-
|
|
139
|
+
def ruby2go_image_build_options
|
|
140
|
+
{
|
|
141
|
+
image: ruby2go_image_option,
|
|
142
|
+
command: :build,
|
|
143
|
+
options: {
|
|
144
|
+
introspection: {
|
|
145
|
+
before: dapp.introspect_before_error?,
|
|
146
|
+
after: dapp.introspect_error?
|
|
147
|
+
},
|
|
148
|
+
host_docker_config_dir: dapp.class.host_docker_config_dir,
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def introspect!
|
|
154
|
+
ruby2go_command(:introspect)
|
|
33
155
|
end
|
|
34
156
|
|
|
35
157
|
def export!(name)
|
|
36
|
-
|
|
37
|
-
image.push!
|
|
38
|
-
image.untag!
|
|
39
|
-
end
|
|
158
|
+
ruby2go_command(:export, options: { name: name })
|
|
40
159
|
end
|
|
41
160
|
|
|
42
161
|
def tag!(name)
|
|
43
|
-
|
|
44
|
-
self.class.tag!(id: image.built_id, tag: image.name)
|
|
45
|
-
end
|
|
162
|
+
ruby2go_command(:tag, options: { name: name })
|
|
46
163
|
end
|
|
47
164
|
|
|
48
165
|
def import!(name)
|
|
49
|
-
|
|
50
|
-
image.pull!
|
|
51
|
-
@built_id = image.built_id
|
|
52
|
-
save_in_cache!
|
|
53
|
-
image.untag!
|
|
54
|
-
end
|
|
166
|
+
ruby2go_command(:import, options: { name: name })
|
|
55
167
|
end
|
|
56
168
|
|
|
57
169
|
def save_in_cache!
|
|
58
|
-
|
|
59
|
-
self.class.tag!(id: built_id, tag: name)
|
|
170
|
+
ruby2go_command(:save_in_cache)
|
|
60
171
|
end
|
|
61
172
|
|
|
62
|
-
def
|
|
63
|
-
|
|
64
|
-
|
|
173
|
+
def untag!
|
|
174
|
+
ruby2go_command(:untag)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def ruby2go_command(command, short_image_option: false, options: {})
|
|
178
|
+
command_options = ruby2go_command_options(command, short_image_option: short_image_option).in_depth_merge(options: options)
|
|
179
|
+
self.class.ruby2go_command(dapp, **command_options).tap do |data|
|
|
180
|
+
set_ruby2go_state_hash(JSON.load(data['image']))
|
|
181
|
+
end
|
|
65
182
|
end
|
|
66
183
|
|
|
67
|
-
|
|
184
|
+
def ruby2go_command_options(command, short_image_option: false)
|
|
185
|
+
image = begin
|
|
186
|
+
if short_image_option
|
|
187
|
+
ruby2go_short_image_option
|
|
188
|
+
else
|
|
189
|
+
ruby2go_image_option
|
|
190
|
+
end
|
|
191
|
+
end
|
|
68
192
|
|
|
69
|
-
|
|
193
|
+
{
|
|
194
|
+
image: image,
|
|
195
|
+
command: command,
|
|
196
|
+
}
|
|
197
|
+
end
|
|
70
198
|
|
|
71
|
-
def
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
rescue ::Dapp::Error::Shellout => error
|
|
75
|
-
dapp.log_warning(desc: { code: :launched_command, data: { command: prepared_commands.join(' && ') }, context: :container })
|
|
199
|
+
def ruby2go_image_option
|
|
200
|
+
JSON.dump(get_ruby2go_state_hash)
|
|
201
|
+
end
|
|
76
202
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
raise Exception::IntrospectImage, data: { built_id: built_id,
|
|
80
|
-
options: prepared_options,
|
|
81
|
-
rmi: dapp.introspect_error?,
|
|
82
|
-
error: error }
|
|
203
|
+
def ruby2go_short_image_option
|
|
204
|
+
JSON.dump(get_ruby2go_short_state_hash)
|
|
83
205
|
end
|
|
84
206
|
|
|
85
|
-
def
|
|
86
|
-
|
|
207
|
+
def get_ruby2go_state_hash
|
|
208
|
+
[
|
|
209
|
+
:name,
|
|
210
|
+
:from,
|
|
211
|
+
:built_id,
|
|
212
|
+
:built_image_inspect,
|
|
213
|
+
:image_inspect,
|
|
214
|
+
:bash_commands,
|
|
215
|
+
:service_bash_commands,
|
|
216
|
+
:options,
|
|
217
|
+
:change_options,
|
|
218
|
+
:service_change_options,
|
|
219
|
+
].map do |name|
|
|
220
|
+
if name == :from
|
|
221
|
+
[name, from.get_ruby2go_state_hash] unless from.nil?
|
|
222
|
+
elsif name == :built_image_inspect && built_image_inspect.empty?
|
|
223
|
+
elsif name == :image_inspect && image_inspect.empty?
|
|
224
|
+
else
|
|
225
|
+
[name, send(name)]
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
.compact
|
|
229
|
+
.to_h
|
|
87
230
|
end
|
|
88
231
|
|
|
89
|
-
def
|
|
90
|
-
|
|
232
|
+
def get_ruby2go_short_state_hash
|
|
233
|
+
[
|
|
234
|
+
:name,
|
|
235
|
+
:bash_commands,
|
|
236
|
+
:service_bash_commands,
|
|
237
|
+
:options,
|
|
238
|
+
:change_options,
|
|
239
|
+
:service_change_options,
|
|
240
|
+
].map do |name|
|
|
241
|
+
[name, send(name)]
|
|
242
|
+
end
|
|
243
|
+
.compact
|
|
244
|
+
.to_h
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def set_ruby2go_state_hash(state_hash)
|
|
248
|
+
state_hash.each do |name, value|
|
|
249
|
+
variable = "@#{name}".to_sym
|
|
250
|
+
|
|
251
|
+
case name
|
|
252
|
+
when "from"
|
|
253
|
+
from.set_ruby2go_state_hash(value) unless from.nil? || value.nil?
|
|
254
|
+
when "built_id"
|
|
255
|
+
if value.to_s.empty?
|
|
256
|
+
@built_id = nil
|
|
257
|
+
else
|
|
258
|
+
@built_id = value
|
|
259
|
+
end
|
|
260
|
+
when "image_inspect"
|
|
261
|
+
instance_variable_set(variable, (value || {}))
|
|
262
|
+
when "options", "change_options", "service_change_options"
|
|
263
|
+
instance_variable_set(variable, (value || {}).reject { |_, v| v.nil? || v.empty? }.symbolize_keys)
|
|
264
|
+
when "bash_commands", "service_bash_commands"
|
|
265
|
+
instance_variable_set(variable, value || [])
|
|
266
|
+
else
|
|
267
|
+
instance_variable_set(variable, value)
|
|
268
|
+
end
|
|
269
|
+
end
|
|
91
270
|
end
|
|
92
271
|
end # Stage
|
|
93
272
|
end # Image
|
data/lib/dapp/dimg/lock/file.rb
CHANGED
|
@@ -10,18 +10,18 @@ module Dapp
|
|
|
10
10
|
end
|
|
11
11
|
end # << self
|
|
12
12
|
|
|
13
|
-
attr_reader :
|
|
13
|
+
attr_reader :locks_path
|
|
14
14
|
|
|
15
|
-
def initialize(
|
|
15
|
+
def initialize(locks_path, name)
|
|
16
16
|
super(name)
|
|
17
17
|
|
|
18
|
-
@
|
|
18
|
+
@locks_path = Pathname.new(locks_path).tap(&:mkpath)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
protected
|
|
22
22
|
|
|
23
23
|
def lock_file_path
|
|
24
|
-
|
|
24
|
+
locks_path.join(MurmurHash3::V32.str_hexdigest(name))
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def _do_lock(timeout, on_wait, readonly)
|