aws/hhvm1/lambdas/parse_input.py (49 lines of code) (raw):

# Copyright (c) 2017-present, Facebook, Inc. # All rights reserved. # # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. from datetime import date import re from activities import Activity, BuildAndPublishMacOS, MakeBinaryPackage from common import is_binary_platform def lambda_handler(event, context=None): available_activities = {c.__name__ for c in Activity.__subclasses__()} versions = [] platforms = [] activities = [] debug = '' for part in parts(event): if part in ['skip_ec2', 'skip-ec2', '--skip-ec2']: debug = 'skip_ec2' elif part in ['fake_ec2', 'fake-ec2', '--fake-ec2']: debug = 'fake_ec2' elif part in ['test', 'test_build', 'test-build', '--test', '--test-build']: debug = 'test_build' elif part in available_activities: activities += [part] elif re.fullmatch(r'[0-9]+\.[0-9]+\.[0-9]+', part): versions += [part] elif is_binary_platform(part): platforms += [part] if debug == 'test_build': available_activities = [ MakeBinaryPackage.__name__, BuildAndPublishMacOS.__name__, ] for a in activities: if a not in available_activities: raise Exception(a + ' is not a valid test build step') if not activities: activities = available_activities if not versions: versions = [date.today().strftime('%Y.%m.%d')] return { 'buildInput': { 'versions': versions, 'platforms': platforms, 'activities': activities, 'debug': debug, } } def parts(input): if type(input) in [list, dict]: if type(input) == dict: input = input.values() return [part for item in input for part in parts(item)] return str(input).split(' ')