mirror of
https://github.com/xHyroM/gimi.git
synced 2024-11-21 23:41:06 +01:00
feat: ci generation
This commit is contained in:
parent
31c457851a
commit
c199fde849
5 changed files with 89 additions and 2 deletions
14
.builds/alpine.yml
Normal file
14
.builds/alpine.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
image: alpine/latest
|
||||||
|
packages:
|
||||||
|
- git
|
||||||
|
sources:
|
||||||
|
- "https://git.sr.ht/~hyro/gimi"
|
||||||
|
secrets:
|
||||||
|
- 55691174-b52f-477c-81ea-dd32deff19b8now
|
||||||
|
tasks:
|
||||||
|
- sync: |
|
||||||
|
set +x
|
||||||
|
git remote add gimi-github git@github.com:xhyrom/gimi.git
|
||||||
|
git push -f --all gimi-github
|
||||||
|
git push -f --tags gimi-github
|
||||||
|
set -x
|
|
@ -1,4 +1,5 @@
|
||||||
#include "../gimi_constants.h"
|
#include "../gimi_constants.h"
|
||||||
|
#include "command/ci.h"
|
||||||
#include "command/config.h"
|
#include "command/config.h"
|
||||||
#include "command/init.h"
|
#include "command/init.h"
|
||||||
#include "command/provider.h"
|
#include "command/provider.h"
|
||||||
|
@ -20,14 +21,18 @@ void cli_print_version() {
|
||||||
int cli_handle(int argc, char **argv) {
|
int cli_handle(int argc, char **argv) {
|
||||||
char *sub_command = argv[0];
|
char *sub_command = argv[0];
|
||||||
|
|
||||||
if (strcmp(sub_command, "init") == 0) {
|
if (strcmp(sub_command, "ci") == 0) {
|
||||||
return cli_command_init(argc, argv);
|
return cli_command_ci(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(sub_command, "config") == 0) {
|
if (strcmp(sub_command, "config") == 0) {
|
||||||
return cli_command_config(argc, argv);
|
return cli_command_config(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp(sub_command, "init") == 0) {
|
||||||
|
return cli_command_init(argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(sub_command, "provider") == 0) {
|
if (strcmp(sub_command, "provider") == 0) {
|
||||||
return cli_command_provider(argc, argv);
|
return cli_command_provider(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
66
src/cli/command/ci.c
Normal file
66
src/cli/command/ci.c
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#include "../../config.h"
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define SOURCEHUT \
|
||||||
|
"image: alpine/latest\n" \
|
||||||
|
"packages:\n" \
|
||||||
|
" - git\n" \
|
||||||
|
"sources:\n" \
|
||||||
|
" - %s\n" \
|
||||||
|
"secrets:\n" \
|
||||||
|
" - <add>\n" \
|
||||||
|
"tasks:\n" \
|
||||||
|
" - sync: |\n" \
|
||||||
|
" %s\n" \
|
||||||
|
" %s\n" \
|
||||||
|
" %s\n"
|
||||||
|
|
||||||
|
int generate(int argc, char **argv) {
|
||||||
|
struct gimi_config *cfg = config_read();
|
||||||
|
struct gimi_config_provider *provider;
|
||||||
|
|
||||||
|
if (argc == 2) {
|
||||||
|
provider = config_find_provider(cfg, argv[1]);
|
||||||
|
|
||||||
|
if (provider == NULL) {
|
||||||
|
printf("error: no such provider '%s'", argv[1]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < cfg->providers_size; i++) {
|
||||||
|
if (cfg->providers[i]->primary) {
|
||||||
|
provider = cfg->providers[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (provider == NULL) {
|
||||||
|
printf("error: can't find primary provider");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
config_free(cfg);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cli_command_ci(int argc, char **argv) {
|
||||||
|
if (argc == 1) {
|
||||||
|
printf("usage: gimi ci generate [provider]");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove "ci" from args
|
||||||
|
argc -= 1;
|
||||||
|
argv += 1;
|
||||||
|
|
||||||
|
char *subcommand = argv[0];
|
||||||
|
|
||||||
|
if (strcmp(subcommand, "generate") == 0) {
|
||||||
|
return generate(argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
1
src/cli/command/ci.h
Normal file
1
src/cli/command/ci.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
int cli_command_ci(int argc, char **argv);
|
|
@ -74,6 +74,7 @@ struct gimi_config_provider *config_find_provider(struct gimi_config *cfg,
|
||||||
for (int i = 0; i < cfg->providers_size; i++) {
|
for (int i = 0; i < cfg->providers_size; i++) {
|
||||||
if (strcmp(cfg->providers[i]->name, name) == 0) {
|
if (strcmp(cfg->providers[i]->name, name) == 0) {
|
||||||
provider = cfg->providers[i];
|
provider = cfg->providers[i];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue