Class: Dockerun::Cli::DeleteImage

Inherits:
Object
  • Object
show all
Includes:
TR::CondUtils
Defined in:
lib/dockerun/cli/delete_image.rb

Instance Method Summary collapse

Constructor Details

#initializeDeleteImage

Returns a new instance of DeleteImage.



13
14
15
# File 'lib/dockerun/cli/delete_image.rb', line 13

def initialize
  @proxy = DSLProxy.new
end

Instance Method Details

#cfObject



94
95
96
97
98
99
# File 'lib/dockerun/cli/delete_image.rb', line 94

def cf
  if @_cf.nil?
    @_cf = CommandFactory.new
  end
  @_cf
end

#delete_imageObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/dockerun/cli/delete_image.rb', line 27

def delete_image
  selSpec = CliEngine.select_spec(@proxy.exec_root)
  cont = File.read(selSpec)
  @proxy.set_dry_run_mode
  @proxy.instance_eval(cont)

  res = cf.find_image(@proxy.image_name).run
  if res.success?
    if not_empty?(res.output_lines)

      skip = pmt.no?(" Delete image named '#{@proxy.image_name}'?")
      if not skip
        res = cf.find_container_names_by_image_name(@proxy.image_name, all_containers: true).run
        raise Error, "Failed to extract container name by image name '#{@proxy.image_name}'" if not res.success?

        if not_empty?(res.output_lines)
          cont = []
          cnt = 0
          res.output_lines.each do |l|
            cont << " #{cnt += 1}. #{l}"
          end
          skip = pmt.no?(" All the containers shall be deleted prior to image '#{@proxy.image_name}' deletion. Proceed?\n#{cont.join("\n")}")
          if not skip
            res.output_lines.each do |ci|
              cf.stop_container(ci).run
              cf.delete_container(ci).run
            end

            res = cf.delete_image(@proxy.image_name).run
            if res.success?
              pmt.puts " Image '#{@proxy.image_name}' deleted".green
            else
              raise Error, " Image '#{@proxy.image_name}' deletion failed. Error was : #{res.err_lines.join("\n")}"
            end

          else
            pmt.puts " Delete of image '#{@proxy.image_name}' aborted".yellow
          end

        else
          res = cf.delete_image(@proxy.image_name).run
          if res.success?
            pmt.puts " Image '#{@proxy.image_name}' deleted".green
          else
            raise Error, " Image '#{@proxy.image_name}' deletion failed. Error was : #{res.err_lines.join("\n")}"
          end

        end

      else
        pmt.puts " Delete of image '#{@proxy.image_name}' aborted".yellow

      end

    else
      pmt.puts " Image '#{@proxy.image_name}' does not exist".green
    end

  else
    pmt.puts " Failed to find image '#{@proxy.image_name}'. Error was : #{res.err_lines.join("\n")}"
  end
end

#pmtObject



90
91
92
# File 'lib/dockerun/cli/delete_image.rb', line 90

def pmt
  CliEngine.pmt
end

#start(root) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/dockerun/cli/delete_image.rb', line 17

def start(root)
  @proxy.set_exec_root(root)
  begin
    pmt.puts " Dockerun version #{Dockerun::VERSION}".yellow
    pmt.puts " Operational : Delete Image"
    delete_image
  rescue TTY::Reader::InputInterrupt
  end
end