656 |
open FormatComb |
open FormatComb |
657 |
val { help, ctls, subregs, path } = rt |
val { help, ctls, subregs, path } = rt |
658 |
|
|
659 |
fun one c = let |
fun one ci = let |
660 |
val arg = concat (foldr (fn (s, r) => s :: "." :: r) |
val arg = concat (foldr (fn (s, r) => s :: "." :: r) |
661 |
[getarg c] path) |
[getarg ci] path) |
662 |
val value = getval c |
val value = getval ci |
663 |
val sz = size value |
val sz = size value |
664 |
val lw = !Control_Print.linewidth |
val lw = !Control_Print.linewidth |
665 |
val padsz = lw - 6 - size arg - indent |
val padsz = lw - 6 - size arg - indent |
720 |
\ -h (produce minimal help listing)\n\ |
\ -h (produce minimal help listing)\n\ |
721 |
\ -h<level> (help with obscurity limit)\n\ |
\ -h<level> (help with obscurity limit)\n\ |
722 |
\ -S (list all current settings)\n\ |
\ -S (list all current settings)\n\ |
723 |
\ -s<level> (limited list of settings)\n\n"]; |
\ -s<level> (limited list of settings)\n\ |
724 |
show_controls (Controls.name, |
\ -E (list all environment variables)\n\ |
725 |
fn c => concat ["(", #help (Controls.info c), |
\ -e<level> (limited list of environment variables)\n\n"]; |
726 |
|
show_controls (Controls.name o #ctl, |
727 |
|
fn ci => |
728 |
|
concat ["(", #help (Controls.info (#ctl ci)), |
729 |
")"], |
")"], |
730 |
FormatComb.pad FormatComb.left) |
FormatComb.pad FormatComb.left) |
731 |
level) |
level) |
732 |
|
|
733 |
fun showcur level = let |
fun showcur level = |
734 |
fun nopad (_, s) = s |
show_controls (fn ci => (Controls.name (#ctl ci) ^ "="), |
735 |
in |
fn ci => Controls.get (#ctl ci), |
|
show_controls (fn c => (Controls.name c ^ "="), |
|
|
fn c => Controls.get c, |
|
736 |
fn _ => fn ff => ff) |
fn _ => fn ff => ff) |
737 |
level |
level |
738 |
end |
|
739 |
|
fun show_envvars level = |
740 |
|
show_controls (fn ci => (Controls.name (#ctl ci) ^ ":"), |
741 |
|
fn ci => Option.getOpt (#envName (#info ci), |
742 |
|
"(none)"), |
743 |
|
FormatComb.pad FormatComb.left) |
744 |
|
level |
745 |
|
|
746 |
fun badopt opt f () = |
fun badopt opt f () = |
747 |
Say.say ["!* bad ", opt, " option: `", f, "'\n", |
Say.say ["!* bad ", opt, " option: `", f, "'\n", |
800 |
"" => showcur (SOME 0) |
"" => showcur (SOME 0) |
801 |
| level => showcur (Int.fromString level); |
| level => showcur (Int.fromString level); |
802 |
quit_if last) |
quit_if last) |
803 |
|
| carg ("-e", f, _, last) = |
804 |
|
(case String.extract (f, 2, NONE) of |
805 |
|
"" => show_envvars (SOME 0) |
806 |
|
| level => show_envvars (Int.fromString level); |
807 |
|
quit_if last) |
808 |
| carg (_, f, mk, _) = |
| carg (_, f, mk, _) = |
809 |
p (f, mk, String.map Char.toLower |
p (f, mk, String.map Char.toLower |
810 |
(getOpt (OS.Path.ext f, "<none>"))) |
(getOpt (OS.Path.ext f, "<none>"))) |
813 |
| args ("-m" :: rest, _) = args (rest, make) |
| args ("-m" :: rest, _) = args (rest, make) |
814 |
| args ("-H" :: rest, mk) = (help NONE; args_q (rest, mk)) |
| args ("-H" :: rest, mk) = (help NONE; args_q (rest, mk)) |
815 |
| args ("-S" :: rest, mk) = (showcur NONE; args_q (rest, mk)) |
| args ("-S" :: rest, mk) = (showcur NONE; args_q (rest, mk)) |
816 |
|
| args ("-E" :: rest, mk) = (show_envvars NONE; args_q (rest, mk)) |
817 |
| args ("-q" :: _, _) = quit () |
| args ("-q" :: _, _) = quit () |
818 |
| args ("@CMbuild" :: rest, _) = mlbuild rest |
| args ("@CMbuild" :: rest, _) = mlbuild rest |
819 |
| args (f :: rest, mk) = |
| args (f :: rest, mk) = |