# FreeCAD MakeNewBuildNbr script # (c) 2003 Werner Mayer # # Creates a new application #*************************************************************************** #* (c) Werner Mayer (werner.wm.mayer@gmx.de) 2003 * #* * #* This file is part of the FreeCAD CAx development system. * #* * #* This program is free software; you can redistribute it and/or modify * #* it under the terms of the GNU General Public License (GPL) * #* as published by the Free Software Foundation; either version 2 of * #* the License, or (at your option) any later version. * #* for detail see the LICENCE text file. * #* * #* FreeCAD is distributed in the hope that it will be useful, * #* but WITHOUT ANY WARRANTY; without even the implied warranty of * #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * #* GNU Library General Public License for more details. * #* * #* You should have received a copy of the GNU Library General Public * #* License along with FreeCAD; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * #* Werner Mayer 2003 * #*************************************************************************** import os,sys,string import FCFileTools import MakeAppTools import re FilFilter = ["^.*\\.o$", "^.*\\Makefile$", "^.*\\.la$", "^.*\\.lo$", "^.*\\.positions$", "^.*\\.aux$", "^.*\\.bsc$", "^.*\\.exp$", "^.*\\.ilg$", "^.*\\.ilk$", "^.*\\.in$", "^.*\\.mak$", "^.*\\.ncb$", "^.*\\.opt$", "^.*\\.pyc$", "^.*\\.pyd$", "^.*\\.pdb$", "^.*\\.plg$"] DirFilter = ["^.*\\.o$", "^Debug$", "^DebugCmd$", "^DebugPy$", "^Release$", "^ReleaseCmd$", "^ReleasePy$", "^Attic$", "^CVS$", "^\\.svn$", "^\\.deps$", "^\\.libs$"] def SetupFilter(MatchList): RegList = [] for regexp in MatchList: a = re.compile(regexp) RegList.append(a) return RegList def createApp(Application): """ Create a new application by copying the template """ # create directory ../Mod/ if not os.path.isdir("../Mod/"+Application): os.mkdir("../Mod/"+Application) else: sys.stdout.write(Application + " already exists. Please enter another name.\n") sys.exit() # copying files from _TEMPLATE_ to ../Mod/ sys.stdout.write("Copying files...") MakeAppTools.copyTemplate("_TEMPLATE_","../Mod/"+Application,"_TEMPLATE_", Application, SetupFilter(FilFilter),SetupFilter(DirFilter)) sys.stdout.write("Ok\n") # replace the _TEMPLATE_ string by sys.stdout.write("Modifying files...\n") MakeAppTools.replaceTemplate("../Mod/" + Application,"_TEMPLATE_",Application) # make the congigure script executable #os.chmod("../Mod/" + Application + "/configure", 0777); sys.stdout.write("Modifying files done.\n") sys.stdout.write(Application + " module created successfully.\n") def validateApp(AppName): """ Validates the class name """ if(len(AppName) < 2): sys.stdout.write("Too short name: '"+AppName+"'\n") sys.exit() # name is long enough clName="class "+AppName+": self=0" try: exec(clName) except: # Invalid class name sys.stdout.write("Invalid name: '"+AppName+"'\n") sys.exit() sys.stdout.write("Please enter a name for your application:") AppName = sys.stdin.readline()[:-1] validateApp(AppName) createApp(AppName)