From a27582c9e626d01c47ff29d4b2480813a69fa3a6 Mon Sep 17 00:00:00 2001
From: songbuhuang <544824346@qq.com>
Date: Tue, 18 Oct 2022 17:19:00 +0800
Subject: [PATCH 38/43] add isula create --rm option

Signed-off-by: songbuhuang <544824346@qq.com>
---
 src/cmd/isula/base/create.c | 14 ++++++++++++++
 src/cmd/isula/base/create.h |  7 +++++++
 src/cmd/isula/base/run.c    | 17 +++--------------
 src/cmd/isula/base/run.h    |  9 +--------
 4 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/src/cmd/isula/base/create.c b/src/cmd/isula/base/create.c
index 97da80ac..8cef5d17 100644
--- a/src/cmd/isula/base/create.c
+++ b/src/cmd/isula/base/create.c
@@ -2149,6 +2149,15 @@ out:
     return ret;
 }
 
+static int create_check_auto_remove(const struct client_arguments *args)
+{
+    if (args->custom_conf.auto_remove && ((args->restart != NULL) && (strcmp("no", args->restart) != 0))) {
+        COMMAND_ERROR("Conflicting options: --restart and --rm");
+        return -1;
+    }
+    return 0;
+}
+
 int create_checker(struct client_arguments *args)
 {
     int ret = 0;
@@ -2236,6 +2245,11 @@ int create_checker(struct client_arguments *args)
         goto out;
     }
 
+    if (create_check_auto_remove(args)) {
+        ret = -1;
+        goto out;
+    }
+
 out:
     return ret;
 }
diff --git a/src/cmd/isula/base/create.h b/src/cmd/isula/base/create.h
index 467fefe8..4f63d92f 100644
--- a/src/cmd/isula/base/create.h
+++ b/src/cmd/isula/base/create.h
@@ -306,6 +306,13 @@ extern "C" {
       &(cmdargs).restart,                                                                                                                                 \
       "Restart policy to apply when a container exits(no, always, on-reboot, on-failure[:max-retries])",                                                  \
       NULL },                                                                                                                                             \
+    { CMD_OPT_TYPE_BOOL,                                                                                                                                  \
+      false,                                                                                                                                              \
+      "rm",                                                                                                                                               \
+      0,                                                                                                                                                  \
+      &(cmdargs).custom_conf.auto_remove,                                                                                                                 \
+      "Automatically remove the container when it exits",                                                                                                 \
+      NULL },                                                                                                                                             \
     { CMD_OPT_TYPE_STRING,                                                                                                                                \
       false,                                                                                                                                              \
       "host-channel",                                                                                                                                     \
diff --git a/src/cmd/isula/base/run.c b/src/cmd/isula/base/run.c
index 53e89c3d..73486c95 100644
--- a/src/cmd/isula/base/run.c
+++ b/src/cmd/isula/base/run.c
@@ -195,11 +195,8 @@ free_out:
 
 static int run_checker(struct client_arguments *args)
 {
-    int ret = 0;
-
-    ret = create_checker(args);
-    if (ret) {
-        goto out;
+    if (create_checker(args)) {
+        return -1;
     }
 
     /* Make detach option a high priority than terminal */
@@ -208,13 +205,5 @@ static int run_checker(struct client_arguments *args)
         args->custom_conf.attach_stdout = false;
         args->custom_conf.attach_stderr = false;
     }
-
-    if (args->custom_conf.auto_remove && ((args->restart != NULL) && (strcmp("no", args->restart) != 0))) {
-        COMMAND_ERROR("Conflicting options: --restart and --rm");
-        ret = -1;
-        goto out;
-    }
-
-out:
-    return ret;
+    return 0;
 }
diff --git a/src/cmd/isula/base/run.h b/src/cmd/isula/base/run.h
index 2658c33d..efca28a9 100644
--- a/src/cmd/isula/base/run.h
+++ b/src/cmd/isula/base/run.h
@@ -34,14 +34,7 @@ extern "C" {
         'd',                                                        \
         &(cmdargs).detach,                                          \
         "Run container in background and print container ID",       \
-        NULL },                                                     \
-    { CMD_OPT_TYPE_BOOL,                                  \
-      false,                                              \
-      "rm",                                               \
-      0,                                                  \
-      &(cmdargs).custom_conf.auto_remove,                 \
-      "Automatically remove the container when it exits", \
-      NULL },
+        NULL },                                                   
 
 extern const char g_cmd_run_desc[];
 extern const char g_cmd_run_usage[];
-- 
2.25.1

