11use crate :: PgDbClient ;
22use crate :: bors:: event:: {
3- PullRequestAssigned , PullRequestClosed , PullRequestConvertedToDraft , PullRequestEdited ,
4- PullRequestMerged , PullRequestOpened , PullRequestPushed , PullRequestReadyForReview ,
5- PullRequestReopened , PullRequestUnassigned , PushToBranch ,
3+ PullRequestAssigned , PullRequestClosed , PullRequestComment , PullRequestConvertedToDraft ,
4+ PullRequestEdited , PullRequestMerged , PullRequestOpened , PullRequestPushed ,
5+ PullRequestReadyForReview , PullRequestReopened , PullRequestUnassigned , PushToBranch ,
66} ;
7+
8+ use crate :: bors:: BorsContext ;
9+ use crate :: bors:: handlers:: handle_comment;
710use crate :: bors:: handlers:: unapprove_pr;
811use crate :: bors:: handlers:: workflow:: { AutoBuildCancelReason , maybe_cancel_auto_build} ;
12+ use crate :: bors:: merge_queue:: MergeQueueSender ;
913use crate :: bors:: mergeability_queue:: MergeabilityQueueSender ;
1014use crate :: bors:: { Comment , PullRequestStatus , RepositoryState } ;
1115use crate :: database:: MergeableState ;
@@ -90,7 +94,9 @@ pub(super) async fn handle_push_to_pull_request(
9094pub ( super ) async fn handle_pull_request_opened (
9195 repo_state : Arc < RepositoryState > ,
9296 db : Arc < PgDbClient > ,
97+ ctx : Arc < BorsContext > ,
9398 mergeability_queue : MergeabilityQueueSender ,
99+ merge_queue_tx : MergeQueueSender ,
94100 payload : PullRequestOpened ,
95101) -> anyhow:: Result < ( ) > {
96102 let pr_status = if payload. draft {
@@ -101,8 +107,8 @@ pub(super) async fn handle_pull_request_opened(
101107 let assignees: Vec < String > = payload
102108 . pull_request
103109 . assignees
104- . into_iter ( )
105- . map ( |user| user. username )
110+ . iter ( )
111+ . map ( |user| user. username . clone ( ) )
106112 . collect ( ) ;
107113 db. create_pull_request (
108114 repo_state. repository ( ) ,
@@ -115,6 +121,8 @@ pub(super) async fn handle_pull_request_opened(
115121 )
116122 . await ?;
117123
124+ process_pr_description_commands ( & payload, repo_state. clone ( ) , db, ctx, merge_queue_tx) . await ?;
125+
118126 mergeability_queue. enqueue_pr ( repo_state. repository ( ) . clone ( ) , payload. pull_request . number ) ;
119127
120128 Ok ( ( ) )
@@ -256,6 +264,30 @@ pub(super) async fn handle_push_to_branch(
256264 Ok ( ( ) )
257265}
258266
267+ async fn process_pr_description_commands (
268+ payload : & PullRequestOpened ,
269+ repo : Arc < RepositoryState > ,
270+ database : Arc < PgDbClient > ,
271+ ctx : Arc < BorsContext > ,
272+ merge_queue_tx : MergeQueueSender ,
273+ ) -> anyhow:: Result < ( ) > {
274+ let pr_description_comment = create_pr_description_comment ( payload) ;
275+ handle_comment ( repo, database, ctx, pr_description_comment, merge_queue_tx) . await
276+ }
277+
278+ fn create_pr_description_comment ( payload : & PullRequestOpened ) -> PullRequestComment {
279+ PullRequestComment {
280+ repository : payload. repository . clone ( ) ,
281+ author : payload. pull_request . author . clone ( ) ,
282+ pr_number : payload. pull_request . number ,
283+ text : payload. pull_request . message . clone ( ) ,
284+ html_url : format ! (
285+ "https://github.com/{}/pull/{}" ,
286+ payload. repository, payload. pull_request. number
287+ ) ,
288+ }
289+ }
290+
259291async fn notify_of_edited_pr (
260292 repo : & RepositoryState ,
261293 pr_number : PullRequestNumber ,
0 commit comments