summaryrefslogtreecommitdiff
path: root/git.h
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2022-07-28 13:54:05 -0300
committermrb0nk500 <b0nk@b0nk.xyz>2022-07-28 13:54:05 -0300
commit2ddb5741c9d6c8a0942e0a73f66d21617cf378e8 (patch)
treeee13302392deaaac17649b524e22323427c3e569 /git.h
parentd55488c605c425815c641f22aa46c398da20a950 (diff)
git: Implement all of `get_pull_request()`
`get_pull_request()` takes an index, and the main PR root, and returns the PR of the supplied index if it exists, or NULL if no PR with that index exists.
Diffstat (limited to 'git.h')
-rw-r--r--git.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/git.h b/git.h
index ef1b83a..29fec4b 100644
--- a/git.h
+++ b/git.h
@@ -5,6 +5,7 @@
#include <stdint.h>
#include <time.h>
#include "index.h"
+#include "keyword.h"
typedef struct pull_request pull_request;
typedef struct file file;
@@ -48,4 +49,32 @@ extern git_repository **init_git(config *cfg);
extern int add_comment(comment *comment, const char *pr_root);
extern int create_pull_request_dir(pull_request *pr, index *idx, const char *root);
+void parse_patch_list(void *ctx, void *ret, const keyword *key, keyword_val val);
+void parse_comment_reply(void *ctx, void *ret, const keyword *key, keyword_val val);
+
+#define offset_list(...) (size_t []){__VA_ARGS__, -1}
+static const keyword *info_keywords[] = {
+ &(const keyword *){"title", "Title of Pull Request.", NULL, TYPE_STRING, offset_list(offsetof(pull_request, title)), NULL},
+ &(const keyword *){"author", "Author of Pull Request.", NULL, TYPE_STRING, offset_list(offsetof(pull_request, author)), NULL},
+ &(const keyword *){"date", "Date of Pull Request's creation.", "%a %b %e %H:%M:%S %Y %z", TYPE_TIME, offset_list(offsetof(pull_request, date)), NULL},
+ &(const keyword *){"description", "Description of Pull Request.", NULL, TYPE_STRING, offset_list(offsetof(pull_request, desc)), NULL},
+ &(const keyword *){"type", "Type of Pull Request (0 = patch files, 1 = remote repo).", NULL, TYPE_INT, offset_list(offsetof(pull_request, pr_type)), NULL},
+ &(const keyword *){"branch", "Branch of remote repo.", NULL, TYPE_STRING, offset_list(offsetof(pull_request, branch), offsetof(git_branch, name)), NULL},
+ &(const keyword *){"repo", "URL of remote repo.", NULL, TYPE_STRING, offset_list(offsetof(pull_request, branch), offsetof(git_branch, repo)), NULL},
+ &(const keyword *){"patches", "Patch file(s) of Pull Request.", NULL, TYPE_STRING, offset_list(offsetof(pull_request, patches), offsetof(file, name)), parse_patch_list},
+ NULL,
+};
+
+static const keyword *comment_keywords[] = {
+ &(const keyword *){"id", "ID of Comment.", NULL, TYPE_INT, offset_list(offsetof(comment, id)), NULL},
+ &(const keyword *){"author", "Author of Comment.", NULL, TYPE_STRING, offset_list(offsetof(comment, author)), NULL},
+ &(const keyword *){"date", "Date of Comment's creation.", "%a %b %e %H:%M:%S %Y %z", TYPE_TIME, offset_list(offsetof(comment, date)), NULL},
+ &(const keyword *){"reply-to", "ID of replied Comment.", NULL, TYPE_INT, offset_list(offsetof(comment, reply), offsetof(comment, id)), parse_comment_reply},
+ &(const keyword *){"reply-author", "Author of replied Comment.", NULL, TYPE_STRING, offset_list(offsetof(comment, reply), offsetof(comment, author)), parse_comment_reply},
+ &(const keyword *){"reply-date", "Date of replied Comment's creation", "%a %b %e %H:%M:%S %Y %z", TYPE_TIME, offset_list(offsetof(comment, reply), offsetof(comment, date)), parse_comment_reply},
+ &(const keyword *){"description", "Message of Comment.", NULL, TYPE_STRING, offset_list(offsetof(comment, desc)), NULL},
+ NULL,
+};
+#undef offset_list
+
#endif