Fixed file generation on Windows platfrom. Added support for .cpp files. Refactored argument parsing.

This commit is contained in:
Petr Hodina 2017-10-17 08:20:59 +02:00
parent 3525ba32e7
commit 15a11c47ea
3 changed files with 22 additions and 17 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
__pycache__

View File

@ -60,7 +60,7 @@ class CMake (object):
cmake['ass']=[]
for file in self.project['srcs']:
if file.endswith('.c') or file.endswith('.h'):
if file.endswith('.c') or file.endswith('.h') or file.endswith('.cpp'):
cmake['files'].append({'path': file,'var':'SRC_FILE' + str(i)})
i = i+1
@ -69,7 +69,7 @@ class CMake (object):
cmake['ass'].append({'path': file})
cmake['files'].append({'path': file,'var':'SRC_FILE' + str(i)})
i = i+1
cmake['cxx'] = 'false'
cmake['c_flags'] = '-g -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common -ffunction-sections -fdata-sections -MD -Wall -Wundef -mthumb ' + core + ' ' + fpu
@ -91,10 +91,11 @@ class CMake (object):
cmake['libs'] = []
self.context['cmake'] = cmake
self.generateFile('CMakeLists.txt',os.path.join(self.path,'CMakeLists.txt'))
abspath = os.path.abspath(os.path.join(self.path,'CMakeLists.txt'))
self.generateFile('CMakeLists.txt', abspath)
print ('Created file CMakeLists.txt')
print ('Created file CMakeLists.txt [{}]'.format(abspath))
# def generateFile (self, pathSrc, pathDst='', author='Pegasus', version='v1.0.0', licence='licence.txt', template_dir='../PegasusTemplates'):
def generateFile (self, pathSrc, pathDst='', author='Pegasus', version='v1.0.0', licence='licence.txt', template_dir='.'):
@ -113,15 +114,15 @@ class CMake (object):
generated_code = template.render(self.context)
if platform.system() == 'Window':
if platform.system() == 'Windows':
with open(pathDst, 'wb') as f:
with open(pathDst, 'w') as f:
f.write(generated_code)
elif platform.system() == 'Linux':
with open(pathDst, 'wb') as f:
f.write(str.encode(generated_code))
with open(pathDst, 'w') as f:
f.write(generated_code)
else:
# Different OS than Windows or Linux
pass
@ -141,15 +142,15 @@ class CMake (object):
generated_code = template.render(self.context)
if platform.system() == 'Window':
if platform.system() == 'Windows':
with open(pathDst, 'wb') as f:
with open(pathDst, 'w') as f:
f.write(generated_code)
elif platform.system() == 'Linux':
with open(pathDst, 'wb') as f:
f.write(str.encode(generated_code))
with open(pathDst, 'w') as f:
f.write(generated_code)
else:
# Different OS than Windows or Linux
pass

View File

@ -27,13 +27,14 @@ if __name__ == '__main__':
""" Parses params and calls the right conversion"""
parser = argparse.ArgumentParser()
parser.add_argument("format", choices=("ewp", "uvprojx"))
parser.add_argument("path", type=str, help="Root directory of project")
parser.add_argument("--ewp", help="Search for *.EWP file in project structure", action='store_true')
parser.add_argument("--uvprojx", help="Search for *.UPROJX file in project structure", action='store_true')
#"--ewp", help="Search for *.EWP file in project structure", action='store_true')
#parser.add_argument("--uvprojx", help="Search for *.UPROJX file in project structure", action='store_true')
args = parser.parse_args()
if os.path.isdir(args.path):
if args.ewp:
if args.format == 'ewp':
print('Looking for *.ewp file in ' + args.path)
filename = find_file(args.path, '.ewp')
if len(filename):
@ -45,7 +46,7 @@ if __name__ == '__main__':
cmakefile.populateCMake()
else:
print('No project *.ewp file found')
elif args.uvprojx:
elif args.format == 'uvprojx':
print('Looking for *.uvprojx file in ' + args.path)
filename = find_file(args.path, '.uvprojx')
if len(filename):
@ -58,5 +59,7 @@ if __name__ == '__main__':
cmakefile.populateCMake()
else:
print('No project *.uvprojx file found')
else:
print ('No format specified')
else:
print('Not a valid file path')