Skip to content

Commit

Permalink
Add slack webhooks
Browse files Browse the repository at this point in the history
  • Loading branch information
nx10 committed Jan 5, 2024
1 parent 54ed981 commit bc23487
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 9 deletions.
22 changes: 18 additions & 4 deletions src/ecpac/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,13 +369,27 @@ def main(
after_run = ""
if slack.slack_webhook_available():
before_run = (
slack.slack_message_bash(
f"Starting ecpac run:\n" f'Run: "{run_id}"\n' f'Pipeline "{pipe_id}"\n' f'Subject: "{sub}"'
slack.slack_message_bash_mrkdwn(
f"Starting ecpac run:\n"
f"Run: `{run_id}`\n"
f'Pipeline: `{pipe_id}`"\n'
f'Subject: `{sub}"`\n'
f"Input: `{path_input.absolute()}`\n"
f"Output: `{path_out.absolute()}`\n"
f"Image: `{path_image.absolute()}`\n"
f"Threads: {res_threads}\n"
f"Memory: {res_memory_gb} GB\n"
f"Analysis level: `{analysis_level}`"
)
+ "\n\n"
)
after_run = "\n\n" + slack.slack_message_bash(
f"Finished ecpac run:\n" f'Run: "{run_id}"\n' f'Pipeline "{pipe_id}"\n' f'Subject: "{sub}"'
after_run = "\n\n" + slack.slack_message_bash_mrkdwn(
f"Finished ecpac run:\n"
f"Run: `{run_id}`\n"
f'Pipeline: `{pipe_id}`"\n'
f'Subject: `{sub}"`\n'
f"Analysis level: `{analysis_level}`\n"
f"Output: `{path_out.absolute()}`\n"
)

job = consts.BASH_TEMPLATE_JOB.format(
Expand Down
17 changes: 12 additions & 5 deletions src/ecpac/slack.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,19 @@

def slack_webhook_available() -> bool:
"""Check if a Slack webhook URL is available."""
return SLACK_WEBHOOK_URL is not None
return SLACK_WEBHOOK_URL is not None and len(SLACK_WEBHOOK_URL) > 0


def slack_message_bash(text: str) -> str:
def slack_message_bash(data: dict) -> str:
"""Generate a bash command to send a message to Slack."""
if SLACK_WEBHOOK_URL is None:
if not slack_webhook_available():
return ""
data = json.dumps({"text": text})
return f"curl -X POST -H 'Content-type: application/json' --data '{data}' {SLACK_WEBHOOK_URL}"
return f"curl -X POST -H 'Content-type: application/json' --data '{json.dumps(data)}' {SLACK_WEBHOOK_URL}"


def slack_message_bash_mrkdwn(text: str) -> str:
"""Generate a bash command to send a message to Slack.
`mrkdwn` is not a typo but a Slack-specific markdown-like syntax.
"""
return slack_message_bash({"text": text})

0 comments on commit bc23487

Please sign in to comment.