Signal-iOS/Scripts/feature_flags_common.py

76 lines
2.4 KiB
Python
Executable File

#!/usr/bin/env python
import sys
import os
import re
import commands
import subprocess
import inspect
def fail(message):
file_name = __file__
current_line_no = inspect.stack()[1][2]
current_function_name = inspect.stack()[1][3]
print 'Failure in:', file_name, current_line_no, current_function_name
print message
sys.exit(1)
def execute_command(command):
try:
print ' '.join(command)
output = subprocess.check_output(command)
if output:
print output
except subprocess.CalledProcessError as e:
print e.output
sys.exit(1)
def get_feature_flag():
flags_path = 'SignalServiceKit/src/Util/FeatureFlags.swift'
fd = open(flags_path, 'rt')
regex = re.compile(r'([^\.\s]+)$')
for line in fd:
if line.strip().startswith('private let build: FeatureBuild'):
match = regex.search(line)
if match and match.group(1):
return match.group(1)
def set_feature_flags(new_flags_level):
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.')
flags_path = 'SignalServiceKit/src/Util/FeatureFlags.swift'
with open(flags_path, 'rt') as f:
text = f.read()
lines = text.split('\n')
# lines = [line.strip() for line in lines]
new_lines = []
for line in lines:
if line.strip().startswith('private let build: FeatureBuild'):
line = "private let build: FeatureBuild = OWSIsDebugBuild() ? .dev : .%s" % ( new_flags_level, )
new_lines.append(line)
else:
new_lines.append(line)
text = '\n'.join(new_lines)
with open(flags_path, 'wt') as f:
f.write(text)
output = subprocess.check_output(['git', 'status', '--porcelain'])
if len(output.strip()) > 0:
# git add .
cmds = ['git', 'add', '.']
execute_command(cmds)
# git commit -m "Feature flags for .beta."
cmds = ['git', 'commit', '-m', '"Feature flags for .%s."' % ( new_flags_level, )]
execute_command(cmds)
else:
print "Feature flags already set to %s, nothing to do" % new_flags_level