File size: 4,412 Bytes
985c397 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | # SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * Copyright (c) 2003 Werner Mayer <werner.wm.mayer@gmx.de> *
# * *
# * 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 *
# * *
# ***************************************************************************
# FreeCAD MakeNewBuildNbr script
# Creates a new application
import os, sys
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 configure 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 Exception:
# Invalid class name
sys.stdout.write("Invalid name: '" + AppName + "'\n")
sys.exit()
sys.stdout.write("Please enter a name for your application:")
sys.stdout.flush()
AppName = sys.stdin.readline()[:-1]
validateApp(AppName)
createApp(AppName)
|