def main(): args = parse_args() headers = fileCollection.getHeaderFiles(args.src) for head in headers: try: cppHeader = CppHeaderParser.CppHeader(head) except CppHeaderParser.CppParseError as e: print(e) sys.exit(1) print CT.boldBlack("Class public methods") if(len(cppHeader.classes) + len(cppHeader.functions) > 0): testerCppPath = os.path.join(args.outDir,head.replace(".hpp", "Tester.cpp")) mkdir_p_forFile(testerCppPath) if os.path.exists(testerCppPath): if args.overWrite: os.remove(testerCppPath) else: print "Skipping", testerCppPath, "it already exist, use --overWrite to replace" continue with open(testerCppPath, "w") as testerFile: testerFile.write("#include <catch.hpp>\n") testerFile.write("#include \"" + "../" + head + "\"\n") for func in cppHeader.functions: testerFile.write(testerBodyTemplate.format(REPLACETHIS=func["name"], REPLACETHIS_DETAILED = getFuncDetailed(func))) for k in cppHeader.classes.keys(): for i in range(len(cppHeader.classes[k]["methods"]["public"])): testerFile.write(testerBodyTemplate.format(REPLACETHIS=cppHeader.classes[k]["methods"]["public"][i]["name"], REPLACETHIS_DETAILED = getFuncDetailed(cppHeader.classes[k]["methods"]["public"][i]))) createTestMain(os.path.join(args.outDir, args.src), args.overWrite) copyMakefile("scripts/cppSetUpFiles/unitTest/Makefile", os.path.join(args.outDir, "Makefile"), args.overWrite) return 0
def main(): args = parse_args() projectOut = os.path.join(args.dest[0], args.projName[0]) os.mkdir(projectOut) genSrc(projectOut, args.projName[0], ["iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm"]) CC = genHelper.determineCC(args) CXX = genHelper.determineCXX(args) external = "external" outname = args.projName[0] prefix = "./" installName = args.projName[0] neededLibs = "none" if args.externalLoc: external = os.path.realpath(args.externalLoc[0]) if args.neededLibs: neededLibs = args.neededLibs[0].split(",") genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs) with open(os.path.join(projectOut, "configure.py"), "w") as configFile: if(args.neededLibs): configFile.write(genHelper.mkConfigFileStr(outname, args.neededLibs[0])) else: configFile.write(genHelper.mkConfigFileStr(outname, "")) os.chmod(os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR) exFrom = os.path.abspath(os.path.dirname(__file__)) cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom +"/../../ -to " + projectOut print CT.boldBlack(cpSetUpCmd) Utils.run(cpSetUpCmd) cpMakefilesCmd = "cp " + exFrom + "/../cppSetUpFiles/*akefile* " + projectOut print CT.boldBlack(cpMakefilesCmd) Utils.run(cpMakefilesCmd)
def main(): args = parse_args() try: cppHeader = CppHeaderParser.CppHeader(args.file) except CppHeaderParser.CppParseError as e: print(e) sys.exit(1) print(CT.boldBlack("Class public methods")) for k in list(cppHeader.classes.keys()): print(CT.boldBlack(k)) for i in range(len(cppHeader.classes[k]["methods"]["public"])): print("\t",cppHeader.classes[k]["methods"]["public"][i]["name"]) print("") print(CT.boldBlack("Includes")) for include in cppHeader.includes: if "//" in include: print("\t" + include[0:include.find("//")].strip()) elif "/*" in include: print("\t" + include[0:include.find("/*")].strip()) else: print("\t" + include) print(("\n" + CT.boldBlack("Free functions are:"))) for func in cppHeader.functions: print(("\t%s"%func["name"]))
def main(): args = parse_args() try: cppHeader = CppHeaderParser.CppHeader(args.file) except CppHeaderParser.CppParseError as e: print(e) sys.exit(1) print(CT.boldBlack("Class public methods")) for k in list(cppHeader.classes.keys()): print(CT.boldBlack(k)) for i in range(len(cppHeader.classes[k]["methods"]["public"])): print("\t", cppHeader.classes[k]["methods"]["public"][i]["name"]) print("") print(CT.boldBlack("Includes")) for include in cppHeader.includes: if "//" in include: print("\t" + include[0:include.find("//")].strip()) elif "/*" in include: print("\t" + include[0:include.find("/*")].strip()) else: print("\t" + include) print(("\n" + CT.boldBlack("Free functions are:"))) for func in cppHeader.functions: print(("\t%s" % func["name"]))
def rmDirsForLib(self,lib): if lib not in self.setUps: print CT.boldBlack( "Unrecognized lib: ") + CT.boldRed(lib) else: p = self.__path(lib) if p.build_dir: print "Removing " + CT.boldBlack(p.build_dir) Utils.rm_rf(p.build_dir) if p.local_dir: print "Removing " + CT.boldBlack(p.local_dir) Utils.rm_rf(p.local_dir)
def main(): args = parse_args() externalIncludes = [] stdLibraryInc = [ "iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm" ] projectOut = os.path.join(args.dest[0], args.projName[0]) os.mkdir(projectOut) if args.programType == "singleRing": genSrcSingleRingProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author) elif args.programType == "oneRing": genSrcWithOneRingProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author) elif args.programType == "oneCmd": genSrcWithOneCmdProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author) else: raise Exception( "Error, only singleRing, oneRing,oneCmd available for options to programType, was given " + args.programType) CC = genHelper.determineCC(args) CXX = genHelper.determineCXX(args) external = "external" outname = args.projName[0] prefix = "./" installName = args.projName[0] neededLibs = ["bibcppdev"] if args.externalLoc: external = os.path.realpath(args.externalLoc[0]) if args.neededLibs: neededLibs = ["bibcppdev"] + args.neededLibs[0].split(",") genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs) with open(os.path.join(projectOut, "configure.py"), "w") as configFile: if (args.neededLibs): configFile.write( genHelper.mkConfigFileStr(outname, ",".join(neededLibs))) else: configFile.write(genHelper.mkConfigFileStr(outname, "bibcppdev")) os.chmod( os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR) exFrom = os.path.abspath(os.path.dirname(__file__)) cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom + "/../../ -to " + projectOut print CT.boldBlack(cpSetUpCmd) Utils.run(cpSetUpCmd) cpMakefilesCmd = "cp " + exFrom + "/../cppSetUpFiles/*akefile* " + projectOut print CT.boldBlack(cpMakefilesCmd) Utils.run(cpMakefilesCmd)
def installRPackageName(self, packageName): i = self.__path("r") for pack in packageName.split(","): if isMac(): cmd = """echo 'install.packages(c(\"{PACKAGENAME}\"), repos=\"http://cran.us.r-project.org\")' | $({local_dir}/R.framework/Resources/bin/R RHOME)/bin/R --slave --vanilla """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '), PACKAGENAME = pack ) else: cmd = """echo 'install.packages(\"{PACKAGENAME}\", repos=\"http://cran.us.r-project.org\")' | $({local_dir}/bin/R RHOME)/bin/R --slave --vanilla """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '),PACKAGENAME = pack ) print CT.boldBlack(cmd) cmd = " ".join(cmd.split()) Utils.run(cmd)
def installRPackageSource(self, sourceFile): i = self.__path("r") for pack in sourceFile.split(","): if isMac(): cmd = """echo 'install.packages(\"{SOURCEFILE}\", repos = NULL, type="source")' | $({local_dir}/R.framework/Resources/bin/R RHOME)/bin/R --slave --vanilla """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '),SOURCEFILE = pack ) else: cmd = """echo 'install.packages(\"{SOURCEFILE}\", repos = NULL, type="source")' | $({local_dir}/bin/R RHOME)/bin/R --slave --vanilla """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '),SOURCEFILE = pack ) print CT.boldBlack(cmd) cmd = " ".join(cmd.split()) Utils.run(cmd)
def genCppProject(args): projectOut = os.path.join(args.dest, args.projName) if os.path.exists(projectOut): if args.overwrite: shutil.rmtree(projectOut) else: raise Exception("Directory " + str(projectOut) + " already exists, use --overWrite to delete") #create project dir os.mkdir(projectOut) #generate skeleton source code directory genSrc(projectOut, args.projName, [ "iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm" ]) #determine c++ and c compilers CC = genHelper.determineCC(args) CXX = genHelper.determineCXX(args) external = "external" outname = args.projName prefix = "./" installName = args.projName neededLibs = "none" if args.externalLoc: external = os.path.realpath(args.externalLoc) if args.neededLibs: neededLibs = args.neededLibs.split(",") #generate the compfile genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs) #generate config file with open(os.path.join(projectOut, "configure.py"), "w") as configFile: if args.neededLibs: configFile.write( genHelper.mkConfigFileStr(outname, args.neededLibs)) else: configFile.write(genHelper.mkConfigFileStr(outname, "")) #make executable os.chmod( os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR) #determine this file's location to dtermine where to copy setup and make files to exFrom = os.path.abspath(os.path.dirname(__file__)) cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom + "/../../ -to " + projectOut print CT.boldBlack(cpSetUpCmd) Utils.run(cpSetUpCmd) cpMakefilesCmd = "cp " + exFrom + "/../cppMakefiles/Makefile " + projectOut print CT.boldBlack(cpMakefilesCmd) Utils.run(cpMakefilesCmd) #generate README.md genReadme(projectOut, args.projName)
def genHellos(outFilename, overWrite = False, python = False): if python: if not outFilename.endswith(".py"): outFilename = outFilename + ".py" if os.path.exists(outFilename) and not overWrite: raise Exception(CT.boldRed("File ") + CT.boldBlack(outFilename) + CT.boldRed(" already exists, use --overWrite to over write it")) genPyHello(outFilename) #rwx to user and group, r-x to everyone fd = os.open( outFilename, os.O_RDONLY ) os.fchmod( fd, 0775) os.close( fd ) print (CT.boldGreen("Now run")) print ("./" + outFilename + " ") print (CT.boldGreen("or")) print ("./" + outFilename + " --name Nick") else: if not outFilename.endswith(".cpp"): outFilename = outFilename + ".cpp" if os.path.exists(outFilename) and not overWrite: raise Exception("File " + outFilename + " already exists, use --overWrite to over write it") genCppHello(outFilename) print (CT.boldGreen("Now run")) print ("g++ -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++") print ("./hello") print (CT.boldGreen("or run")) #mac if Utils.isMac(): print ("clang++ " + outFilename + " -o hello") else: print ("clang++-3.6 -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++") print ("./hello")
def genHellos(outFilename, overWrite = False, python = False): if python: if not outFilename.endswith(".py"): outFilename = outFilename + ".py" if os.path.exists(outFilename) and not overWrite: raise Exception(CT.boldRed("File ") + CT.boldBlack(outFilename) + CT.boldRed(" already exists, use --overWrite to over write it")) genPyHello(outFilename) #rwx to user and group, r-x to everyone fd = os.open( outFilename, os.O_RDONLY ) os.fchmod( fd, 0o775) os.close( fd ) print((CT.boldGreen("Now run"))) print(("./" + outFilename + " ")) print((CT.boldGreen("or"))) print(("./" + outFilename + " --name Nick")) else: if not outFilename.endswith(".cpp"): outFilename = outFilename + ".cpp" if os.path.exists(outFilename) and not overWrite: raise Exception("File " + outFilename + " already exists, use --overWrite to over write it") genCppHello(outFilename) print((CT.boldGreen("Now run"))) print(("g++ -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++")) print ("./hello") print((CT.boldGreen("or run"))) #mac if Utils.isMac(): print(("clang++ " + outFilename + " -o hello")) else: print(("clang++-3.6 -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++")) print ("./hello")
def main(): args = parse_args() headers = fileCollection.getHeaderFiles(args.src) for head in headers: try: cppHeader = CppHeaderParser.CppHeader(head) except CppHeaderParser.CppParseError as e: print(e) sys.exit(1) print CT.boldBlack("Class public methods") if (len(cppHeader.classes) + len(cppHeader.functions) > 0): testerCppPath = os.path.join(args.outDir, head.replace(".hpp", "Tester.cpp")) mkdir_p_forFile(testerCppPath) if os.path.exists(testerCppPath): if args.overWrite: os.remove(testerCppPath) else: print "Skipping", testerCppPath, "it already exist, use --overWrite to replace" continue with open(testerCppPath, "w") as testerFile: testerFile.write("#include <catch.hpp>\n") testerFile.write("#include \"" + "../" + head + "\"\n") for func in cppHeader.functions: testerFile.write( testerBodyTemplate.format( REPLACETHIS=func["name"], REPLACETHIS_DETAILED=getFuncDetailed(func))) for k in cppHeader.classes.keys(): for i in range( len(cppHeader.classes[k]["methods"]["public"])): testerFile.write( testerBodyTemplate.format( REPLACETHIS=cppHeader.classes[k]["methods"] ["public"][i]["name"], REPLACETHIS_DETAILED=getFuncDetailed( cppHeader.classes[k]["methods"]["public"] [i]))) createTestMain(os.path.join(args.outDir, args.src), args.overWrite) copyMakefile("scripts/cppMakefiles/unitTest/Makefile", os.path.join(args.outDir, "Makefile"), args.overWrite) return 0
def setup(self): if self.args.forceUpdate: for set in self.setUpsNeeded.keys(): if not set in self.setUps.keys(): print CT.boldBlack( "Unrecognized option ") + CT.boldRed(set) else: self.rmDirsForLib(set) for set in self.setUpsNeeded.keys(): if not set in self.setUps.keys(): print CT.boldBlack( "Unrecognized option ") + CT.boldRed(set) else: self.__setup(set, self.setUps[set]) for p in self.installed: print p, CT.boldGreen("installed") for p in self.failedInstall: print p, CT.boldRed("failed to install")
def genCppProject(args): projectOut = os.path.join(args.dest, args.projName) if os.path.exists(projectOut): if args.overwrite: shutil.rmtree(projectOut) else: raise Exception("Directory " + str(projectOut) + " already exists, use --overWrite to delete") #create project dir os.mkdir(projectOut) #generate skeleton source code directory genSrc(projectOut, args.projName, ["iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm"]) #determine c++ and c compilers CC = genHelper.determineCC(args) CXX = genHelper.determineCXX(args) external = "external" outname = args.projName prefix = "./" installName = args.projName neededLibs = "none" if args.externalLoc: external = os.path.realpath(args.externalLoc) if args.neededLibs: neededLibs = args.neededLibs.split(",") #generate the compfile genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs) #generate config file with open(os.path.join(projectOut, "configure.py"), "w") as configFile: if args.neededLibs: configFile.write(genHelper.mkConfigFileStr(outname, args.neededLibs)) else: configFile.write(genHelper.mkConfigFileStr(outname, "")) #make executable os.chmod(os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR) #determine this file's location to dtermine where to copy setup and make files to exFrom = os.path.abspath(os.path.dirname(__file__)) cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom + "/../../ -to " + projectOut print CT.boldBlack(cpSetUpCmd) Utils.run(cpSetUpCmd) cpMakefilesCmd = "cp " + exFrom + "/../cppMakefiles/Makefile " + projectOut print CT.boldBlack(cpMakefilesCmd) Utils.run(cpMakefilesCmd) #generate README.md genReadme(projectOut, args.projName)
def main(): args = parse_args() externalIncludes = [] stdLibraryInc = ["iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm"] projectOut = os.path.join(args.dest[0], args.projName[0]) os.mkdir(projectOut) if args.programType == "singleRing": genSrcSingleRingProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author) elif args.programType == "oneRing": genSrcWithOneRingProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author) elif args.programType == "oneCmd": genSrcWithOneCmdProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author) else: raise Exception("Error, only singleRing, oneRing,oneCmd available for options to programType, was given " + args.programType ) CC = genHelper.determineCC(args) CXX = genHelper.determineCXX(args) external = "external" outname = args.projName[0] prefix = "./" installName = args.projName[0] neededLibs = ["njhcppdev"] if args.externalLoc: external = os.path.realpath(args.externalLoc[0]) if args.neededLibs: neededLibs = ["njhcppdev"] + args.neededLibs[0].split(",") genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs) with open(os.path.join(projectOut, "configure.py"), "w") as configFile: if(args.neededLibs): configFile.write(genHelper.mkConfigFileStr(outname, ",".join(neededLibs))) else: configFile.write(genHelper.mkConfigFileStr(outname, "njhcppdev")) os.chmod(os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR) exFrom = os.path.abspath(os.path.dirname(__file__)) cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom +"/../../ -to " + projectOut print CT.boldBlack(cpSetUpCmd) Utils.run(cpSetUpCmd) cpMakefilesCmd = "cp " + exFrom + "/../cppSetUpFiles/*akefile* " + projectOut print CT.boldBlack(cpMakefilesCmd) Utils.run(cpMakefilesCmd)
def __setup(self, name, builder_f): if os.path.exists(self.__path(name).local_dir): print name, CT.boldGreen("found at ") + CT.boldBlack(self.__path(name).local_dir) else: print name, CT.boldRed("NOT"), "found; building..." try: builder_f() self.installed.append(name) except Exception as inst: print type(inst) print inst print "failed to install " + name self.failedInstall.append(name)
def parseForHeaders(args): headers = set() unknowns = [] for arg in args: if arg in objToHeader: headers.add(objToHeader[arg]) elif ("std::" + arg) in objToHeader: headers.add(objToHeader["std::" + arg]) else: unknowns.append(arg) print(CT.boldRed("Unknowns:")) for u in unknowns: print(CT.boldBlack("unknown which header file contains"), CT.boldRed(u)) if headers: print(CT.boldGreen("found headers:")) for h in sorted(headers): print(h)
def main(): args = parse_args() try: cppHeader = CppHeaderParser.CppHeader(args.file) except CppHeaderParser.CppParseError as e: print(e) sys.exit(1) print CT.boldBlack("Class public methods") for k in cppHeader.classes.keys(): print CT.boldBlack(k) for i in range(len(cppHeader.classes[k]["methods"]["public"])): print "\t",cppHeader.classes[k]["methods"]["public"][i]["name"] print "" print CT.boldBlack("Includes") for include in cppHeader.includes: print "\t",include print("\n" + CT.boldBlack("Free functions are:")) for func in cppHeader.functions: print("\t%s"%func["name"])