From a46f220892c30ef86ddda76db787dc46e89953a5 Mon Sep 17 00:00:00 2001 From: Shubham Bhatnagar Date: Mon, 15 Apr 2024 10:54:36 -0400 Subject: [PATCH 1/2] python template prototype --- src/scripts/template.py | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/scripts/template.py diff --git a/src/scripts/template.py b/src/scripts/template.py new file mode 100644 index 000000000..fcb731719 --- /dev/null +++ b/src/scripts/template.py @@ -0,0 +1,64 @@ +#! /usr/bin/env python3 +import os +from datetime import datetime +import sys + + +if len(sys.argv) == 1: + print(f"Usage: {sys.argv[0]} progname key1=def1 ...") + print("version 24-jan-2012") + print("Write template NEMO program based on keywords and default values") + print("Output will be in a file progname.c, which cannot be overwritten") + exit(0) + +prog = sys.argv[1] +name = f"{prog}.c" +date = datetime.now().strftime("%d-%b-%Y") + +if os.path.exists(name): + print(f"File {name} already exists, will not overwrite it.") + exit(0) + +with open(name, "w") as f: + f.write("/*\n") + f.write(" * TEMPLATE: created by NEMO \n") + f.write(" */\n\n") + f.write("#include \n\n") + f.write("string defv[] = {\n") + + for arg in sys.argv[2:]: + key, value = arg.split("=") + f.write(f' "{key}\\n some help",\n') + + f.write(f' "VERSION=0.0\\n {date} XYZ",\n') + f.write(" NULL,\n") + f.write("};\n\n") + f.write("string usage=\"TEMPLATE program usage -- fill in yourself\";\n\n") + f.write("void nemo_main()\n") + f.write("{\n") + f.write(" /* your code goes here */\n") + f.write(" /* e.g. string s = getparam(\"s\"); */\n") + f.write(" /* e.g. int i = getiparam(\"i\"); */\n") + f.write(" /* e.g. real r = getrparam(\"r\"); */\n") + f.write(" /* e.g. double d = getdparam(\"d\"); */\n") + f.write(" /* followed by lots of lovely calculations */\n") + f.write(" warning(\"New template NEMO program\");\n") + f.write(" /*\n") + + for arg in sys.argv[2:]: + key, _ = arg.split("=") + f.write(f" string {key} = getparam(\"{key}\");\n") + + f.write(" */\n") + f.write(" /*\n") + f.write(" * other useful things:\n") + f.write(" * if (hasvalue(\"xxx\") && !hasvalue(\"yyy\"))\n") + f.write(" * error(\"need value for yyy\");\n") + f.write(" */\n") + f.write("}\n") + +print("All done, {name} created. You can compile it using the command") +print(" bake {prog}") +print(" or: mknemo {prog}") +print("When done, don't forget to create a template man page:") +print(f" $NEMO/src/scripts/mkman {prog} > $NEMO/man/man1/{prog}.1") \ No newline at end of file From 8a400b940dffdc591018aa8a95855ef03b3f031e Mon Sep 17 00:00:00 2001 From: Shubham Bhatnagar Date: Thu, 18 Apr 2024 17:46:32 -0400 Subject: [PATCH 2/2] Fixed template.c execution permissions, creation errors, and fixed '.c' being added if file type is already defined --- src/scripts/template.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) mode change 100644 => 100755 src/scripts/template.py diff --git a/src/scripts/template.py b/src/scripts/template.py old mode 100644 new mode 100755 index fcb731719..e08596da7 --- a/src/scripts/template.py +++ b/src/scripts/template.py @@ -12,7 +12,11 @@ exit(0) prog = sys.argv[1] -name = f"{prog}.c" +if ("." in prog): + name = prog +else: + name = f"{prog}.c" + date = datetime.now().strftime("%d-%b-%Y") if os.path.exists(name): @@ -28,7 +32,7 @@ for arg in sys.argv[2:]: key, value = arg.split("=") - f.write(f' "{key}\\n some help",\n') + f.write(f' "{arg}\\n some help",\n') f.write(f' "VERSION=0.0\\n {date} XYZ",\n') f.write(" NULL,\n")