Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- options.lua - process command-line options.
-- This is part of blogme3. 
--
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
-- Version: 2022may21
-- <http://anggtwu.net/blogme3/options.lua>
-- <http://anggtwu.net/blogme3/options.lua.html>
-- License: GPL.

-- «.htmlization_head»		(to "htmlization_head")
-- «.htmlization_warning»	(to "htmlization_warning")
-- «.htmlizefile»		(to "htmlizefile")
-- «.htmlizefile_utf8»		(to "htmlizefile_utf8")
-- «.dooptions»			(to "dooptions")
-- «.basic-options»		(to "basic-options")
-- «.basic-options-sandwich»	(to "basic-options-sandwich")
-- «.basic-options-sep2021»	(to "basic-options-sep2021")
-- «._O»			(to "_O")

DBG = DBG or function () end



--------[ experimental ]--------
-- «htmlization_head»  (to ".htmlization_head")
mdef [[ htmlization_head 1 fname
<head>
<title>[$ fname] (htmlized)
</title>
</head>
]]

--------[ htmlization_warning ]--------
-- «htmlization_warning»  (to ".htmlization_warning")
mdef [[ htmlization_warning_ 2 original,htmlizer
  <table><tr><td bgcolor="#CC0000"><font color="#FFCC00" size=-1>
  Warning: this is an htmlized version!
  <br>The original is <a href="[$ original]">here</a>, and
  <br>the conversion rules are <a href="[$ htmlizer]">here</a>.
  </font></td></tr></table>
]]
def [[ htmlization_warning 1 fname
     htmlization_warning_(
       fnamenondirectory(fname),
       pathto "htmlize.html"
     )
]]


--------[ htmlizefile ]--------
-- «htmlizefile»  (to ".htmlizefile")
-- (find-blogme3file "anggdefs.lua" "MYL 2 fname,text")
-- (find-fline "~/TH/L/bin/fastcmp.lua.html")
-- (find-blogme3file "escripts.lua")
-- (find-blogme3file "escripts.lua" "htmlizefile =")
-- (find-angg "LUA/lua50init.lua" "u8_to_l1")
-- (find-angg "LUA/lua50init.lua" "u8_to_l1" "u8_to_l1_maybe =")

htmlizefile = function (fname, outfname, htmlizer)
    outfname = outfname or fname..".html"
    htmlizer = htmlizer or htmlizelines
    local fcontents = readfile(fname)
    local fnamestem = fnamenondirectory(fname)
    local warning   = htmlization_warning(fname)
    local head = htmlization_head(fname)
    local body = BODY(warning .. PRE(htmlizer(fcontents)))
    writefile(outfname, sgmlify(HTML(head .. body)))
  end

htmlizefile_with_u8_hack = function (fname, outfname, htmlizer)
    outfname = outfname or fname..".html"
    htmlizer = htmlizer or htmlizelines
    -- local fcontents = readfile(fname)
    DBG(74)
    local fcontents = u8_to_l1_maybe(readfile(fname))
    DBG(76)
    local fnamestem = fnamenondirectory(fname)
    DBG(78)
    local warning   = htmlization_warning(fname)
    DBG(80)
    local head = htmlization_head(fname)
    DBG(82)
    local body = BODY(warning .. PRE(htmlizer(fcontents)))
    DBG(84)
    writefile(outfname, sgmlify(HTML(head .. body)))
    DBG(86)
  end


-- «htmlizefile_utf8»  (to ".htmlizefile_utf8")
-- Experimental, 2021sep12
--
loadhtmlize_utf8 = function ()
    require "sandwiches-defs"   -- (find-blogme3 "sandwiches-defs.lua")
    require "htmlize-utf8"      -- (find-blogme3 "htmlize-utf8.lua")
    hl_utf8 = HtmlizeLine {
      left  = function (hl, str) return HtmlizeLeft  :match(str) end,
      plain = function (hl, str) return HtmlizeMiddle:match(str) end,
    }
    htmlizeline = function (linestr) return (hl_utf8:line(linestr)) end
    html_dtd    = dtd_transitional .. dtd_encoding_utf8
  end

htmlizefile_utf8 = function (fname, outfname)
    loadhtmlize_utf8()
    outfname = outfname or fname..".html"
    local fcontents = ee_readfile(fname)
    local fnamestem = fnamenondirectory(fname)
    local warning   = htmlization_warning(fname)
    local head = htmlization_head(fname)
    local body = BODY(warning .. PRE(htmlizelines(fcontents)))
    writefile(outfname, html_dtd .. HTML(head .. body))
  end




--------[ dooptions ]--------
-- «dooptions»  (to ".dooptions")
-- input = readfile(fname_input)
-- output = doblogme(input)
-- writefile(fname_output, output)
-- _O = _O or {}

dooptionss = function (args) dooptions(unpack(args)) end
dooptions  = function (...)
    if arg.n < 1 then return end
    local optionname = arg[1]
    if not _O[optionname] then
      error(format("Not in _O (for dooptions): %q", optionname))
    end
    table.remove(arg, 1)
    _O[optionname](unpack(arg))
  end

--------[ basic options ]--------
-- «basic-options»  (to ".basic-options")
-- (find-blogme3file "defs.lua" "blogme_output")
dooption_i = function (fname)
    doblogme(readfile(fname))
    writefile(outputfile, blogme_output)
  end
dooption_o = function (fname)
    outputfile = fname
    pathtoroot = getpathtoroot(fname)
    eevarticle    = pathto("eev-article.html")
    eepitchreadme = pathto("eev-current/eepitch.readme.html")
    eepitch_el    = pathto("eev-current/eepitch.el.html")
    eevintrosdir  = pathto("eev-intros/")
    require "angglisp"  -- (find-blogme3 "angglisp.lua")
    -- If I supported "lazy urls" in the _EHELP table then I wouldn't
    -- need to wait until "-o" to load angglisp. This is ridiculous.
    -- experimental, 2007oct15: loada2html always
  end
dooption_a2html = function (fname) htmlizefile(fname, outputfile) end
dooption_a2html = function (fname) htmlizefile_with_u8_hack(fname, outputfile) end
dooption_e = function (luacode) assert(loadstring(luacode))() end
dooption_dd = function (fname) writefile(fname, defs_as_lua().."\n") end
dooption_ei2html = function (fname)
    require "eevintros"		-- (find-blogme3 "eevintros.lua")
    htmlizeeevintro(fname, outputfile)
  end
dooption_sexptarget = function (s)
    loadblogme3rest() -- (find-angg "LUA/lua50init.lua" "loadblogme3")
    require "sexp"    -- (find-blogme3 "sexp.lua")
    print(STOT(s))    -- (find-blogme3 "sexp.lua" "STOH")
  end

-- «basic-options-sandwich»  (to ".basic-options-sandwich")
-- 2021jan16: Experimental variants of the basic options that use the
-- sandwich libraries.
-- (find-blogme3 "elisp.lua" "relative-links")
dooption_a2html_aug2021 = function (fname)
    require "sandwiches-defs"
    DBG(168)
    use_sand_htmlizeline(fname)
    DBG(170)
    htmlizefile_with_u8_hack(fname, outputfile)
    DBG(172)
  end
dooption_ei2html = function (fname)
    DBG(176)
    require "sandwiches-defs"   -- (find-blogme3 "sandwiches-defs.lua")
    DBG(178)
    use_sand_htmlizeline(fname)
    DBG(180)
    require "eevintros"		-- (find-blogme3 "eevintros.lua")
    DBG(182)
    htmlizeeevintro(fname, outputfile)
    DBG(184)
  end


-- «basic-options-sep2021»  (to ".basic-options-sep2021")
dooption_a2html_sep2021 = function (fname)
    DBG(189)
    require "detect-encoding" -- (find-blogme3 "detect-encoding.lua")
    DBG(191)
    local enc = DetectEncoding.new(fname, "./"):guessencoding()
    DBG(193)
    if enc == "raw-text-unix" then
    DBG(195)
      dooption_a2html_aug2021(fname)
    DBG(197)
    else
      -- print("Using htmlizefile_utf8!")
    DBG(200)
      htmlizefile_utf8(fname, outputfile)
    DBG(202)
    end
    DBG(204)
  end

-- (find-es "blogme" "debug-a2html")

-- Select one:
-- dooption_a2html = dooption_a2html_aug2021
dooption_a2html    = dooption_a2html_sep2021






-- «_O»  (to "._O")
_O = _O or {}
-- _O["-o"]      = function (fn, ...) dooption_o(fn);  dooptions(unpack(arg)) end
-- _O["-i"]      = function (fn, ...) dooption_i(fn);  dooptions(unpack(arg)) end
-- _O["-a2html"] = function (fn, ...) dooption_a2html(fn); dooptions(unpack(arg)) end
-- _O["-e"]      = function (lc, ...) dooption_e(lc);  dooptions(unpack(arg)) end
-- _O["-dd"]     = function (fn, ...) dooption_dd(fn); dooptions(unpack(arg)) end

_O["-o"]       = function (fn, ...) dooption_o(fn);       dooptions(...) end
_O["-i"]       = function (fn, ...) dooption_i(fn);       dooptions(...) end
_O["-a2html"]  = function (fn, ...) dooption_a2html(fn);  dooptions(...) end
_O["-ei2html"] = function (fn, ...) dooption_ei2html(fn); dooptions(...) end
_O["-e"]       = function (lc, ...) dooption_e(lc);       dooptions(...) end
_O["-dd"]      = function (fn, ...) dooption_dd(fn);      dooptions(...) end
_O["-test"]    = function (a,  ...) print("TEST", a);     dooptions(...) end
_O["-sexptarget"] = function (s, ...) dooption_sexptarget(s); dooptions(...) end

-- Other options, not implemented: run doblogme inside a xpcall; ...




-- Local Variables:
-- coding: raw-text-unix
-- End: