diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f9748f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*~* +.directory +*.kate-swap +output/* +*.pyc diff --git a/README.md b/README.md index 4344d2f..006c91e 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,11 @@ Created by rubenwardy. License: GPL 3.0 or later The copyright of mesecode scripts, and any resulting Lua files, remains with their author. + + +Usage +----- + +``` +$ python mesecode.py path/to/file.mese output/directory +``` \ No newline at end of file diff --git a/mesecode.py b/mesecode.py index 8902cd9..0853ffa 100644 --- a/mesecode.py +++ b/mesecode.py @@ -1,4 +1,4 @@ -import re, sys +import re, sys, os # How many spaces in a tab. # -1 disables support for spaces as tabs (recommended) @@ -66,6 +66,10 @@ def throwParseError(msg): print("\033[91mParse Error: " + msg + "\033[0m") sys.exit(-1) +def checkMkDir(directory): + if not os.path.exists(directory): + os.makedirs(directory) + def parse_list(the_list, line): if line == "": return @@ -164,12 +168,26 @@ class Project: if curprop is None: throwParseError("Too many levels of indentation at " + str(lineno)) curprop.append(line) - - def write(self, directory): - print("-- Mod namespace: " + self.modname) - print("-- Generated using the Minetest Readable Modding Format\n") + def get(self): + retval = "-- Mod namespace: " + self.modname + "\n" + retval += "-- Generated using MeseCode\n\n" for item in self.objects: - print(item.build(self)) - - -Project("test.mese").write("test") + retval += item.build(self) + "\n" + print(retval) + return retval + + def write(self, directory): + if directory.endswith("/"): + directory = directory[:-1] + checkMkDir(directory) + out = open(directory + "/init.lua", "w") + out.write(self.get()) + out.close() + +if __name__ == "__main__": + if len(sys.argv) == 2: + Project(sys.argv[1]).write("output") + elif len(sys.argv) == 3: + Project(sys.argv[1]).write(sys.argv[2]) + else: + print("Usage: mesecode.py path/to/file.mese output/directory") diff --git a/test.py b/test.py new file mode 100644 index 0000000..9547405 --- /dev/null +++ b/test.py @@ -0,0 +1,4 @@ +import mesecode + +mesecode.Project("test.mese").write("output") +