support creating Python workbench with fcbt

This commit is contained in:
wmayer 2016-10-04 19:40:47 +02:00
parent 034cc0013e
commit 5a88307e3e
2 changed files with 124 additions and 0 deletions

View File

@ -17,6 +17,7 @@ possible commands are:
- DistAll (DA) Run all three above modules
- NextBuildNumber (NBN) Increase the Build Number of this Version
- CreateModule (CM) Insert a new FreeCAD Module in the module directory
- CreatePyModule (CP) Insert a new FreeCAD Python Module in the module directory
For help on the modules type:
fcbt <command name> ?
@ -49,6 +50,8 @@ elif Cmd == "nextbuildnumber" or Cmd == "nbn":
import fcbt.NextBuildNumber
elif Cmd == "createmodule" or Cmd == "cm":
import fcbt.CreateModule
elif Cmd == "createpymodule" or Cmd == "cp":
import fcbt.CreatePyModule
elif Cmd == "?" or Cmd == "help" or Cmd == "/h" or Cmd == "/?" or Cmd == "-h" or Cmd == "-help":
sys.stdout.write(help1)
else:

View File

@ -0,0 +1,121 @@
# 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 Lesser General Public License (LGPL) *
#* 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 Lesser 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/<Application>
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 _TEMPLATEPY_ to ../Mod/<Application>
sys.stdout.write("Copying files...")
MakeAppTools.copyTemplate("_TEMPLATEPY_","../Mod/"+Application,"_TEMPLATEPY_", Application, SetupFilter(FilFilter),SetupFilter(DirFilter))
sys.stdout.write("Ok\n")
# replace the _TEMPLATEPY_ string by <Application>
sys.stdout.write("Modifying files...\n")
MakeAppTools.replaceTemplate("../Mod/" + Application,"_TEMPLATEPY_",Application)
MakeAppTools.replaceTemplate("../Mod/" + Application,"${CMAKE_SOURCE_DIR}/src/Tools/","${CMAKE_SOURCE_DIR}/src/Mod/")
# 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)