Move default environment settings from SML to Domtool
[hcoop/domtool2.git] / src / plugins / exim.sml
index 8b0485b..b069389 100644 (file)
@@ -22,12 +22,6 @@ structure Exim :> EXIM = struct
 
 open Ast
 
-val dl = ErrorMsg.dummyLoc
-
-val _ = Defaults.registerDefault ("MailNodes",
-                                 (TList (TBase "mail_node", dl), dl),
-                                 (fn () => (EList (map (fn s => (EString s, dl)) Config.Exim.aliasTo), dl)))
-
 val aliasesChanged = ref false
 val aliasesDefaultChanged = ref false
 val hostsChanged = ref false
@@ -42,11 +36,11 @@ val () = Slave.registerFileHandler (fn fs =>
                                       let
                                           val spl = OS.Path.splitDirFile (#file fs)
                                       in
-                                          if #file spl = "aliases" then
+                                          if #file spl = "aliases.base" then
                                               aliasesChanged := true
                                           else if #file spl = "aliases.default" then
                                               aliasesDefaultChanged := true
-                                          else if #file spl = "mail" then
+                                          else if #file spl = "mail.handle" then
                                               hostsChanged := true
                                           else if #file spl = "mail.relay" then
                                               relayHostsChanged := true
@@ -57,7 +51,7 @@ val () = Slave.registerFileHandler (fn fs =>
 val () = Slave.registerPostHandler
         (fn () =>
             (if !aliasesChanged then
-                 Slave.concatTo (fn s => s = "aliases") Config.Exim.aliases
+                 Slave.concatTo (fn s => s = "aliases.base") Config.Exim.aliases
              else
                  ();
              if !aliasesDefaultChanged then
@@ -65,7 +59,7 @@ val () = Slave.registerPostHandler
              else
                  ();
              if !hostsChanged then
-                 Slave.enumerateTo (fn s => s = "mail") ":" Config.Exim.handleDomains
+                 Slave.enumerateTo (fn s => s = "mail.handle") ":" Config.Exim.handleDomains
              else
                  ();
              if !relayHostsChanged then
@@ -85,9 +79,9 @@ val () = Env.actionV_none "handleMail"
             let
                 val nodes = Env.env (Env.list Env.string) (env, "MailNodes")
             in
-                app (fn node => TextIO.closeOut
-                                    (Domain.domainFile {node = node,
-                                                        name = "mail"})) nodes
+                app (fn node => #close
+                                    (Domain.domainsFile {node = node,
+                                                         name = "mail.handle"}) ()) nodes
             end)
 
 val () = Env.actionV_none "relayMail"
@@ -95,9 +89,23 @@ val () = Env.actionV_none "relayMail"
             let
                 val nodes = Env.env (Env.list Env.string) (env, "MailNodes")
             in
-                app (fn node => TextIO.closeOut
-                                    (Domain.domainFile {node = node,
-                                                        name = "mail.relay"})) nodes
+                app (fn node => #close
+                                    (Domain.domainsFile {node = node,
+                                                         name = "mail.relay"}) ()) nodes
             end)
 
+val () = Domain.registerDescriber (Domain.considerAll
+                                  [Domain.Filename {filename = "aliases.base",
+                                                    heading = "E-mail aliases:",
+                                                    showEmpty = false},
+                                   Domain.Filename {filename = "aliases.default",
+                                                    heading = "Default e-mail alias:",
+                                                    showEmpty = false},
+                                   Domain.Filename {filename = "mail.handle",
+                                                    heading = "E-mail handling is on.",
+                                                    showEmpty = true},
+                                   Domain.Filename {filename = "mail.relay",
+                                                    heading = "E-mail relaying is on.",
+                                                    showEmpty = true}])
+
 end