[tor-commits] [gettor/master] Added option to get links only, and fixed format according to current template for links file.
ilv at torproject.org
ilv at torproject.org
Tue Nov 3 19:31:31 UTC 2015
commit 24b655c4177eccc4439ac198ff098b7883425067
Author: ilv <ilv at users.noreply.github.com>
Date: Sat Oct 31 15:09:37 2015 -0300
Added option to get links only, and fixed format according to current template for links file.
---
upload/bundles2drive.py | 62 ++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 56 insertions(+), 6 deletions(-)
diff --git a/upload/bundles2drive.py b/upload/bundles2drive.py
index 1cf6a17..bac6fea 100644
--- a/upload/bundles2drive.py
+++ b/upload/bundles2drive.py
@@ -17,6 +17,7 @@ import os
import gnupg
import hashlib
import logging
+import argparse
import ConfigParser
import gettor.core
@@ -242,11 +243,56 @@ def share_file(service, file_id):
except errors.HttpError, error:
print('Error occured while fetch public link for file: %s' % file_id)
- print("Uploaded to %s" % file['webContentLink'])
+ print "Uploaded %s to %s" % (file['title'], file['webContentLink'])
return file['webContentLink']
+def get_files_links(service, v):
+ """Print links of uploaded files.
+
+ :param: service (object): Goolge Drive service object.
+ :param: v (string): Version of Tor Browser to look for.
+
+ """
+
+ windows_re = 'torbrowser-install-%s_\w\w(-\w\w)?\.exe(\.asc)?' % v
+ linux_re = 'tor-browser-linux\d\d-%s_(\w\w)(-\w\w)?\.tar\.xz(\.asc)?' % v
+ osx_re = 'TorBrowser-%s-osx\d\d_(\w\w)(-\w\w)?\.dmg(\.asc)?' % v
+
+ # dictionary to store file names and IDs
+ files_dict = dict()
+
+ print "Trying to fetch links of uploaded files..."
+ links = service.files().list().execute()
+ items = links.get('items', [])
+
+ if not items:
+ raise ValueError('No files found.')
+
+ else:
+ for item in items:
+ if re.search(windows_re, item['title']):
+ files_dict[item['title']] = item['id']
+ elif re.search(linux_re, item['title']):
+ files_dict[item['title']] = item['id']
+ elif re.search(osx_re, item['title']):
+ files_dict[item['title']] = item['id']
+ return files_dict
+
if __name__ == '__main__':
+ parser = argparse.ArgumentParser(
+ description='Utility to upload Tor Browser to Google Drive.'
+ )
+
+ # if no LC specified, download all
+ parser.add_argument(
+ '-l', '--links', default=None,
+ help='Create links file with files already uploaded and '\
+ 'matching the specified version. '
+ )
+
+ args = parser.parse_args()
+
config = ConfigParser.ConfigParser()
config.read('drive.cfg')
@@ -310,7 +356,14 @@ if __name__ == '__main__':
readable = ' '.join(fp[i:i+4] for i in xrange(0, len(fp), 4))
try:
- uploaded_files = upload_files(drive_service, upload_dir)
+ # helpful when something fails but files are uploaded.
+ if args.links:
+ uploaded_files = get_files_links(drive_service, args.links)
+
+ if not uploaded_files:
+ raise ValueError("There are no files for that version")
+ else:
+ uploaded_files = upload_files(drive_service, upload_dir)
# use default config
core = gettor.core.Core('/home/gettor/core.cfg')
@@ -351,10 +404,7 @@ if __name__ == '__main__':
elif p3.match(file):
osys, arch, lc = get_bundle_info(file, 'osx')
- link = "Tor Browser %s-bit:\n%s$Tor Browser's signature %s-bit:"\
- "\n%s$SHA256 checksum of Tor Browser %s-bit (advanced):"\
- "\n%s$" %\
- (arch, link_file, arch, link_asc, arch, sha_file)
+ link = "%s$%s$%s$" % (link_file, link_asc, sha_file)
# note that you should only upload bundles for supported locales
core.add_link('Drive', osys, lc, link)
More information about the tor-commits
mailing list