#!/usr/bin/env python3 # # This script reads a syntaxTest file and writes all # sources into their own files. If one source-name specifies subdirectories # those will be created too. # Usage: scripts/splitSources.py pathToTestfile # as a result prints # - string of created files separated by whitespaces # - 'false' if the file only had one source import sys import os hasMultipleSources = False createdSources = [] def extractSourceName(line): if line.find("/") > -1: filePath = line[13: line.rindex("/")] # fileName = line[line.rindex("/")+1: line.find(" ====")] srcName = line[line.find(":")+2: line.find(" ====")] return filePath, srcName return False, line[line.find(":")+2 : line.find(" ====")] # expects the first line of lines to be "==== Source: sourceName ====" # writes the following source into a file named sourceName def writeSourceToFile(lines): filePath, srcName = extractSourceName(lines[0]) # print("sourceName is ", srcName) # print("filePath is", filePath) if filePath != False: os.system("mkdir -p " + filePath) f = open(srcName, mode='a+', encoding='utf8') createdSources.append(srcName) i = 0 for idx, line in enumerate(lines[1:]): # write to file if line[:12] != "==== Source:": f.write(line) # recursive call if there is another source else: writeSourceToFile(lines[1+idx:]) break if __name__ == '__main__': filePath = sys.argv[1] # decide if file has multiple sources lines = open(filePath, mode='r', encoding='utf8').read().splitlines() if lines[0][:12] == "==== Source:": hasMultipleSources = True writeSourceToFile(lines) if hasMultipleSources: srcString = "" for src in createdSources: srcString += src + ' ' print(srcString) else: sys.exit(1)