-
Notifications
You must be signed in to change notification settings - Fork 1
/
cenary.sh
executable file
·123 lines (106 loc) · 1.83 KB
/
cenary.sh
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/bin/bash
function compile {
if ! [[ "$1" = true ]]; then echo "[.] Compiling..."; fi
stack build
if ! [[ "$1" = true ]]; then echo "[.] Compilation complete."; fi
}
EXECUTABLE=./.stack-work/install/x86_64-osx/lts-11.2/8.2.2/bin/cenary
function disasm {
$EXECUTABLE -m disasm -i stdlib.cen
}
function ast {
$EXECUTABLE -m ast -i "${1:-stdlib.cen}"
}
function bytecode {
$EXECUTABLE -m bytecode -i "${1:-stdlib.cen}"
}
function run {
$EXECUTABLE -m run -i "${1:-stdlib.cen}"
}
function asm {
$EXECUTABLE -m asm -i "${1:-in.evm}"
}
function deploy {
$EXECUTABLE -m deploy -i "${1:-stdlib.cen}"
}
function rewind-deploy {
$EXECUTABLE -m rewind-deploy -i "${1:-stdlib.cen}"
}
function compute {
if ! [[ $2 ]]; then
start_testrpc
fi
DEPLOYMENT_JS=deployment/deployment.current.js
compile true
deploy $1
if ! [[ "$?" = 0 ]]; then
echo "[!] Compilation did not succeed."
exit 1
else
function_name="${2:-main()}"
echo "Executing: $function_name"
sed -i '' s/@call@/"$function_name"/ "$DEPLOYMENT_JS"
node "$DEPLOYMENT_JS"
rewind-deploy $1
fi
if ! [[ $2 ]]; then
kill_testrpc
fi
}
function blue {
echo -e "\e[34m$1\033[0m"
}
function green {
echo -e "\e[32m$1\033[0m"
}
function red {
echo -e "\e[31m$1\033[0m"
}
function start_testrpc {
if ! [[ $(ps aux|grep testrpc|wc -l) -gt 1 ]]; then
testrpc --gasLimit 90000000 --gasPrice 1 1>/dev/null &
fi
}
function kill_testrpc {
if [[ $(ps aux|grep testrpc|wc -l) -gt 1 ]]; then
ps aux|grep testrpc|grep node|awk '{print $2}'|xargs kill -9
fi
}
case $1 in
clear)
clear
;;
compile)
compile
;;
ast)
ast
;;
bytecode)
bytecode
;;
run)
run
;;
asm)
asm
;;
disasm)
disasm
;;
deploy)
deploy
;;
rewind-deploy)
rewind-deploy
;;
compute)
compute
;;
test)
test
;;
*)
compile
;;
esac