mirror of
https://github.com/zen-browser/desktop.git
synced 2025-07-07 20:39:59 +02:00
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
import json
|
|
import os
|
|
import requests
|
|
from typing import Optional
|
|
|
|
RESPONSE_FILENAME = 'rc-response.json'
|
|
METADATA_FILENAME = 'surfer.json'
|
|
|
|
def get_current_version() -> Optional[str]:
|
|
"""Retrieve the current version from the metadata file."""
|
|
try:
|
|
with open(METADATA_FILENAME) as f:
|
|
metadata = json.load(f)
|
|
return metadata['version']['candidate']
|
|
except (FileNotFoundError, json.JSONDecodeError) as e:
|
|
print(f"Error reading current version: {e}")
|
|
return None
|
|
|
|
def get_rc_response() -> Optional[str]:
|
|
"""Get the release candidate response from the response file."""
|
|
try:
|
|
with open(RESPONSE_FILENAME) as f:
|
|
data = json.load(f)
|
|
for tag_dict in data['tags']:
|
|
tag = tag_dict['tag']
|
|
if (tag.startswith('FIREFOX') and tag.endswith('_BUILD1')
|
|
and 'ESR' not in tag and 'b' not in tag):
|
|
return tag.replace('FIREFOX_', '').replace('_BUILD1', '').replace('_', '.')
|
|
except (FileNotFoundError, json.JSONDecodeError) as e:
|
|
print(f"Error reading RC response: {e}")
|
|
return None
|
|
|
|
def get_pings() -> str:
|
|
"""Build a string of Discord user IDs for mentions."""
|
|
ping_ids = os.getenv('DISCORD_PING_IDS', '')
|
|
return ' '.join(f"<@{ping.strip()}>" for ping in ping_ids.split(',') if ping.strip())
|
|
|
|
def send_webhook(rc: str) -> None:
|
|
"""Send a message to the Discord webhook."""
|
|
text = f"||{get_pings()}|| New Firefox RC version is available: **{rc}**"
|
|
webhook_url = os.getenv('DISCORD_WEBHOOK_URL')
|
|
|
|
if webhook_url:
|
|
message = {
|
|
"content": text,
|
|
"username": "Firefox RC Checker",
|
|
}
|
|
try:
|
|
response = requests.post(webhook_url, json=message)
|
|
response.raise_for_status() # Raise an error for bad responses
|
|
except requests.RequestException as e:
|
|
print(f"Error sending webhook: {e}")
|
|
else:
|
|
print("Webhook URL not set.")
|
|
|
|
if __name__ == "__main__":
|
|
current_version = get_current_version()
|
|
rc_response = get_rc_response()
|
|
|
|
if rc_response and rc_response != current_version:
|
|
send_webhook(rc_response)
|