Mercurial > sci
diff scictl/scictl.c @ 50:b474f0985e39
scictl: add API key support
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 17 Aug 2022 09:11:58 +0200 |
parents | 081e1c258e64 |
children | 95bc6b4ec753 |
line wrap: on
line diff
--- a/scictl/scictl.c Wed Aug 17 09:11:44 2022 +0200 +++ b/scictl/scictl.c Wed Aug 17 09:11:58 2022 +0200 @@ -322,12 +322,22 @@ main(int argc, char **argv) { int ch; + const char *env; opterr = 0; setenv("POSIXLY_CORRECT", "1", 1); - while ((ch = getopt(argc, argv, "u:")) != -1) { + /* Environment first, options after. */ + if ((env = getenv("SCI_API_URL"))) + util_strlcpy(apiconf.baseurl, env, sizeof (apiconf.baseurl)); + if ((env = getenv("SCI_API_KEY"))) + util_strlcpy(apiconf.key, env, sizeof (apiconf.key)); + + while ((ch = getopt(argc, argv, "k:u:")) != -1) { switch (ch) { + case 'k': + util_strlcpy(apiconf.key, optarg, sizeof (apiconf.key)); + break; case 'u': util_strlcpy(apiconf.baseurl, optarg, sizeof (apiconf.baseurl)); break; @@ -352,6 +362,10 @@ if (strcmp(argv[0], "help") == 0) help(); + /* At this step, every command requires an API key. */ + if (strlen(apiconf.key) == 0) + util_die("abort: no API key defined\n"); + for (size_t i = 0; commands[i].name; ++i) { if (strcmp(commands[i].name, argv[0]) == 0) { commands[i].exec(argc, argv);