Created
January 31, 2022 14:43
-
-
Save pineoc/588537cef8dba9902205e5c1cc334c51 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import subprocess | |
import json | |
# importing the requests library | |
from urllib import request, parse | |
webhook_url = 'https://hooks.slack.com/services/HOOK URL' | |
SWARM_URL = 'https://swarm.project.com' | |
def get_desc(change): | |
cmd = ['p4', 'describe', '-s', '-m 1', change] | |
desc = subprocess.check_output(cmd).decode() | |
# get stream from affected files list first item | |
desc_splited = desc.split('Affected files ...') | |
desc_msg = desc_splited[0] | |
return {'msg': desc_msg} | |
# format_msg function processes the string to a more presentable format for Slack message | |
def format_msg(data): | |
desc_msg = data['msg'] | |
# re-format message to presentable format as final_msg | |
split_msg = desc_msg.replace(' on ', ' by ').split(' by ') | |
cl = str(split_msg[0]).split(' ')[1] | |
user = str(split_msg[1]).split('@')[0] | |
msg = str(split_msg[2]).split('\t')[1].strip() | |
final_msg = '*:gear: Changelist*: {} (<{}/changes/{}|:bee: view>)\n*:male_genie: User*: {}\n*:memo: Desc*: {}'.format(cl, SWARM_URL, cl, user, msg) | |
return {'msg': final_msg} | |
def post_changes_to_slack(data): | |
slack_data = {'text': data['msg']} | |
url = webhook_url | |
try: | |
request.urlopen(url, json.dumps(slack_data).encode('utf-8')) | |
except: | |
return | |
def main(change): | |
try: | |
rawData = get_desc(change) | |
data = format_msg(rawData) | |
post_changes_to_slack(data) | |
except Exception as e: | |
return | |
if __name__ == '__main__': | |
main(sys.argv[1]) | |
exit(0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment