mirror of
https://github.com/tonsky/FiraCode.git
synced 2024-08-17 17:00:42 +03:00
74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
|
#! /usr/bin/env python3
|
||
|
import argparse, base64, common, glob, os, platform, re, subprocess, sys, urllib.request, zipfile
|
||
|
|
||
|
def log_errors(name):
|
||
|
def wrap(f):
|
||
|
def result(*args, **kwargs):
|
||
|
try:
|
||
|
f(*args, **kwargs)
|
||
|
except Exception as e:
|
||
|
print(f"{name}: Failed {e}")
|
||
|
return result
|
||
|
return wrap
|
||
|
|
||
|
def package(version):
|
||
|
zip = f"Fira_Code_v{version}.zip"
|
||
|
|
||
|
print('Package:', zip)
|
||
|
with zipfile.ZipFile(zip, 'w', compression = zipfile.ZIP_DEFLATED, compresslevel = 9) as archive:
|
||
|
for f in glob.glob("distr/**", recursive = True):
|
||
|
arcname = f[len("distr/"):]
|
||
|
if arcname and not os.path.basename(arcname).startswith("."):
|
||
|
archive.write(f, arcname)
|
||
|
|
||
|
def github_headers():
|
||
|
if os.environ.get('GITHUB_BASIC'):
|
||
|
auth = 'Basic ' + base64.b64encode(os.environ.get('GITHUB_BASIC').encode('utf-8')).decode('utf-8')
|
||
|
else:
|
||
|
auth = 'token ' + os.environ.get('API_TOKEN')
|
||
|
return {
|
||
|
'Accept': 'application/vnd.github.v3+json',
|
||
|
'Authorization': auth
|
||
|
}
|
||
|
|
||
|
@log_errors("github_release")
|
||
|
def github_release(version):
|
||
|
zip = f"Fira_Code_v{version}.zip"
|
||
|
|
||
|
data = '{"tag_name":"' + version + '","name":"' + version + '"}'
|
||
|
headers = github_headers()
|
||
|
resp = urllib.request.urlopen(urllib.request.Request('https://api.github.com/repos/tonsky/FiraCode/releases', data=data.encode('utf-8'), headers=headers)).read()
|
||
|
upload_url = re.match('https://.*/assets', json.loads(resp.decode('utf-8'))['upload_url']).group(0)
|
||
|
|
||
|
print('github_release: Uploading', zip, 'to', upload_url)
|
||
|
headers['Content-Type'] = 'application/zip'
|
||
|
headers['Content-Length'] = os.path.getsize(zip)
|
||
|
with open(zip, 'rb') as data:
|
||
|
urllib.request.urlopen(urllib.request.Request(upload_url + '?name=' + zip, data=data, headers=headers))
|
||
|
|
||
|
@log_errors("npm_publish")
|
||
|
def npm_publish(version):
|
||
|
print("npm_publish: Skip")
|
||
|
|
||
|
@log_errors("update_homebrew")
|
||
|
def update_homebrew(version):
|
||
|
print("update_homebrew: Skip") # Update https://github.com/Homebrew/homebrew-cask-fonts
|
||
|
|
||
|
@log_errors("update_scoop")
|
||
|
def update_scoop(version):
|
||
|
print("update_scoop: Skip") # Update https://github.com/matthewjberger/scoop-nerd-fonts/blob/master/bucket/FiraCode.json
|
||
|
|
||
|
@log_errors("update_google_fonts")
|
||
|
def update_google_fonts(version):
|
||
|
print("update_google_fonts: Skip")
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
os.chdir(common.root)
|
||
|
version = common.version()
|
||
|
package(version)
|
||
|
github_release(version)
|
||
|
npm_publish(version)
|
||
|
update_homebrew(version)
|
||
|
update_scoop(version)
|
||
|
update_google_fonts(version)
|
||
|
sys.exit(0)
|