Loading scripts/update_files +62 −79 Original line number Diff line number Diff line #!/usr/bin/env python3 #pip3 install PyGithub # Before running, place the authentication token for a user with push access to the repository # in an environment variable 'GITHUB_AUTH' from github import Github import sys import json import urllib import subprocess import os REPO_NAME = "TheTorProject/gettorbrowser" failure = False failed_uploads = [] def delete_old_releases(repo): for release in repo.get_releases(): for asset in release.get_assets(): asset.delete_asset() release.delete_release() #Download list of tor browser releases and upload them to github def upload_files(release): url = urllib.request.urlopen("https://aus1.torproject.org/torbrowser/update_3/release/downloads.json") data = json.loads(url.read().decode()) for arch in data['downloads']: for locale in data['downloads'][arch]: for asset in data['downloads'][arch][locale]: url = data['downloads'][arch][locale][asset] filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Will retry later.") failed_uploads.append(url) #Retry failed uploads for url in failed_uploads: filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Please upload this file manually.") failure = True def main(token): #Initialize a new release g = Github(token) repo = g.get_repo(REPO_NAME) delete_old_releases(repo) #Create a new release release = repo.create_git_release("torbrowser-release", "Tor Browser releases", "These releases were uploaded to be distributed with gettor.") upload_files(release) if failure: sys.exit(1) if __name__ == "__main__": if 'GITHUB_AUTH' not in os.environ: print("Usage: {}".format(sys.argv[0]), file=sys.stderr) print("\nThe authentication token for github should be placed in the environment" "variable 'GITHUB_AUTH'", file=sys.stderr) sys.exit(1) token = os.environ['GITHUB_AUTH'] sys.exit(main(token)) #!/bin/bash # # This file is part of GetTor, a Tor Browser distribution system. # # :authors: hiro <hiro@torproject.org> # see also AUTHORS file # # :copyright: (c) 2008-2019, The Tor Project, Inc. # # :license: This is Free Software. See LICENSE for license information. cd ~/releases git checkout master git branch -D torbrowser-releases git push github --delete torbrowser-releases git fetch --all --prune git add . git commit -am 'Create release branch' git checkout -b torbrowser-releases git push -f --follow-tags origin torbrowser-releases git push -f --follow-tags github torbrowser-releases for row in $( curl -s 'https://aus1.torproject.org/torbrowser/update_3/release/downloads.json' | jq -r '.downloads' ); do r=$( echo ${row} | egrep -o 'https?://[^ ]+' | tr -d '",' ); if [[ $r = *[!\ ]* ]]; then git fetch --all wget $r git add . git commit -m '[dist ci] commit from CI runner - update with new torbrowser downloads' diffs=$(git diff origin/torbrowser-releases) if [ -z "$diffs" ]; then echo "No new releases" else git push -f --follow-tags origin torbrowser-releases fi diffs=$(git diff github/torbrowser-releases) if [ -z "$diffs" ]; then echo "No new releases" else git push -f --follow-tags github torbrowser-releases fi fi; done rclone delete gdrive:releases for f in $(ls); do # Update Google Drive rclone copy $f gdrive:releases # Update Internet Archive ia upload ${f} $f --remote-name=$f --metadata="title:${f}" --metadata="mediatype:software" --metadata="collection:open_source_software" done scripts/update_github 0 → 100755 +79 −0 Original line number Diff line number Diff line #!/usr/bin/env python3 #pip3 install PyGithub # Before running, place the authentication token for a user with push access to the repository # in an environment variable 'GITHUB_AUTH' from github import Github import sys import json import urllib import subprocess import os REPO_NAME = "TheTorProject/gettorbrowser" failure = False failed_uploads = [] def delete_old_releases(repo): for release in repo.get_releases(): for asset in release.get_assets(): asset.delete_asset() release.delete_release() #Download list of tor browser releases and upload them to github def upload_files(release): url = urllib.request.urlopen("https://aus1.torproject.org/torbrowser/update_3/release/downloads.json") data = json.loads(url.read().decode()) for arch in data['downloads']: for locale in data['downloads'][arch]: for asset in data['downloads'][arch][locale]: url = data['downloads'][arch][locale][asset] filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Will retry later.") failed_uploads.append(url) #Retry failed uploads for url in failed_uploads: filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Please upload this file manually.") failure = True def main(token): #Initialize a new release g = Github(token) repo = g.get_repo(REPO_NAME) delete_old_releases(repo) #Create a new release release = repo.create_git_release("torbrowser-release", "Tor Browser releases", "These releases were uploaded to be distributed with gettor.") upload_files(release) if failure: sys.exit(1) if __name__ == "__main__": if 'GITHUB_AUTH' not in os.environ: print("Usage: {}".format(sys.argv[0]), file=sys.stderr) print("\nThe authentication token for github should be placed in the environment" "variable 'GITHUB_AUTH'", file=sys.stderr) sys.exit(1) token = os.environ['GITHUB_AUTH'] sys.exit(main(token)) Loading
scripts/update_files +62 −79 Original line number Diff line number Diff line #!/usr/bin/env python3 #pip3 install PyGithub # Before running, place the authentication token for a user with push access to the repository # in an environment variable 'GITHUB_AUTH' from github import Github import sys import json import urllib import subprocess import os REPO_NAME = "TheTorProject/gettorbrowser" failure = False failed_uploads = [] def delete_old_releases(repo): for release in repo.get_releases(): for asset in release.get_assets(): asset.delete_asset() release.delete_release() #Download list of tor browser releases and upload them to github def upload_files(release): url = urllib.request.urlopen("https://aus1.torproject.org/torbrowser/update_3/release/downloads.json") data = json.loads(url.read().decode()) for arch in data['downloads']: for locale in data['downloads'][arch]: for asset in data['downloads'][arch][locale]: url = data['downloads'][arch][locale][asset] filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Will retry later.") failed_uploads.append(url) #Retry failed uploads for url in failed_uploads: filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Please upload this file manually.") failure = True def main(token): #Initialize a new release g = Github(token) repo = g.get_repo(REPO_NAME) delete_old_releases(repo) #Create a new release release = repo.create_git_release("torbrowser-release", "Tor Browser releases", "These releases were uploaded to be distributed with gettor.") upload_files(release) if failure: sys.exit(1) if __name__ == "__main__": if 'GITHUB_AUTH' not in os.environ: print("Usage: {}".format(sys.argv[0]), file=sys.stderr) print("\nThe authentication token for github should be placed in the environment" "variable 'GITHUB_AUTH'", file=sys.stderr) sys.exit(1) token = os.environ['GITHUB_AUTH'] sys.exit(main(token)) #!/bin/bash # # This file is part of GetTor, a Tor Browser distribution system. # # :authors: hiro <hiro@torproject.org> # see also AUTHORS file # # :copyright: (c) 2008-2019, The Tor Project, Inc. # # :license: This is Free Software. See LICENSE for license information. cd ~/releases git checkout master git branch -D torbrowser-releases git push github --delete torbrowser-releases git fetch --all --prune git add . git commit -am 'Create release branch' git checkout -b torbrowser-releases git push -f --follow-tags origin torbrowser-releases git push -f --follow-tags github torbrowser-releases for row in $( curl -s 'https://aus1.torproject.org/torbrowser/update_3/release/downloads.json' | jq -r '.downloads' ); do r=$( echo ${row} | egrep -o 'https?://[^ ]+' | tr -d '",' ); if [[ $r = *[!\ ]* ]]; then git fetch --all wget $r git add . git commit -m '[dist ci] commit from CI runner - update with new torbrowser downloads' diffs=$(git diff origin/torbrowser-releases) if [ -z "$diffs" ]; then echo "No new releases" else git push -f --follow-tags origin torbrowser-releases fi diffs=$(git diff github/torbrowser-releases) if [ -z "$diffs" ]; then echo "No new releases" else git push -f --follow-tags github torbrowser-releases fi fi; done rclone delete gdrive:releases for f in $(ls); do # Update Google Drive rclone copy $f gdrive:releases # Update Internet Archive ia upload ${f} $f --remote-name=$f --metadata="title:${f}" --metadata="mediatype:software" --metadata="collection:open_source_software" done
scripts/update_github 0 → 100755 +79 −0 Original line number Diff line number Diff line #!/usr/bin/env python3 #pip3 install PyGithub # Before running, place the authentication token for a user with push access to the repository # in an environment variable 'GITHUB_AUTH' from github import Github import sys import json import urllib import subprocess import os REPO_NAME = "TheTorProject/gettorbrowser" failure = False failed_uploads = [] def delete_old_releases(repo): for release in repo.get_releases(): for asset in release.get_assets(): asset.delete_asset() release.delete_release() #Download list of tor browser releases and upload them to github def upload_files(release): url = urllib.request.urlopen("https://aus1.torproject.org/torbrowser/update_3/release/downloads.json") data = json.loads(url.read().decode()) for arch in data['downloads']: for locale in data['downloads'][arch]: for asset in data['downloads'][arch][locale]: url = data['downloads'][arch][locale][asset] filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Will retry later.") failed_uploads.append(url) #Retry failed uploads for url in failed_uploads: filename = url.split('/')[-1] try: subprocess.check_call(["/usr/bin/wget", "--quiet", url]) release.upload_asset(filename) os.remove(filename) except: print("Error: failed to update "+url+". Please upload this file manually.") failure = True def main(token): #Initialize a new release g = Github(token) repo = g.get_repo(REPO_NAME) delete_old_releases(repo) #Create a new release release = repo.create_git_release("torbrowser-release", "Tor Browser releases", "These releases were uploaded to be distributed with gettor.") upload_files(release) if failure: sys.exit(1) if __name__ == "__main__": if 'GITHUB_AUTH' not in os.environ: print("Usage: {}".format(sys.argv[0]), file=sys.stderr) print("\nThe authentication token for github should be placed in the environment" "variable 'GITHUB_AUTH'", file=sys.stderr) sys.exit(1) token = os.environ['GITHUB_AUTH'] sys.exit(main(token))