dockerun 0.3.5 → 0.4.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.
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 +40 -70
  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 -221
  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 -204
  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,221 +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
- if contNames.length == 0
156
- selContName = nil
157
- elsif contNames.length == 1
158
- selContName = contNames.first
159
- else
160
- sel = cli.select("Please select one of the container operations below : ") do |m|
161
- contNames.each do |n|
162
- m.choice n,n
163
- end
164
-
165
- m.choice "New Container", :new
166
- end
167
-
168
- case sel
169
- when :new
170
-
171
- else
172
- selContName = sel
173
- end
174
- end
175
-
176
- selContName = run_docker_container(imageName, selContName, mount_points) do |ops, *args|
177
- case ops
178
- when :new_container_name
179
- cli.ask("\n Please provide a new container name : ".yellow, required: true)
180
- when :container_name_exist
181
- cli.yes?(" ** Container name '#{args.first}' already exist. Proceed with existing?".red)
182
-
183
- #when :transfer_dev_gem_mapping?
184
- # 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? ")
185
-
186
- #when :workspace_root_inside_docker
187
- # cli.ask(" Workspace '#{args[2]}' shall be mapped to which directory inside the docker? ", required: true, value: File.join(args.first, args[1]))
188
-
189
- #when :map_project_dir
190
- # 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)
191
-
192
- #when :volume_mapping_required?
193
- # cli.yes?("Is there any volume mapping required? ")
194
- #when :source_prompt
195
- # cli.ask("Directory to share with docker : ", required: true)
196
- #when :destination_prompt
197
- # src = args.first
198
- # srcDir = File.basename(src)
199
- # cli.ask("Directory to show inside docker : ", required: true, value: "/opt/#{srcDir}")
200
-
201
- #when :add_to_bundle?
202
- # cli.yes?(" Add directory '#{args.first}' to bundler config local? ")
203
-
204
- #when :add_mount_to_container
205
- # config.add_mount_to_container(imageName, *args)
206
- #when :add_more_volume_mapping?
207
- # cli.yes?("Add more volume mapping?")
208
- end
209
- end
210
-
211
- config.add_container(imageName, selContName)
212
-
213
- config.to_storage
214
-
215
- end
216
- end
217
-
218
- end
219
-
220
- end
221
- 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 = 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 = 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