-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompiler.py
78 lines (54 loc) · 2.75 KB
/
compiler.py
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
import subprocess
import json
import os
if not os.path.exists("artifacts"):
os.makedirs("artifacts")
contract_file = "contract.vy"
command_bytecode = f"python -m vyper -f bytecode {contract_file}"
output_bytecode = subprocess.check_output(command_bytecode, shell=True)
output_bytecode = output_bytecode.decode("utf-8").strip()
result_bytecode = {"bytecode": output_bytecode}
json_output_bytecode = json.dumps(result_bytecode)
with open("artifacts/contract_output_bytecode.json", "w") as f:
f.write(json_output_bytecode)
command_abi = f"python -m vyper -f abi {contract_file}"
output_abi = subprocess.check_output(command_abi, shell=True)
output_abi = output_abi.decode("utf-8").strip()
result_abi = {"abi": output_abi}
with open("artifacts/contract_output_abi.json", "w") as f:
f.write(output_abi)
command_runtime = f"python -m vyper -f bytecode_runtime {contract_file}"
output_runtime = subprocess.check_output(command_runtime, shell=True)
output_runtime = output_runtime.decode("utf-8").strip()
result_runtime = {"bytecode_runtime": output_runtime}
json_output_runtime = json.dumps(result_runtime)
with open("artifacts/contract_output_runtime.json", "w") as f:
f.write(json_output_runtime)
command_ir = f"python -m vyper -f ir {contract_file}"
output_ir = subprocess.check_output(command_ir, shell=True)
output_ir = output_ir.decode("utf-8").strip()
result_ir = {"ir": output_ir}
json_output_ir = json.dumps(result_ir)
with open("artifacts/contract_output_ir.json", "w") as f:
f.write(json_output_ir)
command_asm = f"python -m vyper -f asm {contract_file}"
output_asm = subprocess.check_output(command_asm, shell=True)
output_asm = output_asm.decode("utf-8").strip()
result_asm = {"asm": output_asm}
json_output_asm = json.dumps(result_asm)
with open("artifacts/contract_output_asm.json", "w") as f:
f.write(json_output_asm)
command_source_map = f"python -m vyper -f source_map {contract_file}"
output_source_map = subprocess.check_output(command_source_map, shell=True)
output_source_map = output_source_map.decode("utf-8").strip()
result_source_map = {"source_map": output_source_map}
json_output_source_map = json.dumps(result_source_map)
with open("artifacts/contract_output_source_map.json", "w") as f:
f.write(json_output_source_map)
command_method_identifiers = f"python -m vyper -f method_identifiers {contract_file}"
output_method_identifiers = subprocess.check_output(command_method_identifiers, shell=True)
output_method_identifiers = output_method_identifiers.decode("utf-8").strip()
result_method_identifiers = {"method_identifiers": output_method_identifiers}
json_output_method_identifiers = json.dumps(result_method_identifiers)
with open("artifacts/contract_output_method_identifiers.json", "w") as f:
f.write(json_output_method_identifiers)