Skip to content

Commit 46f19ad

Browse files
committed
More development
1 parent 40c102b commit 46f19ad

1 file changed

Lines changed: 81 additions & 21 deletions

File tree

Validate.py

Lines changed: 81 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,73 @@
11
#! py -3
22
from pathlib import Path
3+
import pprint
4+
5+
6+
# def extract(line, token):
7+
# tag = line.split(token)[1]
8+
# return tag.split("}")[0].strip()
9+
10+
class Flags:
11+
discard = ["{Requires:"]
12+
def __init__(self, lines):
13+
self.flaglines = []
14+
for line in lines:
15+
if line.startswith("//"):
16+
self.flaglines.append(line)
17+
else:
18+
break # Only capture top block
19+
self.flaglines = [line for line in self.flaglines if line.startswith("// {")]
20+
self.flaglines = [line for line in self.flaglines if not [d for d in Flags.discard if d in line]]
21+
self.flags = dict()
22+
for flag in self.flaglines:
23+
flag = flag[flag.index("{") + 1 : flag.index("}")].strip()
24+
if ":" in flag:
25+
fl, arg = flag.split(":")
26+
fl = fl.strip()
27+
arg = arg.strip()
28+
self.flags[fl] = arg
29+
else:
30+
self.flags[flag] = None # Make an entry, but no arg
31+
32+
def __repr__(self):
33+
return pprint.pformat(self.flags)
34+
35+
def __len__(self):
36+
return len(self.flaglines)
37+
38+
def keys(self):
39+
return {key for key in self.flags.keys()}
40+
41+
def values(self):
42+
return str(self.flags.values())
43+
344

4-
base = Path("ExtractedExamples")
545

6-
def extract(line, token):
7-
tag = line.split(token)[1]
8-
return tag.split("}")[0].strip()
946

1047
class RunnableFile:
48+
1149
def __init__(self, path, body):
1250
self.path = path
1351
self.name = path.stem
14-
self.relative = path.relative_to(base)
52+
self.relative = path.relative_to(RunFiles.base)
1553
self.body = body
1654
self.lines = body.splitlines()
55+
self.flags = Flags(self.lines)
1756
self.package = ""
18-
self.args = ""
19-
self.jvm_args = ""
57+
# self.args = ""
58+
# self.jvm_args = ""
59+
# self.brace_cmds = ""
2060
for line in self.lines:
21-
if "{Args:" in line:
22-
self.args = extract(line,"{Args:")
23-
if "{JVMArgs:" in line:
24-
self.jvm_args = extract(line,"{JVMArgs:") + " "
61+
# if "{Args:" in line:
62+
# self.args = extract(line,"{Args:")
63+
# if "{JVMArgs:" in line:
64+
# self.jvm_args = extract(line,"{JVMArgs:") + " "
2565
if line.startswith("package "):
2666
self.package = line.split("package ")[1].strip()[:-1]
2767
if self.package.replace('.', '/') not in self.lines[0]:
2868
self.package = ""
69+
# if line.startswith("// {"):
70+
# self.brace_cmds += line + "\n"
2971

3072
def __repr__(self):
3173
return str(self.relative) + "\n" #+ self.header
@@ -36,17 +78,35 @@ def finaldot(self):
3678
def runCommand(self):
3779
return "java " + self.jvm_args + self.package + self.finaldot() + self.name + " " + self.args
3880

39-
runFiles = []
4081

41-
for java in base.glob("**/*.java"):
42-
with java.open() as code:
43-
body = code.read()
44-
if "static void main(String[] args)" in body:
45-
runFiles.append(RunnableFile(java, body))
82+
class RunFiles:
83+
base = Path("ExtractedExamples")
84+
def __init__(self):
85+
self.runFiles = []
86+
for java in RunFiles.base.rglob("*.java"):
87+
with java.open() as code:
88+
body = code.read()
89+
if "static void main(String[] args)" in body:
90+
self.runFiles.append(RunnableFile(java, body))
91+
92+
def allFlagKeys(self):
93+
flagkeys = set()
94+
for f in [f for f in self.runFiles if f.flags]:
95+
[flagkeys.add(key) for key in f.flags.keys()]
96+
return flagkeys
97+
98+
def allFlagValues(self):
99+
return [f.flags.values() for f in self.runFiles if f.flags if f.flags.values()]
100+
101+
def allFlags(self):
102+
return [f.flags for f in self.runFiles if f.flags]
103+
104+
def runCommands(self):
105+
return [f.runCommand() for f in self.runFiles]
46106

107+
if __name__ == '__main__':
108+
runFiles = RunFiles()
109+
pprint.pprint(runFiles.allFlags())
110+
pprint.pprint(runFiles.runCommands())
47111

48112

49-
[print("JVM:", f.jvm_args) for f in runFiles if f.jvm_args]
50-
[print("Args:", f.args) for f in runFiles if f.args]
51-
[print("Pkg:", f.package) for f in runFiles if f.package]
52-
[print(f.runCommand()) for f in runFiles]

0 commit comments

Comments
 (0)