#!/usr/bin/env python3

import argparse
import os
import re
import sys

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError


def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("slack_token")
    parser.add_argument("slack_channel")
    args = parser.parse_args()
    return args


def checkCommitMessage(msg):
    regex = re.compile(r"^'?\[(FL-\d+,?\s?)+\]")
    if regex.match(msg):
        return True
    return False


def reportSlack(commit_hash, slack_token, slack_channel, message):
    client = WebClient(token=slack_token)
    try:
        client.chat_postMessage(channel="#" + slack_channel, text=message)
    except SlackApiError as e:
        print(e)
        sys.exit(1)


def main():
    args = parse_args()
    commit_msg = os.getenv("COMMIT_MSG")
    commit_hash = os.getenv("COMMIT_HASH")
    commit_sha = os.getenv("COMMIT_SHA")
    commit_link = (
        "<https://github.com/flipperdevices/flipperzero-firmware/commit/"
        + commit_hash
        + "|"
        + commit_sha
        + ">"
    )
    message = "Commit " + commit_link + " merged to dev without 'FL' ticket!"
    if not checkCommitMessage(commit_msg):
        reportSlack(commit_hash, args.slack_token, args.slack_channel, message)


if __name__ == "__main__":
    main()