capistrano-container 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73ad25116b2851d2d71bf5b45428d6e3d8186a01
4
- data.tar.gz: d948b1ece3458618a3b144282d270048d220be92
3
+ metadata.gz: b66d2f2836473bfc923351f031c8df1e6631734c
4
+ data.tar.gz: a80e51690199e3b4bf45c62017e87f5120db9658
5
5
  SHA512:
6
- metadata.gz: c3fff3454cd63231767fc9ecb861d0658aaf1d1b5de85a0ca51e8eda0c962c50baf36280f7882545ce99279d0d37fe496d23aad853cde9b5b5a850b3bdc387f7
7
- data.tar.gz: 25f873823901e468a632ad122aac81db0d60c751fc7febfcbffc132fa9b0d803f4750f27d198ca1a346da8050c8cc558448dcacbed1a3c2a9bdaa7eef68a4272
6
+ metadata.gz: 0249e96887773e12a302fb6b6e18f46e0ed681711e18285467f954097231aa07e969618a5c11e7ff0cd70ad37b6e2aa613ae86e4e48ddc81f105c4993d20e259
7
+ data.tar.gz: 2c8161968220469a38f5a14c89b6771c03f77c16c2149e6ef96995d26b8e2aab9dcb7d4823cb47b18b0df063fafb9ab95938002413dbf9c9be4c224450405d1b
data/README.md CHANGED
@@ -6,6 +6,8 @@ This project is in an early stage but helps me alot dealing with my container de
6
6
 
7
7
  This gem does not handle Dockerfiles or such things, for that there are enough capistrano modules available.
8
8
 
9
+ Container auto detect if they should execute on local or remote depending on stage (see below).
10
+
9
11
  ## Installation
10
12
 
11
13
  Add this lines to your application's Gemfile:
@@ -143,14 +145,24 @@ A container has the following methods:
143
145
  def invoke(task_name)
144
146
  ```
145
147
 
148
+ ### local stage detection
149
+ Local stage per default is named ```:local```. If you which to change do ```set :local_stage_name, :local``` in your stage config.
150
+
146
151
  ## TODO
147
152
  * Write tests.
148
- * Implement provider pattern for other container manager.
153
+ * Implement adapter pattern for other container manager.
149
154
 
150
155
  ## Changes
156
+ ### Version 0.0.5
157
+ * container now auto detect if they should execute, download and upload on local or remote host.
158
+
151
159
  ### Version 0.0.4
152
160
  * description
153
-
161
+
162
+ ### Version 0.0.3
163
+ * add local stage detection
164
+ * container autodetect if they should execute on local or remote host
165
+
154
166
  ### Version 0.0.3
155
167
  * use sh instead of bash for docker exec
156
168
  * use correct github url
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'capistrano-container'
7
- spec.version = '0.0.4'
7
+ spec.version = '0.0.5'
8
8
  spec.date = '2016-09-26'
9
9
  spec.summary = 'Helps managing docker container and files inside docker container for Capistrano 3.x'
10
10
  spec.description = spec.summary
@@ -69,7 +69,7 @@ module Capistrano
69
69
 
70
70
  else
71
71
  on roles(:container_host) do
72
- puts capture("docker #{command}")
72
+ puts capture("docker #{command}")
73
73
  end
74
74
  end
75
75
  end
@@ -81,5 +81,19 @@ module Capistrano
81
81
 
82
82
  fetch(:container_id)
83
83
  end
84
+
85
+ def local_stage?
86
+ fetch(:local_stage_name).to_sym == fetch(:stage).to_sym
87
+ end
88
+
89
+ def execute_local_or_remote(cmd)
90
+ if local_stage?
91
+ run_locally do
92
+ execute cmd
93
+ end
94
+ else
95
+ execute cmd
96
+ end
97
+ end
84
98
  end
85
99
  end
@@ -30,6 +30,11 @@ class Instance
30
30
  end
31
31
 
32
32
  def upload!(src, target)
33
+ if @dsl.local_stage?
34
+ self.cp(src, "#{container_id}:#{target}")
35
+ return
36
+ end
37
+
33
38
  tmp = "#{@config[:shared_on_host]}/capistrano-docker.#{SecureRandom.uuid}.tmp"
34
39
 
35
40
  @dsl.upload!(src, tmp)
@@ -40,6 +45,11 @@ class Instance
40
45
  end
41
46
 
42
47
  def download!(src, target)
48
+ if @dsl.local_stage?
49
+ self.cp("#{container_id}:#{src}", target)
50
+ return
51
+ end
52
+
43
53
  tmp = "#{@config[:shared_on_host]}/capistrano-docker.#{SecureRandom.uuid}.tmp"
44
54
 
45
55
  self.cp("#{container_id}:#{src}", tmp)
@@ -52,13 +62,13 @@ class Instance
52
62
  def execute(command)
53
63
  command = "docker exec -i #{container_id} sh -c '#{command.gsub("'", "\'")}'"
54
64
 
55
- @dsl.execute(command)
65
+ @dsl.execute_local_or_remote(command)
56
66
  end
57
67
 
58
68
  def cp(src, target)
59
69
  command = "docker cp #{src} #{target}"
60
70
 
61
- @dsl.execute(command)
71
+ @dsl.execute_local_or_remote(command)
62
72
  end
63
73
 
64
74
  def invoke(task_name)
@@ -1,9 +1,9 @@
1
1
  require_relative '../container/mixins.rb'
2
2
 
3
3
  namespace :container do
4
- desc "update docker"
5
- task :update_docker do
6
- run_container_command("wget -qO- https://get.docker.com/ | sh")
4
+ desc "show docker version"
5
+ task :version do
6
+ run_container_command("-v")
7
7
  end
8
8
 
9
9
  desc "show all docker containers"
@@ -18,3 +18,9 @@ namespace :container do
18
18
 
19
19
  Mixins.define_tasks
20
20
  end
21
+
22
+ namespace :load do
23
+ task :defaults do
24
+ set :local_stage_name, :local
25
+ end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-container
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Hanoldt