# Demonstrate usage of LUCK RESTfully,
# requires a locally running LUCK service on port 8015

package require rest

set luck(list) {
    url         http://localhost:8015/cgi-bin/luck.tcl
    description {list of available templates}
    method      post
    static_args {api list}
    req_args    {}
    opt_args    {}
    result      raw
}

# req_args:
#   -template   name of binary template, e.g. vanillawish-linux32
# opt_args:
#   -withtips   when present send alternating lines of extension
#               name and description

set luck(extlist) {
    url         http://localhost:8015/cgi-bin/luck.tcl
    description {list of extensions of given template}
    method      post
    static_args {api extlist}
    req_args    {template:}
    opt_args    {withtips}
    result      raw
}

# req_args:
#   -template   name of binary template, e.g. vanillawish-linux32
#   -include    list of extensions to be embedded
# opt_args:
#   -appfile    *.tcl (for app/main.tcl) or *.zip (must have main.tcl),
#               content must be base64 encoded
#   -cmdline    (undroidwish) additional startup arguments
#   -appicon    (undroidwish) BMP (24 bit RGB) icon,
#               content must be base64 encoded
#   -winicon    (Windows binaries) icon (*.ico) for executable,
#               content must be base64 encoded
#   -passwd     ZIP password

set luck(generate) {
    url         http://localhost:8015/cgi-bin/luck.tcl
    description {generate a binary}
    method      post
    static_args {api generate}
    req_args    {template: include:}
    opt_args    {appfile: cmdline: appicon: winicon: passwd:}
    result      raw
}

set luck(resolve) {
    copy        generate
    description {resolve dependencies}
    static_args {api resolve}
}

rest::create_interface luck

# list templates

puts "==== Templates ===="
puts -nonewline [luck::list]

# list extensions of vanillawish-win32.exe

puts "==== Extensions of vanillawish-win32.exe ===="
puts -nonewline [luck::extlist -template vanillawish-win32.exe]

# make tkbugz for win32 from a ZIP which contains main.tcl
# with the single line "source [info nameofexecutable]/tkbugz/tk_bugz.tcl"

set main_tcl_zip {
    UEsDBBQAAAAIAJVmp1I2IJT8MAAAADIAAAAIABwAbWFpbi50Y2xVVAkAA/oblWAL
    HJVgdXgLAAEE6AMAAAToAwAAK84vLUpOVYjOzEvLV8hLzE3NT0utSE0uLUlMykmN
    1S/JTipNrwJS8SBaryQ5hwsAUEsBAh4DFAAAAAgAlWanUjYglPwwAAAAMgAAAAgA
    GAAAAAAAAQAAAKSBAAAAAG1haW4udGNsVVQFAAP6G5VgdXgLAAEE6AMAAAToAwAA
    UEsFBgAAAAABAAEATgAAAHIAAAAAAA==
}

set f [open tkbugz.exe wb]
puts -nonewline $f \
    [luck::generate -template vanillawish-win32.exe \
	 -include tkbugz -appfile $main_tcl_zip]
close $f
