aboutsummaryrefslogtreecommitdiffstats
path: root/longbow/src/python/longbow-generate-about.py
diff options
context:
space:
mode:
Diffstat (limited to 'longbow/src/python/longbow-generate-about.py')
-rwxr-xr-xlongbow/src/python/longbow-generate-about.py289
1 files changed, 0 insertions, 289 deletions
diff --git a/longbow/src/python/longbow-generate-about.py b/longbow/src/python/longbow-generate-about.py
deleted file mode 100755
index 437102a3..00000000
--- a/longbow/src/python/longbow-generate-about.py
+++ /dev/null
@@ -1,289 +0,0 @@
-#! /usr/bin/env python
-# Copyright (c) 2017 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#
-import os
-import sys
-import string
-import datetime
-import argparse
-sys.path.append("@INSTALL_PYTHON_DIR@")
-sys.path.append("@DEPENDENCY_PYTHON_DIR@")
-import FileUtil
-
-whatLineToken = "@(#)"
-
-def translateCCharacter(character):
- result = character
-
- if character == '\t':
- result = "\\t"
- elif character == "\n":
- result = "\\n"
- elif character == "\"":
- result = "\\\""
- elif character == "\'":
- result = "\\'"
-
- return result
-
-
-def makeWhatLine(line):
- return "@(#)" + line
-
-def createCString(string):
- if string is None:
- result = "None"
- else:
- result = "".join(map(lambda character: translateCCharacter(character), string))
- return result
-
-def createQuotedCString(string):
- return "\"%s\"" % createCString(string)
-
-def cIdentifier(name):
- translation = string.maketrans("-!@#$%^&*()_-+=[]{}|;:<>,./?", "____________________________")
- return name.translate(translation)
-
-
-def validateArgument(arg):
- '''
- If the given parameter is equal to '-' return None, otherwise return the parameter.
- '''
- if arg == "-":
- return None
- return arg
-
-
-class LongBowGenerateAboutHFile:
- def __init__(self, prefix):
- self.prefix = prefix
- return
-
- def headerdocFunction(self, functionName, OneLineDescription, returns):
- result = "/**\n"
- result += " * %s\n" % OneLineDescription
- result += " *\n"
- result += " * @return %s\n" % returns
- result += " */\n"
- return result
-
- def FileName(self):
- return self.prefix + "_About.h"
-
- def Name(self):
- functionName = "%sAbout_Name" % self.prefix
- result = self.headerdocFunction(functionName, "Return the name as a C string.", "The name as a C string.")
- result += "const char *%s(void);\n" % functionName
- return result
-
- def Version(self):
- functionName = "%sAbout_Version" % self.prefix
- result = self.headerdocFunction(functionName, "Return the version as a C string.", "The version as a C string.")
- result += "const char *%s(void);\n" % functionName
- return result
-
- def About(self):
- functionName = "%sAbout_About" % self.prefix
- result = self.headerdocFunction(functionName, "Return the About text as a C string.", "The About text as a C string.")
- result += "const char *%s(void);\n" % functionName
- return result
-
- def MiniNotice(self):
- functionName = "%sAbout_MiniNotice" % self.prefix
- result = self.headerdocFunction(functionName,
- "Return the minimum copyright notice as a C string.",
- "The minimum copyright notice as a C string.")
- result += "const char *%s(void);\n" % functionName
- return result
-
- def ShortNotice(self):
- functionName = "%sAbout_ShortNotice" % self.prefix
- result = self.headerdocFunction(functionName,
- "Return the short copyright notice as a C string.",
- "The short copyright notice as a C string.")
- result += "const char *%s(void);\n" % functionName
- return result
-
- def LongNotice(self):
- functionName = "%sAbout_LongNotice" % self.prefix
- result = self.headerdocFunction(functionName,
- "Return the long copyright notice as a C string.",
- "The long copyright notice as a C string.")
- result += "const char *%s(void);\n" % functionName
- return result
-
- def WhatString(self):
- result = "/**\n"
- result += " * Embedded string containing information for the what(1) command.\n"
- result += " *\n"
- result += " */\n"
- result += "extern const char *%s_What;\n" % (self.prefix)
- return result
-
- def __str__(self):
- result = "// DO NOT EDIT THIS FILE. IT IS AUTOMATICALLY GENERATED.\n"
- result += "// longbow-generate-about @VERSION@ @DATE@\n\n"
- result += "#ifndef %s_About_h\n" % (self.prefix)
- result += "#define %s_About_h\n" % (cIdentifier(self.prefix))
- result += self.WhatString() + "\n"
- result += self.Name() + "\n"
- result += self.Version() + "\n"
- result += self.About() + "\n"
- result += self.MiniNotice() + "\n"
- result += self.ShortNotice() + "\n"
- result += self.LongNotice() + "\n"
- result += "#endif // %s_About_h\n" % (cIdentifier(self.prefix))
- return result
-
- def writeFile(self):
- with open(self.FileName(), "w") as myfile:
- myfile.write(str(self))
- return
-
-class LongBowGenerateAboutCFile:
- def __init__(self, args):
- self.prefix = args.prefix
- self.name = args.name
- self.version = validateArgument(args.version)
- self.miniNotice = ""
- self.shortNotice = ""
- self.longNotice = ""
- self.about = None
- self.what = None
-
- self.args = args
-
- self.miniNotice = FileUtil.readFileString(args.miniNotice)
- self.shortNotice = FileUtil.readFileString(args.shortNotice)
- self.longNotice = FileUtil.readFileString(args.longNotice)
-
- self.buildDate = datetime.datetime.utcnow().isoformat()
-
- if self.version == None:
- self.version = " RELEASE_VERSION "
-
- if self.about == None:
- self.about = createQuotedCString("%s " % (self.name)) + \
- self.version + \
- createQuotedCString(" %s" % (self.buildDate)) + " " + \
- createQuotedCString("\n%s" % (self.miniNotice))
-
- if self.what == None:
- if self.miniNotice != None:
- notice = "\n".join(map(lambda line: "\t" + line, self.miniNotice.split("\n")[:-1]))
- else:
- notice = ""
- self.what = createQuotedCString(whatLineToken) + " " + \
- createQuotedCString(self.name + " ") + " " + \
- self.version + " " + \
- createQuotedCString(" " + self.buildDate) + "\n" + \
- createQuotedCString(whatLineToken) + " " + \
- createQuotedCString(notice)
- return
-
- def FileName(self):
- return self.prefix + "_About.c"
-
- def Name(self):
- functionName = "%sAbout_Name" % self.prefix
- return self.boilerPlateFunction(functionName, createQuotedCString(self.name))
-
- def Version(self):
- functionName = "%sAbout_Version" % self.prefix
- return self.boilerPlateFunction(functionName, self.version)
-
- def About(self):
- functionName = "%sAbout_About" % self.prefix
- return self.boilerPlateFunction(functionName, self.about)
-
- def MiniNotice(self):
- functionName = "%sAbout_MiniNotice" % self.prefix
- return self.boilerPlateFunction(functionName, createQuotedCString(self.miniNotice))
-
- def ShortNotice(self):
- functionName = "%sAbout_ShortNotice" % self.prefix
- return self.boilerPlateFunction(functionName, createQuotedCString(self.shortNotice))
-
- def LongNotice(self):
- functionName = "%sAbout_LongNotice" % self.prefix
- return self.boilerPlateFunction(functionName, createQuotedCString(self.longNotice))
-
- def WhatString(self):
- return "const char *%s_What = %s;\n" % (self.prefix, self.what)
-
- def boilerPlateFunction(self, functionName, string):
- result = "const char *\n%s(void)\n" % functionName
- result += "{\n"
- result += " return %s;\n" % string
- result += "}\n"
- return result
-
- def __str__(self):
- result = "// DO NOT EDIT THIS FILE. IT IS AUTOMATICALLY GENERATED.\n"
- result += "// longbow-generate-about @VERSION@ @DATE@\n\n"
- result += "#include \"%s_About.h\"\n\n" % self.prefix
- result += self.WhatString() + "\n"
- result += self.Name() + "\n"
- result += self.Version() + "\n"
- result += self.About() + "\n"
- result += self.MiniNotice() + "\n"
- result += self.ShortNotice() + "\n"
- result += self.LongNotice() + "\n"
- return result
-
- def writeFile(self):
- with open(self.FileName(), "w") as myfile:
- myfile.write(str(self))
- return
-
-if __name__ == '__main__':
- desc = '''
-@(#) longbow-generate-about @VERSION@ @DATE@
-@(#) All Rights Reserved. Use is subject to license terms.
-
-Generate C code conforming to the About contract.
-
-Create a .c and .h file pair with the specified prefix.
-For the prefix 'xyzzy', the file names are 'xyzzy_About.c' and 'xyzzy_About.h' respectively.
-
-The functions defined are:
-
-const char *xyzzyAbout_Name(void)
-const char *xyzzyAbout_Version(void)
-const char *xyzzyAbout_About(void)
-const char *xyzzyAbout_MiniNotice(void)
-const char *xyzzyAbout_ShortNotice(void)
-const char *xyzzyAbout_LongNotice(void)
-
-And the constant string const char *xyzzy_What;
- '''
-
- parser = argparse.ArgumentParser(prog='longbow-generate-about', formatter_class=argparse.RawDescriptionHelpFormatter, description=desc)
-
- parser.add_argument("prefix", help="The file name and function name prefix.")
- parser.add_argument("name", help="The name of the entity this is about.")
- parser.add_argument("version", help="The version of the entity this is about.")
- parser.add_argument("miniNotice", help="The name of the file containing the smallest copyright or attribution notice.")
- parser.add_argument("shortNotice", help="The name of the file containing a short copyright or attribution notice.")
- parser.add_argument("longNotice", help="The name of the file containing a full copyright or attribution notice.")
-
- args = parser.parse_args()
-
- hfile = LongBowGenerateAboutHFile(args.prefix)
- hfile.writeFile()
-
- cfile = LongBowGenerateAboutCFile(args)
- cfile.writeFile()