Skip to content

Instantly share code, notes, and snippets.

@pineoc
Created January 31, 2022 14:43
Show Gist options
  • Save pineoc/588537cef8dba9902205e5c1cc334c51 to your computer and use it in GitHub Desktop.
Save pineoc/588537cef8dba9902205e5c1cc334c51 to your computer and use it in GitHub Desktop.
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