print('gitDev', gitDev) #system_folder='~/LyttleBit/projects/lb-_documents' #in_folder = '../one_db/sql' #out_folder = '../' in_folder = gitDev.getDbFolder('sql') #in_folder = '{}/{}'.format(system_folder,project_name) #out_folder = '{}/{}'.format(system_folder,project_name) out_folder = gitDev.getDbFolder() #print('in_folder', in_folder) #print('out_folder', out_folder) outname = 'README.sql.md' ## READ: Make list of file in a folder files = Util().getFileList(in_folder, ext='sql') files.sort() #print('files: ', files) ## PROCESS: Read all files readme = [] #print('# Changes') readme.append('\n') readme.append('# Changes') readme.append('\n') readme.append('| file | type | detail |') readme.append('| ---- | ------- | ------ |') for f in files: lines = Util().getLines(in_folder, f)
def main(): clause2method = {'insert':'POST', 'update':'PUT', 'query':'GET', 'delete':'DELETE'} combined_sql_list = [] # eventually is written to a file # [Generate API sql file] print('Generate API') print(' - load api configuration, generate funcPattern key and values') # get configuration file name {folder: "", name: ""} # get list of files of type .json in folder ./config # [Use a configuration file] config_folder = '{}'.format(os.getcwd().replace('_tasks','config')) # [Select API Source ] sourceConfiguration = open_api(config_folder,file_type="source") if not sourceConfiguration: print('cancel') exit(0) # [Select API Target ] targetConfiguration = open_api(config_folder,file_type="target") if not targetConfiguration: print('cancel') exit(0) # [Merge Source and Target] sourceConfiguration.update(targetConfiguration) apiConfiguration = sourceConfiguration # setup default environment homeDev = HomeDevelopment().setup() # [Create missing folders] sourceDev = HomeDevelopment().setup() targetDev = HomeDevelopment().setup() # [Scan configuration for home, source, and target environment configurations] for apiName in apiConfiguration: if apiName == 'source': # [Configure input sources from GIT repositories] sourceDev = get_environment(apiConfiguration[apiName]) elif apiName == 'target': # [Configure output targets from GIT repositories] targetDev = get_environment(apiConfiguration[apiName]) print('=================') report(homeDev, sourceDev, targetDev) print('=================') print('=================') print('Base Tests Combined') print('=================') #fileList = Util().getFileList(sourceDev.getDbFolder('sql'),'static.sql') fileList = Util().getFileList(sourceDev.getFolder('scripts'),'base.test.sql') fileList.sort() # [Replace project specific values] replace_ = ['one_db', 'hapi-api'] replace_with = [targetDev.getName('db'), targetDev.getName('db_api')] targetName = '90.base.test.sql' combinedDocument = Document(targetDev.getFolder('scripts'), targetName) # [Backup the target file] backup = Util().makeBackupFile(targetDev.getFolder('scripts'), targetName) print(' - backup : {}'.format(backup)) # [Move Static Files to Target Folder] for fileName in fileList: # [Combine base tests into one file] # [Copy from a source folder to a target folder] staticDocument = Document(sourceDev.getFolder('scripts'), fileName) \ .load() \ .replace(replace_, replace_with) combinedDocument.extend(staticDocument) combinedDocument.save() print('=================') print('API Tests') print('=================') apiNameList = [nm for nm in apiConfiguration if apiConfiguration[nm]['kind'] == 'api-definition' or apiConfiguration[nm]['kind'] == 'api-static'] # [Move Static Files to Target Folder] #targetNames = [] #sourceNames = [] names = [] src_folder = sourceDev.getFolder('scripts') tmpl_folder = '../templates' trg_folder = targetDev.getFolder('scripts') clauses = ['insert','query','update','delete'] for apiName in apiNameList: schema = apiConfiguration[apiName]['schema'].replace('_','.') prefix = apiConfiguration[apiName]['prefix-test'] # make list of existing test files names = [{"source":'{}.test.{}.{}.{}.api.test.sql'.format(prefix,schema, apiName.upper(), clause), "target":'{}.{}.{}.api.test.sql'.format(prefix,apiName.upper(), clause), "template": '{}.test.sql.template'.format(clause), "clause": '{}'.format(clause), "method": '{}'.format(clause2method[clause])} for clause in clauses] names = [pair for pair in names if Util().file_exists(src_folder, pair['source'])] # for pair in names: backup = None #print('pair', pair, 'kind', apiConfiguration[apiName]['kind']) if apiConfiguration[apiName]['kind'] == 'api-definition': # handle backup if Util().file_exists(trg_folder, pair['target']): backup = Util().makeBackupFile(targetDev.getFolder('scripts'), pair['target']) # Use Template if Util().file_exists(tmpl_folder, pair['template']): # Use Template # Use Template print(' - generate test {} FROM {}'.format(pair['target'], pair['template'])) if backup: print(' -- backup ', backup) templateDoc = TestTemplate(apiName, pair['method'], pair['template']) \ .apply(apiConfiguration)\ .saveAs(trg_folder, pair['target']) elif Util().file_exists(src_folder, pair['source']): # Copy from existing file # Copy from source print(' - copy test {} FROM {} '.format(pair['target'],pair['source'])) # load # replace # save doc = Document(src_folder, pair['source']) \ .load() \ .replace(replace_, replace_with)\ .saveAs(trg_folder,pair['target']) else: # No test available print('No Test Available for ', pair['source']) elif apiConfiguration[apiName]['kind'] == 'api-static': #print('template', tmpl_folder) print(' - copy test for api-static ', pair['source']) # [Backup the target file] #print(' - backup : {}'.format(fileName)) apiNameList = [nm for nm in apiConfiguration if apiConfiguration[nm]['kind'] == 'api-static'] # [Move Static Files to Target Folder] '''