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.
- checksums.yaml +4 -4
- data/README.md +7 -11
- data/Rakefile +0 -2
- data/Rakefile.bak +8 -0
- data/dockerspec.sample +104 -0
- data/{dockerun.gemspec → dockerun.gemspec.bak} +20 -22
- data/exe/dockerun +8 -115
- data/lib/dockerun/cli/command.rb +133 -0
- data/lib/dockerun/cli/command_factory.rb +313 -0
- data/lib/dockerun/cli/command_result.rb +67 -0
- data/lib/dockerun/cli/delete_container.rb +55 -0
- data/lib/dockerun/cli/delete_image.rb +99 -0
- data/lib/dockerun/cli/run.rb +39 -0
- data/lib/dockerun/cli/user_info.rb +39 -0
- data/lib/dockerun/cli_engine.rb +104 -0
- data/lib/dockerun/config.rb +40 -70
- data/lib/dockerun/context/rubygems.rb +142 -0
- data/lib/dockerun/dfile.rb +204 -0
- data/lib/dockerun/docker_cli.rb +124 -0
- data/lib/dockerun/dsl.rb +291 -0
- data/lib/dockerun/version.rb +1 -1
- data/lib/dockerun.rb +31 -24
- data/sig/dockerun.rbs +4 -0
- metadata +62 -73
- data/.release_history.yml +0 -56
- data/Dockerfile.dockerun +0 -38
- data/Gemfile +0 -15
- data/Gemfile.lock +0 -94
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/lib/dockerun/bundler_helper.rb +0 -25
- data/lib/dockerun/cli_prompt.rb +0 -18
- data/lib/dockerun/command/dockerun.rb +0 -30
- data/lib/dockerun/command/init.rb +0 -79
- data/lib/dockerun/command/remove_container.rb +0 -99
- data/lib/dockerun/command/reset_image.rb +0 -107
- data/lib/dockerun/command/run.rb +0 -221
- data/lib/dockerun/command/run_new_container.rb +0 -94
- data/lib/dockerun/command/run_new_image.rb +0 -89
- data/lib/dockerun/command/stop_container.rb +0 -90
- data/lib/dockerun/docker_command_factory_helper.rb +0 -19
- data/lib/dockerun/docker_container_helper.rb +0 -204
- data/lib/dockerun/docker_image_helper.rb +0 -381
- data/lib/dockerun/template/general_template_writer.rb +0 -14
- data/lib/dockerun/template/jruby_template_writer.rb +0 -24
- data/lib/dockerun/template/template_engine.rb +0 -27
- data/lib/dockerun/template/template_writer.rb +0 -102
- data/lib/dockerun/user_info.rb +0 -37
- data/template/Dockerfile_general.erb +0 -41
- data/template/setup_ruby_devenv.rb.erb +0 -22
    
        data/lib/dockerun/command/run.rb
    DELETED
    
    | @@ -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
         |