11#! /usr/bin/env bash
22
3+ PORT=${PORT: 80}
34VERBOSE=${VERBOSE:- }
45
56FORCE=${FORCE:- }
@@ -22,37 +23,39 @@ MINT_003="or(99@thresh(2,thresh(2,pk(A1),pk(A2),pk(A3),after(1004)),or(10@thresh
2223# # MINT_004
2324MINT_004=" or(99@thresh(3,thresh(2,pk(P1),pk(P2),pk(P3),after(1002),after(1003)),thresh(2,pk(A1),pk(A2),pk(A3),after(1004)),thresh(1,pk(SA1),pk(SA2),pk(SA3))),1@and(thresh(2,pk(M1),pk(M2),pk(M3)),after(1005)))"
2425
26+ function examples(){
2527
26- function help {
27-
28- printf " Usage:\n"
29- printf " \n"
30- printf " miniscript-docker\n"
31- printf " miniscript-docker [-v --verbose]\n"
28+ printf " Examples:\n"
29+ printf " \n"
30+ printf " miniscript-docker run \n
31+ \'thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(100))\'
32+ "
33+ printf "
34+ \'and_v(or_c(pk(B),or_c(pk(C),v:older(1000))),pk(A))\'
35+ "
36+ printf "
37+ \'and(pk(A),or(pk(B),or(9@pk(C),older(1000))))\'
38+ "
39+ printf " \n"
40+ printf " MinT Examples:\n"
3241 printf " \n"
33- printf " miniscript-docker help [-h --help]\n"
34- printf " miniscript-docker make [-m --make]\n"
35- printf " miniscript-docker build [-b --build]\n"
42+ printf " MinT-000"
3643 printf " \n"
37- printf " miniscript-docker run <miniscript>"
44+ printf "
45+ \'and(pk(A),or(pk(B),or(9@pk(C),older(1000))))\'
46+ "
3847 printf " \n"
48+ printf " MinT-001"
3949 printf " \n"
40- printf " Examples:\n"
50+ printf "
51+ \'and(pk(A),or(pk(B),or(9@pk(C),older(1000))))\'
52+ "
4153 printf " \n"
42- printf " miniscript-docker run \'thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(100))\'\n"
43- printf " miniscript-docker run \'and_v(or_c(pk(B),or_c(pk(C),v:older(1000))),pk(A))'\n"
44- printf " miniscript-docker run \'and(pk(A),or(pk(B),or(9@pk(C),older(1000))))'\n"
54+ printf " MinT-002.1"
4555 printf " \n"
46- printf " Miniscript Templates (MinT)\n"
47- printf " \n"
48- printf " MinT-000\n"
49- printf " miniscript-docker run \'and(pk(A),or(pk(B),or(9@pk(C),older(1000))))'\n"
50- printf " \n"
51- printf " MinT-001\n"
52- printf " miniscript-docker run \'and(pk(A),or(pk(B),or(9@pk(C),older(1000))))'\n"
53- printf " \n"
54- printf " MinT-002.1\n"
55- printf " miniscript-docker run \'$MINT_002_1 '\n"
56+ printf "
57+ \'$MINT_002_1 \'
58+ "
5659 # # 0
5760 # # scriptlen=206
5861 # # maxops=28
@@ -65,8 +68,12 @@ function help {
6568 # # timelock_mix=no
6669 # # miniscript=
6770 # # thresh(3,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),s:pk(XPUB4),s:pk(XPUB5),snu:older(100),snu:older(200))
68- printf " MinT-002.2\n"
69- printf " miniscript-docker run \'$MINT_002_2 '\n"
71+ printf " \n"
72+ printf " MinT-002.2"
73+ printf " \n"
74+ printf "
75+ \'$MINT_002_2 \'
76+ "
7077 # # 0
7178 # # scriptlen=211
7279 # # maxops=28
@@ -80,8 +87,11 @@ function help {
8087 # # miniscript=
8188 # # thresh(3,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),s:pk(XPUB4),s:pk(XPUB5),snu:after(1694563200),snu:after(1694563200))
8289 printf " \n"
83- printf " MinT-002.3\n"
84- printf " miniscript-docker run \'$MINT_002_3 '\n"
90+ printf " MinT-002.3"
91+ printf " \n"
92+ printf "
93+ \'$MINT_002_3 \'
94+ "
8595 # # 0
8696 # # scriptlen=211
8797 # # maxops=28
@@ -96,7 +106,9 @@ function help {
96106 # # thresh(3,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),s:pk(XPUB4),s:pk(XPUB5),snu:after(1694563200),snu:after(1694476800))
97107 printf " \n"
98108 printf " MinT-002.4\n"
99- printf " miniscript-docker run \'$MINT_002_4 '\n"
109+ printf "
110+ \'$MINT_002_4 \'
111+ "
100112 printf " \n"
101113 # # 0
102114 # # scriptlen=209
@@ -111,69 +123,70 @@ function help {
111123 # # miniscript=
112124 # # thresh(3,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),s:pk(XPUB4),s:pk(XPUB5),snu:older(4194400),snu:older(4194500))
113125 printf " \n"
114-
115126 printf " MinT-003\n"
116- printf " miniscript-docker run \'$MINT_003 '\n"
127+ printf " \n"
128+ printf "
129+ \'$MINT_003 \'
130+ "
117131 # # X
118132 # # 647.0300000000
119133 # # 420
120134 # # or_i(and_v(v:thresh(2,pkh(M1),a:pkh(M2),a:pkh(M3)),after(1005)),and_v(v:thresh(2,pk(A1),s:pk(A2),s:pk(A3),sln:after(1004)),or_i(and_v(vc:or_i(pk_h(SA1),or_i(pk_h(SA2),pk_h(SA3))),after(1003)),thresh(2,pk(P1),s:pk(P2),s:pk(P3),sln:after(1002)))))
121135 # # or(99@thresh(2,thresh(2,pk(A1),pk(A2),pk(A3),after(1004)),or(10@thresh(2,pk(P1),pk(P2),pk(P3),after(1002)),and(thresh(1,pk(SA1),pk(SA2),pk(SA3)),after(1003)))),and(thresh(2,pk(M1),pk(M2),pk(M3)),after(1005)))\n"
122136 printf " \n"
123-
124137 printf " MinT-004\n"
125- printf " miniscript-docker run \'$MINT_004 '\n"
138+ printf " \n"
139+ printf "
140+ \'$MINT_004 \'
141+ "
126142 printf " \n"
127143
128144 # # X
129145 # # 728.6930000000
130146 # # 444
131147 # # or_i(and_v(v:thresh(2,pkh(M1),a:pkh(M2),a:pkh(M3)),after(1005)),and_v(v:thresh(2,pk(P1),s:pk(P2),s:pk(P3),sun:after(1002),sun:after(1003)),and_v(or_c(pk(SA1),or_c(pk(SA3),v:pkh(SA2))),thresh(2,pk(A1),s:pk(A2),s:pk(A3),sln:after(1004)))))
132148 # # or(99@thresh(3,thresh(2,pk(P1),pk(P2),pk(P3),after(1002),after(1003)),thresh(2,pk(A1),pk(A2),pk(A3),after(1004)),thresh(1,pk(SA1),pk(SA2),pk(SA3))),1@and(thresh(2,pk(M1),pk(M2),pk(M3)),after(1005)))
149+ exit
150+ }
151+
152+ function help {
153+
154+ printf " Usage:\n"
155+ printf " \n"
156+ printf " miniscript-docker\n"
157+ printf " \n"
158+ printf " miniscript-docker examples\n"
159+ printf " \n"
160+ printf " miniscript-docker help [-h --help]\n"
161+ printf " miniscript-docker build [-b --build]\n"
162+ printf " \n"
163+ printf " miniscript-docker run <miniscript>"
164+ printf " \n"
133165 exit ;
134166}
135167
136168function build {
137169
138- echo TAG=$TAG
139- echo FORCE=$FORCE
140- echo NOCACHE=$NOCACHE
141- echo VERBOSE=$VERBOSE
142170 [ " $NOCACHE " ] && docker build --no-cache -t $TAG . && exit ;
143171 [ ! -z " $NOCACHE " ] && docker build $NOCACHE -t $TAG . && exit ;
144172
145173}
146174
147- function make {
148-
149- echo TAG=$TAG
150- echo FORCE=$FORCE
151- echo NOCACHE=$NOCACHE
152- echo VERBOSE=$VERBOSE
153- # # remove on host - it may be a different OS
154- rm ./miniscript || echo && \
155- docker run --rm -v $PWD :/src $TAG sh -c " make miniscript" && \
156- exit ;
157-
158- }
159175function run () {
160176
161- # # echo "\$1"=$1
162- # # echo "\$2"=$2
163- # # echo "\$3"=$3
164-
165- # # echo TAG=$TAG
166- # # echo FORCE=$FORCE
167- # # echo NOCACHE=$NOCACHE
168- # # echo VERBOSE=$VERBOSE
169- # # remove on host - it may be a different OS
170- # # Usage:
171- # # miniscript-docker run "thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(100))"
172- docker run --rm -v $PWD :/src $TAG sh -c " echo '$1 ' | ./miniscript" && \
177+ docker run --rm -v $PWD :/src $TAG sh -c " echo '$1 ' | miniscript" && \
173178 exit ;
174179
175180}
176-
181+ function shell (){
182+ docker \
183+ run \
184+ -t \
185+ -i \
186+ --rm \
187+ -p 127.0.0.1:$PORT :8080/tcp \
188+ -v ` pwd` :/src miniscript bash
189+ }
177190# # argparse
178191# # position $1
179192# # echo "\${!#}=${!#}"
210223 ;;
211224 run) run $2 $3 $4
212225 ;;
226+ shell) shell
227+ ;;
228+ examples) examples
229+ ;;
230+ --examples) examples
231+ ;;
232+ -e) examples
233+ ;;
213234 --* ) echo " bad option $1 "
214235 ;;
215236 * ) echo " argument $1 "
223244 case " $2 " in
224245 # # support docker-miniscript build -f
225246 # # docker-miniscript -f build
247+ verbose) VERBOSE=1; echo $VERBOSE
248+ ;;
249+ --verbose) VERBOSE=1; echo $VERBOSE
250+ ;;
251+ -v) VERBOSE=1; echo $VERBOSE
252+ ;;
226253 --force) FORCE=--force; # # echo FORCE=$FORCE
227254 ;;
228255 -f) FORCE=--force; # # echo FORCE=$FORCE
239266 ;;
240267 -m) make
241268 ;;
269+ examples) examples
270+ ;;
271+ --examples) examples
272+ ;;
273+ -e) examaples
274+ ;;
242275 --* ) echo " bad option $1 "
243276 ;;
244277 * ) echo " argument $1 "
245278 ;;
246279 esac
247280 shift
248281done
249-
250-
251-
252- # detect docker after argparse
253- DOCKER=${DOCKER:- $(which docker)}
254- [ -z " $DOCKER " ] && printf " 'docker' not in \$ PATH"
255-
256- [ " $1 " == " make" ] && \
257- rm ./miniscript || echo && \
258- $DOCKER run --rm -v $PWD :/src miniscript sh -c " make miniscript" && \
259- exit ;
260-
261- [ ! -z " $DOCKER " ] && \
262- $DOCKER \
263- run \
264- --rm \
265- --volume " ` pwd` :/src" \
266- miniscript \
267- sh -c " echo '$1 $2 $3 $4 ' | ./miniscript"
268- # "echo ' and(pk(A),or(pk(B),or(9@pk(C),older(1000))))' | ./miniscript"
282+ help
0 commit comments