feat: support for delete option in push

This commit is contained in:
Jozef Steinhübl 2024-08-05 22:02:40 +02:00
parent 9fa645fe69
commit e937523a25
No known key found for this signature in database
GPG key ID: E6BC90C91973B08F

View file

@ -10,6 +10,7 @@
#define PUSH_TAGS_OPTION 1 << 0 #define PUSH_TAGS_OPTION 1 << 0
#define VERBOSE_OPTION 1 << 1 #define VERBOSE_OPTION 1 << 1
#define DELETE_BRANCH_OPTION 1 << 2
char *get_current_branch_name() { char *get_current_branch_name() {
FILE *file_ptr; FILE *file_ptr;
@ -36,18 +37,22 @@ char *get_current_branch_name() {
return strdup(output); return strdup(output);
} }
int git_push(char *provider_name, char *branch_name, int options) { int git_push(char *provider_name, char *branch_name, int options) {
FILE *file_ptr; FILE *file_ptr;
char output[1024]; char output[1024];
char command[256]; char command[256];
char push_options[50] = ""; char push_options[50] = "";
if (options & DELETE_BRANCH_OPTION) {
strcat(push_options, " -d");
} else {
if (strcmp(provider_name, "sourcehut") == 0) { if (strcmp(provider_name, "sourcehut") == 0) {
strcat(push_options, " -o skip-ci"); strcat(push_options, " -o skip-ci");
} else if (strcmp(provider_name, "gitlab") == 0) { } else if (strcmp(provider_name, "gitlab") == 0) {
strcat(push_options, " -o ci.skip"); strcat(push_options, " -o ci.skip");
} }
}
char branch_or_tags[256] = ""; char branch_or_tags[256] = "";
if (options & PUSH_TAGS_OPTION) { if (options & PUSH_TAGS_OPTION) {
@ -81,9 +86,16 @@ int cli_command_push(int argc, char **argv) {
int options = 0; int options = 0;
HANDLE_OPTIONS(argc, argv, "tv", HANDLE_OPTIONS(argc, argv, "tvd",
MASK_OPTION('t', options, PUSH_TAGS_OPTION) MASK_OPTION('t', options, PUSH_TAGS_OPTION)
MASK_OPTION('v', options, VERBOSE_OPTION)); MASK_OPTION('v', options, VERBOSE_OPTION)
MASK_OPTION('d', options, DELETE_BRANCH_OPTION));
if ((options & DELETE_BRANCH_OPTION) && (options & PUSH_TAGS_OPTION)) {
printf(
"error: options '-d' (delete) and '-t' (tags) cannot be used together");
return 1;
}
char *branch_name = get_current_branch_name(); char *branch_name = get_current_branch_name();