mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
| 
											8 years ago
										 | #!/usr/bin/env python | ||
|  | import sys | ||
|  | import os | ||
|  | import re | ||
|  | import commands | ||
|  | import subprocess | ||
|  | 
 | ||
|  | def fail(message): | ||
|  |     print message | ||
|  |     sys.exit(1) | ||
|  | 
 | ||
|  | def find_project_root(): | ||
|  |     path = os.path.abspath(os.curdir) | ||
|  |      | ||
|  |     while True: | ||
|  |         # print 'path', path | ||
|  |         if not os.path.exists(path): | ||
|  |             break | ||
|  |         git_path = os.path.join(path, '.git') | ||
|  |         if os.path.exists(git_path): | ||
|  |             return path | ||
|  |         new_path = os.path.abspath(os.path.dirname(path)) | ||
|  |         if not new_path or new_path == path: | ||
|  |             break | ||
|  |         path = new_path | ||
|  |      | ||
|  |     fail('Could not find project root path') | ||
|  | 
 | ||
|  | if __name__ == '__main__': | ||
|  |     project_root_path = find_project_root() | ||
|  |     # print 'project_root_path', project_root_path | ||
|  |     plist_path = os.path.join(project_root_path, 'Signal', 'Signal-Info.plist') | ||
|  |     if not os.path.exists(plist_path): | ||
|  |         fail('Could not find .plist') | ||
|  |          | ||
|  |     output = subprocess.check_output(['git', 'status', '--porcelain']) | ||
|  |     if len(output.strip()) > 0: | ||
|  |         print output | ||
|  |         fail('Git repository has untracked files.') | ||
|  |     output = subprocess.check_output(['git', 'diff', '--shortstat']) | ||
|  |     if len(output.strip()) > 0: | ||
|  |         print output | ||
|  |         fail('Git repository has untracked files.') | ||
|  |      | ||
|  |     # Ensure .plist is in xml format, not binary. | ||
|  |     output = subprocess.check_output(['plutil', '-convert', 'xml1', plist_path]) | ||
|  |     # print 'output', output | ||
|  |      | ||
|  |     with open(plist_path, 'rt') as f: | ||
|  |         text = f.read() | ||
|  |     # print 'text', text | ||
|  | 
 | ||
|  |     # <key>CFBundleVersion</key> | ||
|  |     # <string>2.13.0.13</string> | ||
|  |     file_regex = re.compile(r'<key>CFBundleVersion</key>\s*<string>([\d\.]+)</string>', re.MULTILINE) | ||
|  |     file_match = file_regex.search(text) | ||
|  |     # print 'match', match | ||
|  |     if not file_match:    | ||
|  |         fail('Could not parse .plist') | ||
|  |      | ||
|  |     old_build_number = file_match.group(1) | ||
|  |     print 'old_build_number:', old_build_number | ||
|  |      | ||
|  |     build_number_regex = re.compile(r'\.(\d+)$') | ||
|  |     build_number_match = build_number_regex.search(old_build_number) | ||
|  |     if not build_number_match:    | ||
|  |         fail('Could not parse .plist version') | ||
|  |      | ||
|  |     build_number = build_number_match.group(1) | ||
|  |     build_number = str(1 + int(build_number)) | ||
|  |     new_build_number = old_build_number[:build_number_match.start(1)] + build_number | ||
|  |     print 'new_build_number:', new_build_number | ||
|  |      | ||
|  |     text = text[:file_match.start(1)] + new_build_number + text[file_match.end(1):] | ||
|  |     with open(plist_path, 'wt') as f: | ||
|  |         f.write(text) | ||
|  |          | ||
|  |     output = subprocess.check_output(['git', 'add', '.']) | ||
|  |     output = subprocess.check_output(['git', 'commit', '-m', 'Bump build from to %s.\n\n// FREEBIE' % new_build_number]) | ||
|  |      | ||
|  |          |