dockerun 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -11
  3. data/Rakefile +0 -2
  4. data/Rakefile.bak +8 -0
  5. data/dockerspec.sample +104 -0
  6. data/{dockerun.gemspec → dockerun.gemspec.bak} +20 -22
  7. data/exe/dockerun +8 -115
  8. data/lib/dockerun/cli/command.rb +133 -0
  9. data/lib/dockerun/cli/command_factory.rb +313 -0
  10. data/lib/dockerun/cli/command_result.rb +67 -0
  11. data/lib/dockerun/cli/delete_container.rb +55 -0
  12. data/lib/dockerun/cli/delete_image.rb +99 -0
  13. data/lib/dockerun/cli/run.rb +39 -0
  14. data/lib/dockerun/cli/user_info.rb +39 -0
  15. data/lib/dockerun/cli_engine.rb +104 -0
  16. data/lib/dockerun/config.rb +39 -86
  17. data/lib/dockerun/context/rubygems.rb +142 -0
  18. data/lib/dockerun/dfile.rb +204 -0
  19. data/lib/dockerun/docker_cli.rb +124 -0
  20. data/lib/dockerun/dsl.rb +291 -0
  21. data/lib/dockerun/version.rb +1 -1
  22. data/lib/dockerun.rb +31 -24
  23. data/sig/dockerun.rbs +4 -0
  24. metadata +62 -73
  25. data/.release_history.yml +0 -56
  26. data/Dockerfile.dockerun +0 -38
  27. data/Gemfile +0 -15
  28. data/Gemfile.lock +0 -94
  29. data/bin/console +0 -15
  30. data/bin/setup +0 -8
  31. data/lib/dockerun/bundler_helper.rb +0 -25
  32. data/lib/dockerun/cli_prompt.rb +0 -18
  33. data/lib/dockerun/command/dockerun.rb +0 -30
  34. data/lib/dockerun/command/init.rb +0 -79
  35. data/lib/dockerun/command/remove_container.rb +0 -99
  36. data/lib/dockerun/command/reset_image.rb +0 -107
  37. data/lib/dockerun/command/run.rb +0 -226
  38. data/lib/dockerun/command/run_new_container.rb +0 -94
  39. data/lib/dockerun/command/run_new_image.rb +0 -89
  40. data/lib/dockerun/command/stop_container.rb +0 -90
  41. data/lib/dockerun/docker_command_factory_helper.rb +0 -19
  42. data/lib/dockerun/docker_container_helper.rb +0 -213
  43. data/lib/dockerun/docker_image_helper.rb +0 -381
  44. data/lib/dockerun/template/general_template_writer.rb +0 -14
  45. data/lib/dockerun/template/jruby_template_writer.rb +0 -24
  46. data/lib/dockerun/template/template_engine.rb +0 -27
  47. data/lib/dockerun/template/template_writer.rb +0 -102
  48. data/lib/dockerun/user_info.rb +0 -37
  49. data/template/Dockerfile_general.erb +0 -41
  50. data/template/setup_ruby_devenv.rb.erb +0 -22
@@ -1,226 +0,0 @@
1
-
2
- require_relative '../config'
3
- require_relative '../docker_container_helper'
4
-
5
- require_relative '../cli_prompt'
6
- require_relative '../docker_command_factory_helper'
7
-
8
- require_relative '../docker_image_helper'
9
-
10
- module Dockerun
11
- module Command
12
-
13
- class Run
14
- include TTY::Option
15
- include TR::CondUtils
16
- include CommandHelper::DockerContainerHelper
17
- include DockerCommandFactoryHelper
18
- include CommandHelper::DockerImageHelper
19
- include CliHelper::CliPrompt
20
-
21
- usage do
22
- program "dockerun"
23
- command "run"
24
- desc "Run docker instance from here"
25
- end
26
-
27
- argument :command_for_docker do
28
- optional
29
- desc "Command to be passed to docker"
30
- end
31
-
32
- def run(&block)
33
- if params[:help]
34
- print help
35
- exit(0)
36
-
37
- else
38
-
39
- # find history file
40
- config = ::Dockerun::Config.from_storage
41
-
42
- imageName = nil
43
-
44
- if config.image_names.length == 0
45
- imageName = nil
46
- elsif config.image_names.length == 1
47
- imageName = config.image_names.first
48
- else
49
- selImg = cli.select("Please select one of the Docker image options below : ") do |m|
50
- config.image_names.each do |n|
51
- m.choice n, n
52
- end
53
-
54
- m.choice "New image", :new
55
- end
56
-
57
- case selImg
58
- when :new
59
- imageName = cli.ask("Please provide a new image name : ", required: true)
60
- else
61
- imageName = selImg
62
- end
63
- end
64
-
65
-
66
- imageName, mount_points = build_image_if_not_exist(imageName) do |ops, *val|
67
- case ops
68
- when :new_image_name
69
- cli.ask("Please provide a new image name : ".yellow, required: true)
70
-
71
- when :image_exist
72
- reuse = cli.yes? "Image '#{val.first}' already exist. Using existing image?"
73
- # proceed or not , new name
74
- [reuse, val.first]
75
-
76
- when :prompt_mount_points_starting
77
- cli.say "\n Mount Directory into Docker : \n", color: :yellow
78
-
79
- when :transfer_dev_gem_mapping?
80
- found = val.first
81
- cli.say(" It seems that the project has development gem attached to it : \n Found development gems (#{found.length}) : \n", color: :yellow)
82
- if not found.nil?
83
- found.each do |name, path|
84
- cli.say(" * #{name} [#{path}]\n", color: :yellow)
85
- end
86
- end
87
- cli.yes?(" Do you want to map the above development gems inside the docker? : ".yellow)
88
-
89
- when :workspace_root_inside_docker
90
- cli.ask("\n Workspace '#{val[2]}' shall be mapped to which directory inside the docker? : ".yellow, required: true, value: File.join(val.first, val[1]))
91
-
92
- when :map_project_dir
93
- res = cli.ask("\n Please provide path inside docker for current directory [Empty to skip mounting current directory] : ".yellow, value: File.join(val.first, File.basename(Dir.getwd)) )
94
- if is_empty?(res)
95
- cli.puts "\n Current directory '#{Dir.getwd}' shall not be available inside the docker".red
96
- end
97
- res
98
-
99
- when :volume_mapping_required?
100
- cli.yes?("\n Is there any other volume mapping required? ".yellow)
101
-
102
- when :source_prompt
103
- param = val.first
104
- msg = []
105
- if not param.nil?
106
- msg = param[:control]
107
- end
108
- cli.ask("\n Directory to share with docker [#{msg.join(", ")}] : ".yellow, required: true)
109
-
110
- when :destination_prompt
111
- src = val.first
112
- srcDir = File.basename(src)
113
- cli.ask("\n Directory inside docker : ".yellow, required: true, value: "/opt/#{srcDir}")
114
-
115
- when :add_to_bundle?
116
- cli.yes?("\n Add directory '#{val.first}' to bundler config local? ".yellow)
117
-
118
- when :add_more_volume_mapping?
119
- cli.yes?("\n Add more volume mapping? ".yellow)
120
-
121
- when :prompt_user_configurables
122
- vv = val.first
123
- cli.say "\n The following are the configurable items for the template '#{vv[:template]}' : \n".yellow
124
- res = { }
125
- vv[:userFields].each do |k,v|
126
- case v[:type]
127
- when :ask
128
- res[k] = cli.ask(v[:desc].yellow) do |s|
129
- s.required v[:required] if not_empty?(v[:required]) and is_bool?(v[:required])
130
- s.value v[:default].to_s if not_empty?(v[:default])
131
- end
132
-
133
- when :select
134
- res[k] = cli.select(v[:desc].yellow) do |m|
135
- v[:options].each do |opt, key|
136
- m.choice opt, key
137
- end
138
- #m.default v[:default] if not_empty?(v[:default])
139
- end
140
- end
141
- end
142
-
143
- res
144
-
145
- else
146
-
147
- end
148
- end
149
-
150
- config.add_image(imageName)
151
-
152
- contNames = config.container_names(imageName)
153
-
154
- selContName = nil
155
- port_mapping = {}
156
- if contNames.length == 0
157
- selContName = nil
158
- elsif contNames.length == 1
159
- selContName = contNames.first
160
- else
161
- sel = cli.select("Please select one of the container operations below : ") do |m|
162
- contNames.each do |n|
163
- m.choice n,n
164
- end
165
-
166
- m.choice "New Container", :new
167
- end
168
-
169
- case sel
170
- when :new
171
-
172
- else
173
- selContName = sel
174
- end
175
- end
176
-
177
- selContName, otherConfigs = run_docker_container(imageName, selContName, mount_points) do |ops, *args|
178
- case ops
179
- when :new_container_name
180
- cli.ask("\n Please provide a new container name : ".yellow, required: true)
181
- when :container_name_exist
182
- cli.yes?(" ** Container name '#{args.first}' already exist. Proceed with existing?".red)
183
-
184
- #when :transfer_dev_gem_mapping?
185
- # cli.yes?("It seems that the project has development gem attached to it. Do you want to map those development gems too inside the docker? ")
186
-
187
- #when :workspace_root_inside_docker
188
- # cli.ask(" Workspace '#{args[2]}' shall be mapped to which directory inside the docker? ", required: true, value: File.join(args.first, args[1]))
189
-
190
- #when :map_project_dir
191
- # cli.ask(" Please provide path inside docker for current directory [Empty to skip mounting current directory] : ", value: File.join(args.first, File.basename(Dir.getwd)), required: true)
192
-
193
- #when :volume_mapping_required?
194
- # cli.yes?("Is there any volume mapping required? ")
195
- #when :source_prompt
196
- # cli.ask("Directory to share with docker : ", required: true)
197
- #when :destination_prompt
198
- # src = args.first
199
- # srcDir = File.basename(src)
200
- # cli.ask("Directory to show inside docker : ", required: true, value: "/opt/#{srcDir}")
201
-
202
- #when :add_to_bundle?
203
- # cli.yes?(" Add directory '#{args.first}' to bundler config local? ")
204
-
205
- #when :add_mount_to_container
206
- # config.add_mount_to_container(imageName, *args)
207
- #when :add_more_volume_mapping?
208
- # cli.yes?("Add more volume mapping?")
209
- end
210
- end
211
-
212
- config.add_container(imageName, selContName)
213
-
214
- config.add_mount_to_container(imagename, selContName, mount_points)
215
-
216
- config.add_port_mapping_to_container(imagename, selContName, @otherConfigs[:port_mapping]) if not_empty?(@otherConfigs[:port_mapping])
217
-
218
- config.to_storage
219
-
220
- end
221
- end
222
-
223
- end
224
-
225
- end
226
- end
@@ -1,94 +0,0 @@
1
-
2
- require 'tty/prompt'
3
- require 'docker/cli'
4
-
5
- require_relative '../config'
6
- require_relative '../docker_container_helper'
7
-
8
- require_relative '../docker_command_factory_helper'
9
- require_relative '../cli_prompt'
10
-
11
- module Dockerun
12
- module Command
13
- class RunNewContainer
14
- include TTY::Option
15
- include TR::CondUtils
16
- include CommandHelper::DockerContainerHelper
17
-
18
- include DockerCommandFactoryHelper
19
- include CliHelper::CliPrompt
20
-
21
-
22
- usage do
23
- program "dockerun"
24
- command "run-new-container"
25
- desc "Run new container from same image"
26
- end
27
-
28
- def run
29
-
30
- if params[:help]
31
- print help
32
- exit(0)
33
-
34
- else
35
-
36
- config = ::Dockerun::Config.from_storage
37
-
38
- imageName = nil
39
- if is_empty?(config.image_names)
40
- STDERR.puts "Image name not availab eyet"
41
- exit(1)
42
- elsif config.image_names == 1
43
- imageName = config.image_names.first
44
- else
45
- imageName = cli.select("Please select the new container shall be based on which image : ") do |m|
46
- config.image_names.each do |n|
47
- m.choice n,n
48
- end
49
- end
50
- end
51
-
52
- contName, otherConfigs = run_docker_container(imageName, nil) do |ops, *args|
53
- case ops
54
- when :new_container_name
55
- cli.ask("Please provide a new container name : ", required: true)
56
- when :container_name_exist
57
- cli.yes?("Container name '#{args.first}' already exist. Proceed with existing?")
58
- when :volume_mapping_required?
59
- cli.yes?("Is there any volume mapping required? ")
60
- when :source_prompt
61
- cli.ask("Directory to share with docker : ", required: true)
62
- when :destination_prompt
63
- src = args.first
64
- srcDir = File.basename(src)
65
- cli.ask("Directory to show inside docker : ", required: true, value: "/opt/#{srcDir}")
66
- when :add_mount_to_container
67
- config.add_mount_to_container(imageName, *args)
68
- when :add_more_volume_mapping?
69
- cli.yes?("Add more volume mapping?")
70
- end
71
- end
72
-
73
- #contName = nil
74
- #loop do
75
- # contName = cli.ask("Please provide a new container name : ", required: true)
76
- # res = dcFact.find_from_all_container(contName).run
77
- # if not res[:result].failed? and not_empty?(res[:outStream])
78
- # STDERR.puts "Given container name '#{contName}' already taken. Please try again"
79
- # else
80
- # break
81
- # end
82
- #end
83
-
84
- #create_new_docker_container(config, contName, dcFact. cli)
85
- config.add_container(imageName, contName)
86
- config.to_storage
87
-
88
- end
89
-
90
- end
91
-
92
- end
93
- end
94
- end
@@ -1,89 +0,0 @@
1
-
2
- require_relative '../config'
3
- require_relative '../docker_container_helper'
4
-
5
- require_relative '../cli_prompt'
6
- require_relative '../docker_command_factory_helper'
7
-
8
- require_relative '../docker_image_helper'
9
-
10
- module Dockerun
11
- module Command
12
-
13
- class RunNewImage
14
- include TTY::Option
15
- include TR::CondUtils
16
- include CommandHelper::DockerContainerHelper
17
- include DockerCommandFactoryHelper
18
- include CommandHelper::DockerImageHelper
19
-
20
- usage do
21
- program "dockerun"
22
- command "run-new-image"
23
- desc "Run with new image"
24
- end
25
-
26
- argument :command_for_docker do
27
- optional
28
- desc "Command to be passed to docker"
29
- end
30
-
31
- def run(&block)
32
- if params[:help]
33
- print help
34
- exit(0)
35
-
36
- else
37
-
38
- # find history file
39
- config = ::Dockerun::Config.from_storage
40
-
41
- imageName, mount_points = build_image_if_not_exist(imageName) do |ops, val|
42
- case ops
43
- when :new_image_name
44
- cli.ask("Please provide a new image name : ", required: true)
45
- when :image_exist
46
- reuse = cli.yes? "Image '#{val}' already exist. Using existing image?"
47
- # proceed or not , new name
48
- [reuse, val]
49
- else
50
-
51
- end
52
- end
53
-
54
- config.add_image(imageName)
55
-
56
- contNames = config.container_names(imageName)
57
-
58
- selContName, otherConfigs = run_docker_container(imageName, selContName) do |ops, *args|
59
- case ops
60
- when :new_container_name
61
- cli.ask("Please provide a new container name : ", required: true)
62
- when :container_name_exist
63
- cli.yes?("Container name '#{args.first}' already exist. Proceed with existing?")
64
- when :volume_mapping_required?
65
- cli.yes?("Is there any volume mapping required? ")
66
- when :source_prompt
67
- cli.ask("Directory to share with docker : ", required: true)
68
- when :destination_prompt
69
- src = args.first
70
- srcDir = File.basename(src)
71
- cli.ask("Directory to show inside docker : ", required: true, value: "/opt/#{srcDir}")
72
- when :add_mount_to_container
73
- config.add_mount_to_container(imageName, *args)
74
- when :add_more_volume_mapping?
75
- cli.yes?("Add more volume mapping?")
76
- end
77
- end
78
-
79
- config.add_container(imageName, selContName)
80
-
81
- config.to_storage
82
-
83
- end
84
- end
85
-
86
- end
87
-
88
- end
89
- end
@@ -1,90 +0,0 @@
1
-
2
- require_relative '../cli_prompt'
3
- require_relative '../config'
4
- require_relative '../docker_container_helper'
5
-
6
- module Dockerun
7
- module Command
8
-
9
- class StopContainer
10
-
11
- include TTY::Option
12
- include TR::CondUtils
13
- include CommandHelper::DockerContainerHelper
14
- include DockerCommandFactoryHelper
15
- include CliHelper::CliPrompt
16
-
17
- usage do
18
- program "dockerun"
19
- command "stop"
20
- desc "Stop a running container"
21
- end
22
-
23
- def run(&block)
24
- if params[:help]
25
- print help
26
- exit(0)
27
-
28
- else
29
-
30
- # find history file
31
- config = ::Dockerun::Config.from_storage
32
-
33
- res = []
34
- opts = []
35
- config.image_names.each do |im|
36
- config.container_names(im).each do |cn|
37
- if is_container_exist?(cn)
38
- if is_container_running?(cn)
39
- res << "#{im} : #{cn} (Running)"
40
- opts << cn
41
- else
42
- res << "#{im} : #{cn} (Not Running)"
43
- end
44
- else
45
- res << "#{im} : #{cn} (Not Exist)"
46
- end
47
- end
48
- end
49
-
50
- if not opts.empty?
51
- cli.puts "\n Running status of container(s) : ".yellow
52
- res.sort.each do |r|
53
- cli.puts " * #{r}".yellow
54
- end
55
-
56
- cli.puts
57
- selConts = cli.multi_select("Please select which container to stop : ") do |m|
58
- opts.each do |o|
59
- m.choice o,o
60
- end
61
-
62
- m.choice "Abort", :quit
63
- end
64
-
65
- if selConts.include?(:quit)
66
- cli.puts " * Abort was one of the selected option. Command aborted.".red
67
- else
68
- selConts.each do |sc|
69
- begin
70
- stop_container(sc)
71
- cli.puts " Container '#{sc}' stopped successfully.".green
72
- rescue DockerContainerStopFailed => ex
73
- cli.puts " Container '#{sc}' failed to be stopped".red
74
- end
75
- end
76
- end
77
-
78
- else
79
- cli.say " * There is no container found to be running * ".yellow
80
- end
81
-
82
- cli.puts "\n Stop container command completed successfully \n\n".yellow
83
-
84
- end
85
- end
86
-
87
- end
88
-
89
- end
90
- end
@@ -1,19 +0,0 @@
1
-
2
- require 'docker/cli'
3
-
4
- module Dockerun
5
-
6
- #
7
- # Link to CommandFactory
8
- #
9
- module DockerCommandFactoryHelper
10
-
11
- def dcFact
12
- if @dcFact.nil?
13
- @dcFact = Docker::Cli::CommandFactory.new
14
- end
15
- @dcFact
16
- end
17
-
18
- end
19
- end