diff scictl.c @ 9:3ef8128e244f

sci: add project-update command
author David Demelier <markand@malikania.fr>
date Wed, 23 Jun 2021 14:05:36 +0200
parents 9c4fea43803c
children be3ec0e6bb8f
line wrap: on
line diff
--- a/scictl.c	Wed Jun 23 11:45:07 2021 +0200
+++ b/scictl.c	Wed Jun 23 14:05:36 2021 +0200
@@ -24,6 +24,7 @@
 	fprintf(stderr, "       %s job-todo worker\n", getprogname());
 	fprintf(stderr, "       %s jobresult-add id worker exitcode console\n", getprogname());
 	fprintf(stderr, "       %s project-add name desc url script\n", getprogname());
+	fprintf(stderr, "       %s project-update name key value\n", getprogname());
 	fprintf(stderr, "       %s project-list\n", getprogname());
 	fprintf(stderr, "       %s worker-add name desc\n", getprogname());
 	fprintf(stderr, "       %s worker-list\n", getprogname());
@@ -176,6 +177,36 @@
 }
 
 static struct req
+cmd_project_update(int argc, char **argv)
+{
+	struct project pc;
+	struct req rget, rsend;
+	char *script = NULL;
+
+	if (argc < 3)
+		help();
+
+	if ((rget = req_project_find(&pc, argv[0])).status)
+		return rget;
+
+	if (strcmp(argv[1], "name") == 0)
+		pc.name = argv[2];
+	else if (strcmp(argv[1], "desc") == 0)
+		pc.desc = argv[2];
+	else if (strcmp(argv[1], "url") == 0)
+		pc.url = argv[2];
+	else if (strcmp(argv[1], "script") == 0)
+		pc.script = script = readfile(argv[2]);
+
+	rsend = req_project_update(&pc);
+
+	req_finish(&rget);
+	free(script);
+
+	return rsend;
+}
+
+static struct req
 cmd_project_find(int argc, char **argv)
 {
 	struct project project = {0};
@@ -271,6 +302,7 @@
 	{ "project-add",        cmd_project_add         },
 	{ "project-find",       cmd_project_find        },
 	{ "project-list",       cmd_project_list        },
+	{ "project-update",     cmd_project_update      },
 	{ "worker-add",         cmd_worker_add          },
 	{ "worker-list",        cmd_worker_list         },
 	{ NULL,                 NULL                    }
@@ -308,10 +340,8 @@
 			res = commands[i].exec(--argc, ++argv);
 			cmdfound = 1;
 
-#if 0
 			if (res.status)
-				warnx("%s", res.msg);
-#endif
+				warnx("%s", json_string_value(json_object_get(res.msg, "error")));
 
 			req_finish(&res);
 			break;