mirror of
https://github.com/xHyroM/gimi.git
synced 2024-11-21 15:41:04 +01:00
feat: provider cli command
This commit is contained in:
parent
fac687bd68
commit
aebaf1faf2
5 changed files with 80 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
||||||
#include "../gimi_constants.h"
|
#include "../gimi_constants.h"
|
||||||
#include "command/config.h"
|
#include "command/config.h"
|
||||||
#include "command/init.h"
|
#include "command/init.h"
|
||||||
|
#include "command/provider.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -26,5 +27,9 @@ int cli_handle(int argc, char **argv) {
|
||||||
return cli_command_config(argc, argv);
|
return cli_command_config(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp(sub_command, "provider") == 0) {
|
||||||
|
return cli_command_provider(argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
71
src/cli/command/provider.c
Normal file
71
src/cli/command/provider.c
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
#include "../../config.h"
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int providers() {
|
||||||
|
struct gimi_config *cfg = config_read();
|
||||||
|
if (!cfg)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
for (int i = 0; i < cfg->providers_size; i++) {
|
||||||
|
struct gimi_config_provider *provider = cfg->providers[i];
|
||||||
|
printf("%s\n", provider->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
config_free(cfg);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int provider_info(int argc, char **argv) {
|
||||||
|
if (argc == 1) {
|
||||||
|
printf("usage: gimi provider info <name>");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct gimi_config *cfg = config_read();
|
||||||
|
if (!cfg)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
struct gimi_config_provider *provider = NULL;
|
||||||
|
for (int i = 0; i < cfg->providers_size; i++) {
|
||||||
|
if (strcmp(cfg->providers[i]->name, argv[1]) == 0) {
|
||||||
|
provider = cfg->providers[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
config_free(cfg);
|
||||||
|
|
||||||
|
if (!provider) {
|
||||||
|
printf("No such provider '%s'", argv[1]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("name: %s\n", provider->name);
|
||||||
|
printf("ssh: %s\n", provider->ssh);
|
||||||
|
printf("primary: %d\n", provider->primary);
|
||||||
|
|
||||||
|
free(provider);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cli_command_provider(int argc, char **argv) {
|
||||||
|
if (argc == 1) {
|
||||||
|
return providers();
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove "provider" from args
|
||||||
|
argc -= 1;
|
||||||
|
argv += 1;
|
||||||
|
|
||||||
|
char *subcommand = argv[0];
|
||||||
|
|
||||||
|
if (strcmp(subcommand, "info") == 0) {
|
||||||
|
return provider_info(argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
1
src/cli/command/provider.h
Normal file
1
src/cli/command/provider.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
int cli_command_provider(int argc, char **argv);
|
|
@ -41,6 +41,8 @@ struct gimi_config *config_read() {
|
||||||
(struct gimi_config_provider *)malloc(
|
(struct gimi_config_provider *)malloc(
|
||||||
sizeof(struct gimi_config_provider));
|
sizeof(struct gimi_config_provider));
|
||||||
|
|
||||||
|
provider->name = strdup(key);
|
||||||
|
|
||||||
toml_datum_t ssh = toml_string_in(toml_provider, "ssh");
|
toml_datum_t ssh = toml_string_in(toml_provider, "ssh");
|
||||||
provider->ssh = strdup(ssh.u.s);
|
provider->ssh = strdup(ssh.u.s);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
struct gimi_config_provider {
|
struct gimi_config_provider {
|
||||||
|
char *name;
|
||||||
char *ssh;
|
char *ssh;
|
||||||
bool primary;
|
bool primary;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue