libreport/0001-ureport-implement-attaching-of-user-comments.patch
2014-07-23 09:40:14 +02:00

134 lines
4.9 KiB
Diff

From 8b3d8dd997d2103087cbaef4642b52147db97f16 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Tue, 8 Jul 2014 16:10:01 +0200
Subject: [PATCH 1/8] ureport: implement attaching of user comments
Closes #199
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/lib/json.c | 10 ++++++++++
src/lib/ureport.h | 4 ++++
src/plugins/ureport.c | 33 +++++++++++++++++++++++++++++----
3 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/src/lib/json.c b/src/lib/json.c
index 66db537..08ffe8c 100644
--- a/src/lib/json.c
+++ b/src/lib/json.c
@@ -133,3 +133,13 @@ struct post_state *ureport_attach_email(const char *bthash, const char *email,
return post_state;
}
+
+struct post_state *ureport_attach_comment(const char *bthash, const char *comment,
+ struct ureport_server_config *config)
+{
+ char *json_attachment = new_json_attachment(bthash, "comment", comment);
+ struct post_state *post_state = post_ureport(json_attachment, config);
+ free(json_attachment);
+
+ return post_state;
+}
diff --git a/src/lib/ureport.h b/src/lib/ureport.h
index 16f40f1..80f26d9 100644
--- a/src/lib/ureport.h
+++ b/src/lib/ureport.h
@@ -51,6 +51,10 @@ struct post_state *ureport_attach_rhbz(const char *bthash, int rhbz_bug_id,
struct post_state *ureport_attach_email(const char *bthash, const char *email,
struct ureport_server_config *config);
+#define ureport_attach_comment libreport_ureport_attach_comment
+struct post_state *ureport_attach_comment(const char *bthash, const char *comment,
+ struct ureport_server_config *config);
+
#define ureport_from_dump_dir libreport_ureport_from_dump_dir
char *ureport_from_dump_dir(const char *dump_dir_path);
diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c
index 59554f4..e6237cc 100644
--- a/src/plugins/ureport.c
+++ b/src/plugins/ureport.c
@@ -435,6 +435,8 @@ int main(int argc, char **argv)
bool rhbz_bug_from_rt = false;
const char *email_address = NULL;
bool email_address_from_env = false;
+ char *comment = NULL;
+ bool comment_file = NULL;
struct dump_dir *dd = NULL;
struct options program_options[] = {
OPT__VERBOSE(&g_verbose),
@@ -456,11 +458,16 @@ int main(int argc, char **argv)
_("attach RHBZ bug (requires -a|-A, conflicts with -B)")),
OPT_BOOL('B', "bug-id-rt", &rhbz_bug_from_rt,
_("attach last RHBZ bug from reported_to (requires -a|-A, conflicts with -b)")),
+ OPT_STRING('o', "comment", &comment, "DESCRIPTION",
+ _("attach short text (requires -a|-A, conflicts with -D)")),
+ OPT_BOOL('O', "comment-file", &comment_file,
+ _("attach short text from comment (requires -a|-A, conflicts with -d)")),
+
OPT_END(),
};
const char *program_usage_string = _(
- "& [-v] [-c FILE] [-u URL] [-k] [-t SOURCE] [-A -a bthash -B -b bug-id -E -e email] [-d DIR]\n"
+ "& [-v] [-c FILE] [-u URL] [-k] [-t SOURCE] [-A -a bthash -B -b bug-id -E -e email -O -o comment] [-d DIR]\n"
"\n"
"Upload micro report or add an attachment to a micro report\n"
"\n"
@@ -495,7 +502,10 @@ int main(int argc, char **argv)
if (email_address && email_address_from_env)
error_msg_and_die("You need to pass either -e bthash or -E");
- if (ureport_hash_from_rt || rhbz_bug_from_rt)
+ if (comment && comment_file)
+ error_msg_and_die("You need to pass either -o comment or -O");
+
+ if (ureport_hash_from_rt || rhbz_bug_from_rt || comment_file)
{
dd = dd_opendir(dump_dir_path, DD_OPEN_READONLY);
if (!dd)
@@ -533,6 +543,15 @@ int main(int argc, char **argv)
free_report_result(bz_result);
}
+ if (comment_file)
+ {
+ comment = dd_load_text(dd, FILENAME_COMMENT);
+ if (comment == NULL)
+ error_msg_and_die(_("Cannot attach comment from 'comment' file"));
+ if (comment[0] == '\0')
+ error_msg_and_die(_("'comment' file is empty"));
+ }
+
dd_close(dd);
}
@@ -546,8 +565,8 @@ int main(int argc, char **argv)
if (ureport_hash)
{
- if (rhbz_bug < 0 && !email_address)
- error_msg_and_die(_("You need to specify bug ID, contact email or both"));
+ if (rhbz_bug < 0 && !email_address && !comment)
+ error_msg_and_die(_("You need to specify bug ID, contact email, comment or all of them"));
if (rhbz_bug >= 0)
{
@@ -561,6 +580,12 @@ int main(int argc, char **argv)
goto finalize;
}
+ if (comment)
+ {
+ if (perform_attach(&config, ureport_hash, (attach_handler)ureport_attach_comment, (void *)comment))
+ goto finalize;
+ }
+
ret = 0;
goto finalize;
}
--
1.9.3