capistrano-dockercompose-interactive 0.0.1 → 0.0.2

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: 1b833de26496b0e466f5c83d7f2b0f923e5531e9
4
- data.tar.gz: 9faaca5cfa517c0abc3483611798ef4b0f8a18aa
3
+ metadata.gz: bc7603826a1a9abbe0088d78f3944e7725bbe687
4
+ data.tar.gz: 1fa307f47928da58951dc58ddcd9e0b01aff6cf6
5
5
  SHA512:
6
- metadata.gz: 5132dce2dd51224179068dfc56df1c5097e011f5b60d3d7cb3d8e5bc3ba9b798071f2ad69466435028bb5089a4449878376305bd11791e598e83357745c44e2f
7
- data.tar.gz: 726080d9da09de26eb62071e5dc99d7bdfbd682fdc254d20c14ebbe36151e104afd88a8196e66396a97c5889a65a7740bb1c7afff11794813635cbf2ee329fc8
6
+ metadata.gz: c1aaecebc7e9e73e44cfeaf6023ca791048a949968adc95ebe629b178ab5b937599660da566ec483f3f2469425827e2773ceca2534a0f34906217c67df0f6e10
7
+ data.tar.gz: 6c4d8df7fcddd11bb254aa988b7692387ac92b00541cd8828bdfe633af803fcf4092dc3181a4eb7283084620ae450b962a0468681517ae61ff0ef6086ab712da
@@ -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-dockercompose-interactive'
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.date = '2018-02-01'
9
9
  spec.summary = 'Helps managing docker compose excution on local or remote with inetractive shell support'
10
10
  spec.description = spec.summary
@@ -0,0 +1,32 @@
1
+ require 'yaml'
2
+ require_relative './service'
3
+
4
+
5
+ class Instance
6
+ def initialize(file='', project=nil)
7
+ @file = file
8
+ @project = project
9
+ end
10
+
11
+ def config
12
+ return @config if @config
13
+ raw_config = execute_compose_command('config', true)
14
+ @config = YAML.load(raw_config)
15
+ end
16
+
17
+ def execute_compose_command(cmd, capture = false)
18
+ project = @project.empty? ? "" : "-p #{@project}"
19
+ file = @file.empty? ? "" : "--file #{@file}"
20
+ cmd = "#{file} #{project} #{cmd}"
21
+
22
+ if capture
23
+ return DockerCompose::Interactive.capture_local_or_remote cmd
24
+ else
25
+ DockerCompose::Interactive.execute_local_or_remote_interactive cmd
26
+ end
27
+ end
28
+
29
+ def service(name)
30
+ Service.new(self, name, config()['services'][name])
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+
2
+ class Service
3
+ def initialize(compose, name, config)
4
+ @compose, @name, @config = compose, name, config
5
+ end
6
+
7
+ def id
8
+ result = @compose.execute_compose_command("ps -q #{@name}", true)
9
+ result.split(';').shift.strip
10
+ end
11
+
12
+ def exec(cmd, capture=false)
13
+ cmd = "exec #{@name} #{cmd}"
14
+ @compose.execute_compose_command(cmd, capture)
15
+ end
16
+
17
+ def run(cmd, capture=false, args="--rm")
18
+ cmd = "run #{args} #{@name} #{cmd}"
19
+ @compose.execute_compose_command(cmd, capture)
20
+ end
21
+ end
@@ -1,96 +1,48 @@
1
- require 'yaml'
1
+ module DockerCompose
2
+ module Interactive
3
+ require_relative './interactive/instance'
2
4
 
3
- module DockerCompose::Interactive
4
- def DockerCompose.instance(file='', project='')
5
- Instance.new(file, project)
6
- end
7
-
8
- def DockerCompose.local_stage?
9
- fetch(:local_stage_name, 'local').to_sym == fetch(:stage).to_sym
10
- end
5
+ def self.instance(file='', project='')
6
+ Instance.new(file, project)
7
+ end
11
8
 
12
- def DockerCompose.capture_local_or_remote(cmd)
13
- puts "runnig: docker-compose #{cmd}"
14
- result = ''
15
- if local_stage?
16
- run_locally do
17
- result = capture "docker-compose #{cmd}"
18
- end
19
- else
20
- on roles :container_host do |_host|
21
- within current_path do
22
- result = capture "cd #{current_path} && docker-compose #{cmd}"
23
- end
24
- end
9
+ def self.local_stage?
10
+ fetch(:local_stage_name, 'local').to_sym == fetch(:stage).to_sym
25
11
  end
26
- result
27
- end
28
12
 
29
- def DockerCompose.execute_local_or_remote_interactive(cmd)
30
- puts "runnig: docker-compose #{cmd}"
31
- if local_stage?
32
- run_locally do
33
- execute "docker-compose #{cmd}"
34
- end
35
- else
36
- on roles :container_host do |_host|
37
- run_interactively _host do
13
+ def self.capture_local_or_remote(cmd)
14
+ puts "runnig: docker-compose #{cmd}"
15
+ result = ''
16
+ if local_stage?
17
+ run_locally do
18
+ result = capture "docker-compose #{cmd}"
19
+ end
20
+ else
21
+ on roles fetch(:docker_compose_interactive_roles) do |_host|
38
22
  within current_path do
39
- execute "cd #{current_path} && docker-compose #{cmd}"
23
+ result = capture "cd #{current_path} && docker-compose #{cmd}"
40
24
  end
41
25
  end
42
26
  end
43
- end
44
- end
45
-
46
- class Instance
47
- def initialize(file='', project=nil)
48
- @file = file
49
- @project = project
50
- end
51
-
52
- def config
53
- return @config if @config
54
- raw_config = execute('config', true)
55
- @config = YAML.load(raw_config)
27
+ result
56
28
  end
57
29
 
58
- def execute_compose_command(cmd, capture = false)
59
- project = @project.empty? ? "" : "-p #{@project}"
60
- file = @file.empty? ? "" : "--file #{@file}"
61
- cmd = "#{file} #{project} #{cmd}"
62
-
63
- if capture
64
- return DockerCompose.capture_local_or_remote cmd
30
+ def self.execute_local_or_remote_interactive(cmd)
31
+ puts "runnig: docker-compose #{cmd}"
32
+ if local_stage?
33
+ run_locally do
34
+ execute "docker-compose #{cmd}"
35
+ end
65
36
  else
66
- DockerCompose.execute_local_or_remote_interactive cmd
37
+ on roles fetch(:docker_compose_interactive_roles) do |host|
38
+ run_interactively host do
39
+ within current_path do
40
+ execute "cd #{current_path} && docker-compose #{cmd}"
41
+ end
42
+ end
43
+ end
67
44
  end
68
45
  end
69
46
 
70
- def service(name)
71
- Service.new(self, name, config()['services'][name])
72
- end
73
47
  end
74
-
75
- class Service
76
- def initialize(compose, name, config)
77
- @compose, @name, @config = compose, name, config
78
- end
79
-
80
- def id
81
- result = @compose.execute_compose_command("ps -q #{@name}", true)
82
- result.split(';').shift.strip
83
- end
84
-
85
- def exec(cmd, capture=false)
86
- cmd = "exec #{@name} #{cmd}"
87
- @compose.execute_compose_command(cmd, capture)
88
- end
89
-
90
- def run(cmd, capture=false, args="--rm")
91
- cmd = "run #{args} #{@name} #{cmd}"
92
- @compose.execute_compose_command(cmd, capture)
93
- end
94
- end
95
-
96
48
  end
@@ -1,7 +1,7 @@
1
1
 
2
2
  namespace :dockercompose do
3
3
  namespace :interactive do
4
-
4
+
5
5
  end
6
6
  end
7
7
 
@@ -10,5 +10,6 @@ namespace :load do
10
10
  set :local_stage_name, :local
11
11
  set :docker_compose_interactive_file, ''
12
12
  set :docker_compose_interactive_project, ''
13
+ set :docker_compose_interactive_roles, :container_host
13
14
  end
14
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-dockercompose-interactive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Hanoldt
@@ -82,6 +82,8 @@ files:
82
82
  - capistrano-dockercompose-interactive.gemspec
83
83
  - lib/capistrano-dockercompose-interactive.rb
84
84
  - lib/capistrano/dockercompose/interactive.rb
85
+ - lib/capistrano/dockercompose/interactive/instance.rb
86
+ - lib/capistrano/dockercompose/interactive/service.rb
85
87
  - lib/capistrano/tasks/docker-compose-interactive.rb
86
88
  homepage: https://github.com/creative-workflow/capistrano-dockercompose-interactive
87
89
  licenses: