mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
63 lines
1.9 KiB
Python
Executable File
63 lines
1.9 KiB
Python
Executable File
#!/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)
|