From 6ea5ab49c076052f99d89fbec3b53211ce6850ae Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Sat, 2 Dec 2023 17:40:55 +1100
Subject: [PATCH] switch init command to tree command

---
 src/66/66.c                                   |  9 -------
 src/include/66/ssexec.h                       | 10 ++++----
 src/lib66/exec/deps-lib/deps                  |  2 +-
 src/lib66/exec/ssexec_boot.c                  |  4 +--
 src/lib66/exec/ssexec_help.c                  | 25 +++++++++----------
 .../{ssexec_init.c => ssexec_tree_init.c}     |  6 ++---
 src/lib66/exec/ssexec_tree_wrapper.c          | 13 ++++++++++
 7 files changed, 36 insertions(+), 33 deletions(-)
 rename src/lib66/exec/{ssexec_init.c => ssexec_tree_init.c} (97%)

diff --git a/src/66/66.c b/src/66/66.c
index f221ef76..481a0071 100644
--- a/src/66/66.c
+++ b/src/66/66.c
@@ -250,15 +250,6 @@ int main(int argc, char const *const *argv)
         info.usage = usage_env ;
         func = &ssexec_env ;
 
-    } else if (!strcmp(argv[0], "init")) {
-
-        PROG = "init" ;
-        nargv[n++] = PROG ;
-        info.prog = PROG ;
-        info.help = help_init ;
-        info.usage = usage_init ;
-        func = &ssexec_init ;
-
     } else if (!strcmp(argv[0], "parse")) {
 
         PROG = "parse" ;
diff --git a/src/include/66/ssexec.h b/src/include/66/ssexec.h
index 3d3b51eb..23c1e35d 100644
--- a/src/include/66/ssexec.h
+++ b/src/include/66/ssexec.h
@@ -91,7 +91,6 @@ extern ssexec_t const ssexec_zero ;
 
 /** main */
 extern ssexec_func_t ssexec_parse ;
-extern ssexec_func_t ssexec_init ;
 extern ssexec_func_t ssexec_enable ;
 extern ssexec_func_t ssexec_disable ;
 extern ssexec_func_t ssexec_start ;
@@ -121,6 +120,7 @@ extern ssexec_func_t ssexec_tree_signal ;
 extern ssexec_func_t ssexec_tree_admin ;
 extern ssexec_func_t ssexec_tree_status ;
 extern ssexec_func_t ssexec_tree_resolve ;
+extern ssexec_func_t ssexec_tree_init ;
 
 /** shutdown */
 extern ssexec_func_t ssexec_shutdown_wrapper ;
@@ -141,8 +141,6 @@ extern char const *usage_stop ;
 extern char const *help_stop ;
 extern char const *usage_env ;
 extern char const *help_env ;
-extern char const *usage_init ;
-extern char const *help_init ;
 extern char const *usage_parse ;
 extern char const *help_parse ;
 extern char const *usage_reconfigure ;
@@ -182,6 +180,8 @@ extern char const *usage_tree_resolve ;
 extern char const *help_tree_resolve ;
 extern char const *usage_tree_status ;
 extern char const *help_tree_status ;
+extern char const *usage_tree_init ;
+extern char const *help_tree_init ;
 extern char const *usage_tree_start ;
 extern char const *help_tree_start ;
 extern char const *usage_tree_stop ;
@@ -229,8 +229,6 @@ extern char const *help_halt ;
 #define OPTS_SUBSTART_LEN (sizeof OPTS_SUBSTART - 1)
 #define OPTS_PARSE "hfFcmCI"
 #define OPTS_PARSE_LEN (sizeof OPTS_PARSE - 1)
-#define OPTS_INIT "h"
-#define OPTS_INIT_LEN (sizeof OPTS_INIT - 1)
 #define OPTS_ENABLE "hSP"
 #define OPTS_ENABLE_LEN (sizeof OPTS_ENABLE - 1)
 #define OPTS_DISABLE "hSFRP"
@@ -258,6 +256,8 @@ extern char const *help_halt ;
 #define OPTS_TREE_SIGNAL_LEN (sizeof OPTS_TREE_SIGNAL - 1)
 #define OPTS_TREE_ADMIN "co:EDRnadC:S:"
 #define OPTS_TREE_ADMIN_LEN (sizeof OPTS_TREE_ADMIN - 1)
+#define OPTS_TREE_INIT "h"
+#define OPTS_TREE_INIT_LEN (sizeof OPTS_TREE_INIT - 1)
 
 #define OPTS_BOOT "hms:e:d:b:l:"
 #define OPTS_BOOT_LEN (sizeof OPTS_BOOT - 1)
diff --git a/src/lib66/exec/deps-lib/deps b/src/lib66/exec/deps-lib/deps
index f2e2bf7d..f234672d 100644
--- a/src/lib66/exec/deps-lib/deps
+++ b/src/lib66/exec/deps-lib/deps
@@ -5,7 +5,6 @@ ssexec_enable.o
 ssexec_env.o
 ssexec_free.o
 ssexec_help.o
-ssexec_init.o
 ssexec_parse.o
 ssexec_reconfigure.o
 ssexec_reload.o
@@ -23,6 +22,7 @@ ssexec_state.o
 ssexec_status.o
 ssexec_stop.o
 ssexec_tree_admin.o
+ssexec_tree_init.o
 ssexec_tree_resolve.o
 ssexec_tree_signal.o
 ssexec_tree_status.o
diff --git a/src/lib66/exec/ssexec_boot.c b/src/lib66/exec/ssexec_boot.c
index d1d16773..d9ada936 100644
--- a/src/lib66/exec/ssexec_boot.c
+++ b/src/lib66/exec/ssexec_boot.c
@@ -612,9 +612,9 @@ int ssexec_boot(int argc, char const *const *argv, ssexec_t *info)
     }
     /** initiate earlier service */
     {
-        char const *t[] = { tree } ;
+        char const *t[] = { "init", tree } ;
         log_info("Initiate earlier service of tree: ",tree) ;
-        make_cmdline("init", t, 1, "initiate earlier service of tree: ", tree, genv) ;
+        make_cmdline("tree", t, 2, "initiate earlier service of tree: ", tree, genv) ;
     }
 
     if (envdir) {
diff --git a/src/lib66/exec/ssexec_help.c b/src/lib66/exec/ssexec_help.c
index 1ba8800b..4f2cc6b3 100644
--- a/src/lib66/exec/ssexec_help.c
+++ b/src/lib66/exec/ssexec_help.c
@@ -23,7 +23,7 @@ inline void info_help (char const *help,char const *usage)
 }
 
 
-char const *usage_66 = "66 [ -h ] [ -z ] [ -v verbosity ] [ -l live ] [ -T timeout ] [ -t tree ] start|stop|reload|restart|free|reconfigure|enable|disable|configure|status|resolve|state|remove|signal|tree|init|parse|scandir|boot|poweroff|reboot|halt|version [<command options>] service...|tree" ;
+char const *usage_66 = "66 [ -h ] [ -z ] [ -v verbosity ] [ -l live ] [ -T timeout ] [ -t tree ] start|stop|reload|restart|free|reconfigure|enable|disable|configure|status|resolve|state|remove|signal|tree|parse|scandir|boot|poweroff|reboot|halt|version [<command options>] service...|tree" ;
 
 char const *help_66 =
 "\nmain tool to init a system, control and manage services\n"
@@ -52,7 +52,6 @@ char const *help_66 =
 "   remove: remove services and cleanup all files belong to it from the system\n"
 "   signal: send signal to service\n"
 "   tree: manage/see tree information\n"
-"   init: initiate to scandir all services marked enabled at tree\n"
 "   parse: parse the service frontend file\n"
 "   scandir: manage scandir\n"
 "   boot: boot the system\n"
@@ -135,15 +134,6 @@ char const *help_env =
 "   -e: edit the file with editor\n"
 ;
 
-char const *usage_init = "66 init [ -h ] tree" ;
-
-char const *help_init =
-"\ninitiate all services present in tree to a scandir already running\n"
-"\n"
-"options:\n"
-"   -h: print this help\n"
-;
-
 char const *usage_parse = "66 parse [ -h ] [ -f ] [ -I ] service..." ;
 
 char const *help_parse =
@@ -294,7 +284,7 @@ char const *help_signal =
 "   -r : restart service by sending it a signal(default SIGTERM)\n"
 ;
 
-char const *usage_tree_wrapper = "66 tree [ -h ] create|admin|remove|enable|disable|current|status|resolve|start|stop|free [<subcommand options>] tree" ;
+char const *usage_tree_wrapper = "66 tree [ -h ] create|admin|remove|enable|disable|current|status|resolve|init|start|stop|free [<subcommand options>] tree" ;
 
 char const *help_tree_wrapper =
 "\nmain subcommands to manages trees\n"
@@ -311,6 +301,7 @@ char const *help_tree_wrapper =
 "   current: mark tree as current\n"
 "   status: displays information about tree\n"
 "   resolve: displays resolve file of tree\n"
+"   init: initiate all services marked enabled from tree\n"
 "   start: bring up all enabled services from tree\n"
 "   stop: bring down all services from tree\n"
 "   free: bring down and unsupervise all services from tree\n"
@@ -355,7 +346,6 @@ char const *help_tree_admin =
 "   allow=: comma separated list of account to allow at tree\n"
 "   deny=: comma separated list of account to deny at tree\n"
 "   clone=: make a clone of tree\n"
-"   noseed: do not use seed file to build the tree\n"
 ;
 
 char const *usage_tree_remove = "66 tree remove [ -h ] tree" ;
@@ -430,6 +420,15 @@ char const *help_tree_status =
 "If no tree name are provided, it display all trees from the system\n"
 ;
 
+char const *usage_tree_init = "66 tree init [ -h ] tree" ;
+
+char const *help_tree_init =
+"\ninitiate all services present in tree to a scandir already running\n"
+"\n"
+"options:\n"
+"   -h: print this help\n"
+;
+
 char const *usage_tree_start = "66 tree start [ -h ] [ -f ] tree" ;
 
 char const *help_tree_start =
diff --git a/src/lib66/exec/ssexec_init.c b/src/lib66/exec/ssexec_tree_init.c
similarity index 97%
rename from src/lib66/exec/ssexec_init.c
rename to src/lib66/exec/ssexec_tree_init.c
index b6fa7675..fd18baaa 100644
--- a/src/lib66/exec/ssexec_init.c
+++ b/src/lib66/exec/ssexec_tree_init.c
@@ -1,5 +1,5 @@
 /*
- * ssexec_init.c
+ * ssexec_tree_init.c
  *
  * Copyright (c) 2018-2023 Eric Vidal <eric@obarun.org>
  *
@@ -140,7 +140,7 @@ static void doit(stralloc *sa, ssexec_t *info, uint8_t earlier)
     graph_free_all(&graph) ;
 }
 
-int ssexec_init(int argc, char const *const *argv, ssexec_t *info)
+int ssexec_tree_init(int argc, char const *const *argv, ssexec_t *info)
 {
     log_flow() ;
 
@@ -155,7 +155,7 @@ int ssexec_init(int argc, char const *const *argv, ssexec_t *info)
 
         for (;;)
         {
-            int opt = subgetopt_r(argc, argv, OPTS_INIT, &l) ;
+            int opt = subgetopt_r(argc, argv, OPTS_TREE_INIT, &l) ;
             if (opt == -1) break ;
 
             switch (opt) {
diff --git a/src/lib66/exec/ssexec_tree_wrapper.c b/src/lib66/exec/ssexec_tree_wrapper.c
index 7272f6f7..05b1245f 100644
--- a/src/lib66/exec/ssexec_tree_wrapper.c
+++ b/src/lib66/exec/ssexec_tree_wrapper.c
@@ -139,6 +139,19 @@ int ssexec_tree_wrapper(int argc, char const *const *argv, ssexec_t *info)
         argc-- ;
         argv++ ;
 
+    } else if (!strcmp(argv[1], "init")) {
+
+        nargv[n++] = PROG ;
+
+        info->prog = PROG ;
+        info->help = help_tree_init ;
+        info->usage = usage_tree_init ;
+
+        func = &ssexec_tree_init ;
+
+        argc-- ;
+        argv++ ;
+
     } else if (!strcmp(argv[1], "start")) {
 
         info->prog = PROG ;
-- 
GitLab