[tex-live] *** GMX Spamverdacht *** Re: TeXLive (Windows) bash script -> exe
Norbert Preining
preining at logic.at
Wed May 21 04:34:52 CEST 2014
Hi Josef,
I have taken Reinhard's advice and included them into the script,
here is an updated version.
I cannot guarantee that it works on Windows, I have no easy access,
but on Unix it works ;-)
With getopt
> > -- TO BE DONE TODO TODO TODO
> > -- if [ "$QUIET" = "true" ]
> > -- then
> > -- exec 1>/dev/null
> > -- exec 2>/dev/null
> > -- fi
>
> In order to suppress stdout, simply read the output of wget from a
> pipe. Just use io.popen() instead of os.spawn().
Yeah, maybe later
> And if you are running your script in an arbitry directory for
> testing, (no symlinks or wrappers involved), add the line
>
> kpse.set_program_name('texlua')
>
> to your script and things like
>
> require ("alt_getopt")
>
> will work.
Does this also work if symlink and wrappers (like in a typical TL Windows
case) are used?
> How do you handle character encodings?
>
> LOCATION = "Bergheimer Straテoテηクe 110A, 69115 Heidelberg, Germany"
My failure ... I was typing in a Japanese environment emacs ;-)))
Norbert
------------------------------------------------------------------------
PREINING, Norbert http://www.preining.info
JAIST, Japan TeX Live & Debian Developer
GPG: 0x860CDC13 fp: F7D8 A928 26E3 16A1 9FA0 ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------
-------------- next part --------------
#!/usr/bin/env texlua
--
-- osmimage [options]
--
-- downloads an OpenStreetMap map specified by [options]
-- by using http://developer.mapquest.com/ web service
--
-- License: LPPL
--
local URL = "http://open.mapquestapi.com/staticmap/v4/getplacemap"
local KEY = ""
local LOCATION = ""
local XSIZE = ""
local YSIZE = ""
local SIZE = ""
local SCALE = ""
local ZOOM = ""
local TYPE = ""
local IMAGETYPE = ""
local COLOR = ""
local NUMBER = ""
local OFILE = "osmimage"
local QUIET = "false"
local VERSION = "v1.1 (19/05/2014)"
kpse.set_program_name('texlua')
require ("alt_getopt")
function pversion()
print("osmimage " .. VERSION)
print("(C) Josef Kleber License: LPPL")
os.exit(0)
end
function phelp()
print([[
osmimage [options]
downloads an OpenStreetMap map specified by [options]
by using http://developer.mapquest.com/ web service
Options:
-k key registered at http://developer.mapquest.com/
default (Example key from web site)!
Please register and use your own key!
-l specify a location
e.g. 'Bergheimer Straße 110A, 69115 Heidelberg, Germany'
-x specify a xsize (800)
-y specify a ysize (400)
-S short form to specify a size, e.g. 800,400
-s specify a scale factor in the range 1692-221871572 (3385 = -z 17)
see: http://open.mapquestapi.com/staticmap/zoomToScale.html
-z specify a zoom in the range 1-18 (zoom overrides scale!)
-t specify map type {map|sat|hyb} (map)
-i specify image type {jpeg|jpg|gif|png} (png)
-c specify icon color (yellow_1)
see: http://open.mapquestapi.com/staticmap/icons.html
-n specify the icon number (1)
-o specify output basename without file extension (osmimage.IMAGETYPE)
-q quiet; no output!
-v prints version information
-h prints help information
]])
pversion()
end
function osmimage_error(exitcode, errortext)
io.stderr:write ("Error (" .. exitcode .. "): " .. errortext .. "\n")
os.exit(exitcode)
end
function osmimage_warning(warningtext)
io.stderr:write("WARNING: " .. warningtext .. "\n")
end
function check_number(var, varname)
local number='^[0-9]+$'
if not(string.match(var, '^[0-9]+$')) then
osmimage_error(2, varname .. " can't be " .. var .. "! Not a number!")
end
end
function check_range(var,min,max,exitcode,varname)
check_number(var,varname)
if (var < min or var > max) then
osmimage_error(exitcode, varname .. " = " .. var .. "; must be in the range of " .. min .. "-" .. max)
end
end
local long_opts = {}
local ret
local optarg
local optind
opts,optind,optarg = alt_getopt.get_ordered_opts(arg, "k:l:x:y:S:s:z:t:i:c:n:o:qvh", long_opts)
for i,v in ipairs (opts) do
if v == "k" then
KEY = optarg[i]
elseif v == "l" then
LOCATION = optarg[i]
elseif v == "x" then
XSIZE = optarg[i]
elseif v == "y" then
YSIZE = optarg[i]
elseif v == "S" then
SIZE = optarg[i]
elseif v == "s" then
SCALE = optarg[i]
elseif v == "z" then
ZOOM = optarg[i]
elseif v == "t" then
TYPE = optarg[i]
elseif v == "i" then
IMAGETYPE = optarg[i]
elseif v == "c" then
COLOR = optarg[i]
elseif v == "n" then
NUMBER = optarg[i]
elseif v == "o" then
OFILE = optarg[i]
elseif v == "q" then
QUIET = 1
elseif v == "v" then
pversion()
elseif v == "h" then
phelp()
end
end
--
-- TO BE DONE TODO TODO TODO
-- if [ "$QUIET" = "true" ]
-- then
-- exec 1>/dev/null
-- exec 2>/dev/null
-- fi
if KEY == "" then
KEY="Kmjtd%7Cluu7n162n1%2C22%3Do5-h61wh"
osmimage_warning("KEY not specified; using mapquest example key as default!")
end
if LOCATION == "" then
LOCATION = "Bergheimer Straße 110A, 69115 Heidelberg, Germany"
osmimage_warning("LOCATION not specified; using Dante e.V. Office as default!")
end
if XSIZE == "" then
XSIZE=800
osmimage_warning("XSIZE not specified; using XSIZE=800 as default!")
end
check_range(XSIZE,1,3840,11,"XSIZE")
if YSIZE == "" then
YSIZE=400
osmimage_warning("YSIZE not specified; using YSIZE=400 as default!")
end
check_range(YSIZE,1,3840,12,"YSIZE")
if SIZE == "" then
SIZE = XSIZE .. "," .. YSIZE
end
if SCALE == "" then
if ZOOM == "" then
SCALE=3385
osmimage_warning("SCALE not specified, using SCALE=3385 as default!")
end
else
check_range(SCALE,1692,221871572,13,"SCALE")
end
if TYPE == "" then
TYPE = "map"
osmimage_warning("TYPE not specified; using map as default!")
end
if IMAGETYPE == "" then
IMAGETYPE="png"
osmimage_warning("IMAGETYPE not specified; using png as default!")
end
if COLOR == "" then
COLOR="yellow_1"
osmimage_warning("COLOR not specified; using yellow_1 as default!")
end
if NUMBER == "" then
NUMBER=1
osmimage_warning("NUMBER not specified; using 1 as default!")
end
check_number(NUMBER,"NUMBER")
ULOCATION = "&location=" .. LOCATION
USIZE = "&size=" .. SIZE
if ZOOM == "" then
USCALEZOOM = "&scale=" .. SCALE
else
check_range(ZOOM,1,18,14,"ZOOM")
USCALEZOOM = "&zoom=" .. ZOOM
end
UTYPE = "&type=" .. TYPE
UIMAGETYPE = "&imagetype=" .. IMAGETYPE
USHOWICON = "&showicon=" .. COLOR .. "-" .. NUMBER
UOFILE = OFILE .. "." .. IMAGETYPE
IMGURL = URL .. "?key=" .. KEY .. ULOCATION .. USIZE .. USCALEZOOM .. UTYPE .. UIMAGETYPE .. USHOWICON
if os.type == 'windows' then
local texmf_root = kpse.var_value('TEXMFROOT')
local WGET = texmf_root .. '/tlpkg/installer/wget/wget.exe'
PROGLINE = WGET .. '"' .. IMGURL .. '" -O ' .. UOFILE
else
PROGLINE = "wget '" .. IMGURL .. "' -O " .. UOFILE
end
print(PROGLINE)
os.spawn(PROGLINE)
-- works
-- local file = ltn12.sink.file(io.open(UOFILE, 'wb'))
-- http.request {
-- url = IMGURL,
-- sink = file,
-- }
-- gives <html><body><b>Http/1.1 Bad Request</b></body> </html> instead of image
-- URL encoding for LOCATION??? but works for wget
More information about the tex-live
mailing list