1#!/usr/bin/env python 2 3import json 4import os 5import string 6 7MAPPING_FILE_NAME = 'serviceMapping.vm' 8RESOURCES_ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__))) 9ARCHETYPE_LAMBDA_ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(RESOURCES_ROOT_DIR, "../")))) 10SERVICE_DIR = os.path.join( 11 os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__file__, "../../../../")))), 12 'services' 13) 14 15def load_all_service_modules(): 16 service_mapping = {} 17 for f in [f for f in os.listdir(SERVICE_DIR) if os.path.isdir(os.path.join(SERVICE_DIR, f)) & os.path.exists(os.path.join(SERVICE_DIR, f, 'target'))]: 18 for s in [s for s in os.listdir(os.path.join(SERVICE_DIR, f, 'target', 'generated-sources/sdk/software/amazon/awssdk/services', f)) if s.endswith('AsyncClient.java') & s.startswith('Default')]: 19 service_mapping[f] = find_client_prefix(s) 20 return service_mapping 21 22def find_client_prefix(d): 23 index = d.find('AsyncClient.java') 24 return d[7:index] 25 26def write_to_vm_file(service_mapping): 27 target = os.path.join(ARCHETYPE_LAMBDA_ROOT_DIR, 'target') 28 29 if not os.path.exists(target): 30 os.mkdir(target) 31 32 target = os.path.join(ARCHETYPE_LAMBDA_ROOT_DIR, 'target', 'classes') 33 34 if not os.path.exists(target): 35 os.mkdir(target) 36 37 filename = os.path.join(target, MAPPING_FILE_NAME) 38 39 with open(filename, 'w') as f: 40 f.write('#set ( $serviceMapping =') 41 f.write(json.dumps(service_mapping)) 42 f.write(')') 43 return filename 44 45def main(): 46 service_mapping = load_all_service_modules() 47 write_to_vm_file(service_mapping) 48 49if __name__ == '__main__': 50 main() 51