Make messages look better and publish multiple for push events
For push events, publish one message per commit pushed, up to a limit of 15.
This commit is contained in:
45
src/main.rs
45
src/main.rs
@ -105,28 +105,22 @@ async fn ensure_matrix_room_joined(matrix_client: &Client, room_id: &OwnedRoomOr
|
||||
room.ok_or_else(|| anyhow!("Unable to join room {}", room_id))
|
||||
}
|
||||
|
||||
fn build_gitlab_message(event: &GitlabEvent) -> String {
|
||||
fn build_gitlab_messages(event: &GitlabEvent) -> Vec<String> {
|
||||
let project = event.project();
|
||||
let r = event.r#ref();
|
||||
let refname = if r.starts_with("refs/") {
|
||||
let parts = r.split('/').collect::<Vec<_>>();
|
||||
if parts.len() > 2 {
|
||||
parts.into_iter().skip(2).collect::<Vec<_>>().join("/").to_string()
|
||||
} else {
|
||||
drop(parts);
|
||||
r.to_string()
|
||||
}
|
||||
} else {
|
||||
r.to_string()
|
||||
};
|
||||
format!(
|
||||
"*{}* {} **{}** [{}]({})",
|
||||
project.path_with_namespace,
|
||||
refname,
|
||||
event.user(),
|
||||
event.title(),
|
||||
event.url()
|
||||
)
|
||||
let refname = event::parse_ref(event.r#ref());
|
||||
event
|
||||
.titles()
|
||||
.iter()
|
||||
.map(|title| {
|
||||
format!(
|
||||
"\\[{}\\] `{}` *{}* {}",
|
||||
project.path_with_namespace,
|
||||
refname,
|
||||
event.user(),
|
||||
title,
|
||||
)
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
async fn handle_gitlab_event(
|
||||
@ -145,10 +139,11 @@ async fn handle_gitlab_event(
|
||||
}
|
||||
|
||||
let room = ensure_matrix_room_joined(matrix_client, room_id).await?;
|
||||
let msg = build_gitlab_message(&event);
|
||||
debug!("Sending message to {}: {}", room_id, msg);
|
||||
let msg_content = RoomMessageEventContent::text_markdown(&msg);
|
||||
room.send(msg_content, None).await?;
|
||||
for msg in build_gitlab_messages(&event) {
|
||||
debug!("Sending message to {}: {}", room_id, msg);
|
||||
let msg_content = RoomMessageEventContent::text_markdown(&msg);
|
||||
room.send(msg_content, None).await?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user