1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #! /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)
|