From 1ee6de03c18bd55984229397d48700540564bc2d Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Fri, 4 Sep 2020 06:14:16 +0200 Subject: [PATCH] Differentiate between creating a fresh container and recreating an already existing one. --- dup.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dup.rb b/dup.rb index 9369957..7e0baf2 100755 --- a/dup.rb +++ b/dup.rb @@ -120,14 +120,16 @@ def action_help exit 1 end +def run_cmd(cmd, ignore_returnvalue=false, catch_interrupt=false, ignore_dry_run: false) verbose "+ #{cmd}" returnvalue=false begin - returnvalue = $dry_run ? true : system("bash -c #{cmd.shellescape}") + returnvalue = ($dry_run && !ignore_dry_run) ? true : system("bash -c #{cmd.shellescape}") rescue Interrupt raise if not catch_interrupt end raise "Command returned a non-zero exit value." if returnvalue!=true && !ignore_returnvalue + return returnvalue end def esc(obj, escape=true) @@ -203,6 +205,10 @@ class Container @name = name end + def exists? + run_cmd("docker inspect --format='1' #{@name.shellescape} >/dev/null 2>&1", true, ignore_dry_run: true) + end + def load raise "File #{self.filename} not found." unless File.exists?(self.filename) @@ -333,6 +339,12 @@ class Container self.pull end + if self.exists? + puts "Recreating #{@name}..." + else + puts "Creating #{@name}..." + end + self.stop_and_remove self.create_networks