1
1
mirror of https://github.com/qvacua/vimr.git synced 2024-12-01 01:32:04 +03:00
vimr/bin/set_appcast.py
2021-11-05 22:09:04 +01:00

64 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python3
# pip3 install requests
# pip3 install Markdown
# We use python of brew due to some pip packages.
import os
import io
import sys
import subprocess
import requests
import json
import markdown
from datetime import datetime
from string import Template
SIGN_UPDATE = './bin/sign_update'
PRIVATE_KEY_PATH = os.path.expanduser('~/.local/secrets/sparkle_priv.pem')
GITHUB_TOKEN_PATH = os.path.expanduser('~/.local/secrets/github.qvacua.release.token')
file_path = sys.argv[1]
bundle_version = sys.argv[2]
marketing_version = sys.argv[3]
tag_name = sys.argv[4]
is_snapshot = True if len(sys.argv) > 5 and sys.argv[5] == "true" else False
file_size = os.stat(file_path).st_size
file_signature = subprocess.check_output([SIGN_UPDATE, file_path, PRIVATE_KEY_PATH]).decode('utf-8').strip()
appcast_template_file = open('resources/appcast_template.xml', 'r')
appcast_template = Template(appcast_template_file.read())
appcast_template_file.close()
token_file = open(GITHUB_TOKEN_PATH, 'r')
token = token_file.read().strip()
token_file.close()
release_response = requests.get('https://api.github.com/repos/qvacua/vimr/releases/tags/{0}'.format(tag_name),
headers={'Authorization': f"token {token}"})
release_json = json.loads(release_response.content)
title = release_json['name']
download_url = release_json['assets'][0]['browser_download_url']
release_notes_url = release_json['html_url']
release_notes = release_json['body']
appcast = appcast_template.substitute(
title=title,
release_notes=markdown.markdown(release_notes),
release_notes_link=release_notes_url,
publication_date=datetime.now().isoformat(),
file_url=download_url,
bundle_version=bundle_version,
marketing_version=marketing_version,
file_length=file_size,
signature=file_signature
)
appcast_file_name = 'appcast_snapshot.xml' if is_snapshot else 'appcast.xml'
with io.open('build/Build/Products/Release/{0}'.format(appcast_file_name), 'w+') as appcast_file:
appcast_file.write(appcast)