issue-bot/src/templates.rs

208 lines
8.6 KiB
Rust

/* This file is part of issue-bot.
*
* issue-bot is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* issue-bot is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with issue-bot. If not, see <https://www.gnu.org/licenses/>.
*/
use super::*;
static BASE_ISSUE_URL: &str = "{base_url}/{repo}/issues";
pub fn new_issue_failure(e: Error, conf: &Configuration) -> String {
format!("Hello,
Unfortunately we were not able to create your issue. The reason was: `{}`. Please contact the repository's owners for assistance.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", e, local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name)
}
pub fn new_issue_success(
title: String,
password: Password,
issue_id: i64,
conf: &Configuration,
) -> String {
format!("Hello,
You have successfully submitted an issue titled \"{title}\". Your issue can be found at
{url}/{issue_id}
You will receive replies from other users. To unsubscribe from the conversation, send an email to {local_part}+{password}+unsubscribe@{domain}.
To reply to other users or post new comments, send your text to {local_part}+{password}+reply@{domain}.
To close the issue, send an email to {local_part}+{password}+close@{domain}.
Please keep this email in order to be able to keep in touch with your issue.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", title = title, password = password, issue_id = issue_id, url = BASE_ISSUE_URL.replace("{base_url}", &conf.base_url).replace("{repo}", &conf.repo), local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name)
}
pub fn new_reply_failure(e: Error, conf: &Configuration) -> String {
format!("Hello,
Unfortunately we were not able to post your reply. The reason was: `{}`. Please contact the repository's owners for assistance.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", e, local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name)
}
pub fn new_reply_success(
title: String,
password: Password,
issue_id: i64,
is_subscribed: bool,
conf: &Configuration,
) -> String {
if is_subscribed {
format!("Hello,
Your reply to issue \"{title}\" has been successfully posted. You can view the discussion here:
{url}/{issue_id}
You will receive replies from other users. To unsubscribe from the conversation, send an email to {local_part}+{password}+unsubscribe@{domain}.
To reply to other users or post new comments, send your text to {local_part}+{password}+reply@{domain}.
To close the issue, send an email to {local_part}+{password}+close@{domain}.
Please keep this email in order to be able to keep in touch with your issue.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", title = title, password = password, issue_id = issue_id, url = BASE_ISSUE_URL.replace("{base_url}", &conf.base_url).replace("{repo}", &conf.repo), local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name)
} else {
format!("Hello,
Your reply to issue \"{title}\" has been successfully posted. You can view the discussion here:
{url}/{issue_id}
You will not receive replies from other users. To subscribe to the conversation, send an email to {local_part}+{password}+subscribe@{domain}.
To reply to other users or post new comments, send your text to {local_part}+{password}+reply@{domain}.
To close the issue, send an email to {local_part}+{password}+close@{domain}.
Please keep this email in order to be able to keep in touch with your issue.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", title = title, password = password, issue_id = issue_id, url = BASE_ISSUE_URL.replace("{base_url}", &conf.base_url).replace("{repo}", &conf.repo), local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name)
}
}
pub fn close_success(title: String, issue_id: i64, conf: &Configuration) -> String {
format!(
"Hello,
Your issue \"{title}\" has been successfully closed. You can view the discussion here:
{url}/{issue_id}
This is an automated email from {bot_name} <{local_part}+help@{domain}>",
title = title,
issue_id = issue_id,
url = BASE_ISSUE_URL
.replace("{base_url}", &conf.base_url)
.replace("{repo}", &conf.repo),
local_part = &conf.local_part,
domain = &conf.domain,
bot_name = &conf.bot_name,
)
}
pub fn close_failure(e: Error, conf: &Configuration) -> String {
format!("Hello,
Unfortunately we were not able to close this issue. The reason was: `{}`. Please contact the repository's owners for assistance.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", e, local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name)
}
pub fn invalid_request(conf: &Configuration) -> String {
format!(
"Hello,
Your request was not correct. Here are the valid requests you can ask from this bot:
- post a new issue eponymously: send an e-mail with the issue title as the subject and the issue body as the email body to {local_part}@{domain}. On success a password will be given that allows you to reply, close the issue, and also change your subscription to the discussion.
- post a new issue anonymously: send an email as above to the address {local_part}+anonymous@{domain}. {bot_name} will replace your name with 'Anonymous'
If p is the given password, you may perform actions on your issue as follows:
- reply: {local_part}+p+reply@{domain}. Subject value can be anything.
- close issue: {local_part}+p+close@{domain} email content can be anything
- change subscription: {local_part}+p+unsubscribe@{domain} and {local_part}+p+subscribe@{domain}
This is an automated email from {bot_name} <{local_part}+help@{domain}>",
local_part = &conf.local_part,
domain = &conf.domain,
bot_name = &conf.bot_name,
)
}
pub fn change_subscription_success(
title: String,
password: Password,
issue_id: i64,
is_subscribed: bool,
conf: &Configuration,
) -> String {
format!("Hello,
Your subscription change to issue \"{title}\" has been successfully performed. You can view the discussion here:
{url}/{issue_id}
You will {not}receive replies from other users. To {un}subscribe to the conversation, send an email to {local_part}+{password}+{un}subscribe@{domain}.
To reply to other users or post new comments, send your text to {local_part}+{password}+reply@{domain}.
To close the issue, send an email to {local_part}+{password}+close@{domain}.
Please keep this email in order to be able to keep in touch with your issue.
This is an automated email from {bot_name} <{local_part}+help@{domain}>", title = title, password = password, issue_id = issue_id, url = BASE_ISSUE_URL.replace("{base_url}", &conf.base_url).replace("{repo}", &conf.repo), local_part = &conf.local_part, domain = &conf.domain, bot_name = &conf.bot_name, not = if is_subscribed { "" }else {"not "}, un = if is_subscribed { "un" } else { "" } )
}
pub fn change_subscription_failure(is_subscribed: bool, conf: &Configuration) -> String {
format!(
"Hello,
Your subscription change was unsuccessful. You are already {un}subscribed.
This is an automated email from {bot_name} <{local_part}+help@{domain}>",
local_part = &conf.local_part,
domain = &conf.domain,
bot_name = &conf.bot_name,
un = if is_subscribed { "un" } else { "" }
)
}
pub fn reply_update(issue: &Issue, conf: &Configuration, comments: Vec<String>) -> String {
assert!(!comments.is_empty());
format!(
"Hello,
There have been new replies in issue `{title}`. You are receiving this notice because you are subscribed to the discussion. To unsubscribe, send an email to {local_part}+{password}+unsubscribe@{domain}
{comments}
This is an automated email from {bot_name} <{local_part}+help@{domain}>",
local_part = &conf.local_part,
domain = &conf.domain,
bot_name = &conf.bot_name,
password = &issue.password.to_string(),
title = &issue.title,
comments = comments.join("\n\n-------------------------------------------------------------------------\n\n")
)
}