-
Notifications
You must be signed in to change notification settings - Fork 1
/
generate_vault.py
72 lines (63 loc) · 2.48 KB
/
generate_vault.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
#!/usr/bin/env python3
import subprocess
import json
import sys
def main():
vaults_out = open(sys.argv[1], 'w')
tokens_out = open(sys.argv[2], 'w')
vault_program = sys.argv[3]
protocol = sys.argv[4].upper()
p = subprocess.Popen('/Users/jabur/foton/solana-program-library/farms/target/release/solana-farm-client list-all farm',
shell=True,
stdout=subprocess.PIPE)
data = '['
for line in p.stdout.readlines():
if line[:4].decode("utf-8") != protocol + '.':
continue
farm = line.decode("utf-8").split(':')[0]
if len('VT.' + protocol + '.STC.' + farm[4:]) >= 32:
raise ValueError("Len exceeded " + farm)
print('/Users/jabur/foton/solana-program-library/farms/target/release/solana-farm-ctrl generate Vault ' +
vault_program + ' ' + protocol + '.STC.' +
farm[4:] + ' VT.' + protocol + '.STC.' +
farm[4:])
p2 = subprocess.Popen('/Users/jabur/foton/solana-program-library/farms/target/release/solana-farm-ctrl generate Vault ' +
vault_program + ' ' + protocol + '.STC.' +
farm[4:] + ' VT.' + protocol + '.STC.' +
farm[4:],
shell=True,
stdout=subprocess.PIPE)
for log in p2.stdout.readlines():
data += log.decode("utf-8").rstrip('\n')
if p2.wait() == 0:
data += ','
data = data[:-1]
data += ']'
parsed = json.loads(data)
vaults_out.write(
'{"name": "Solana Vaults List", "timestamp": "2021-03-03T19:57:21+0000", "vaults":['
)
tokens_out.write(
'{"name": "Solana Token List", "timestamp": "2021-03-03T19:57:21+0000", "tokens":['
)
first_token = True
first_vault = True
for obj in parsed:
if 'chainId' in obj:
if not first_token:
tokens_out.write(',\n')
else:
first_token = False
tokens_out.write(json.dumps(obj, indent=2, sort_keys=False))
else:
if not first_vault:
vaults_out.write(',\n')
else:
first_vault = False
vaults_out.write(json.dumps(obj, indent=2, sort_keys=False))
vaults_out.write(']}')
tokens_out.write(']}')
vaults_out.close()
tokens_out.close()
if __name__ == '__main__':
main()