def writeFilters(projectData, projectPath): filtersDict = mapFilters(projectData) fileStrings = [] existingFilters = set() keys = sorted(filtersDict.keys()) for k in keys: folders = k.split("\\") currentFolder = "" for folder in folders: currentFolder = os.path.join(currentFolder, folder) if currentFolder in existingFilters: continue existingFilters.add(currentFolder) includes = sorted(filtersDict[k]) for i in includes: filePath, fileExtension = os.path.splitext(i) fileStrings.append(' <{0} Include="{1}">\n'.format(projectData.tagsMap[fileExtension], i)) fileStrings.append(" <Filter>{0}</Filter>\n".format(k)) fileStrings.append(" </{0}>\n".format(projectData.tagsMap[fileExtension])) filterStrings = [] folders = sorted(existingFilters) for folder in folders: filterStrings.append(' <Filter Include="{0}">\n'.format(folder)) filterStrings.append(" <UniqueIdentifier>{" + str(generateGUID(folder)) + "}</UniqueIdentifier>\n") filterStrings.append(" </Filter>\n") filename = "{0}\\{1}.vcxproj.filters".format(projectPath, projectData.name) print("writing {0}".format(filename)) with files.force_open(filename, "w+") as f: f.truncate() f.write('<?xml version="1.0" encoding="utf-8"?>\n') f.write('<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\n') f.write(" <ItemGroup>\n") [f.write(x) for x in filterStrings] f.write(" </ItemGroup>\n <ItemGroup>\n") [f.write(x) for x in fileStrings] f.write(" </ItemGroup>\n</Project>")
def fixGuard(file, root, guardString): filepath = os.path.join(root, file) data = '' with open(filepath, mode='r') as f: data = f.read() s = pragmaSearch.split(data) if len(s) < 4: return if (s[2] is not None) and ("// no " in s[2]): return newData = "#ifndef " + guardString +"\n#define " + guardString + "\n#pragma once\n\n" + s[3] + "\n\n#endif // " + guardString if (newData == data): return with files.force_open(filepath, mode='w') as f: f.write(newData)
def loadTemplateVcproj(path): with files.force_open("{0}\\template.vcxproj.xml".format(path), "r") as t: projectText = t.read() return projectText