Working on automatic rmdom for bad domains during regen
[hcoop/domtool2.git] / src / slave.sig
CommitLineData
629a34f6
AC
1(* HCoop Domtool (http://hcoop.sourceforge.net/)
2 * Copyright (c) 2006, Adam Chlipala
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 *)
18
d612d62c 19(* Code for receiving and executing configuration files *)
629a34f6 20
d612d62c 21signature SLAVE = sig
629a34f6 22
d612d62c
AC
23 datatype file_action =
24 Add
1638d5a2 25 | Delete of bool (* Set to true to really delete the file *)
d612d62c
AC
26 | Modify
27
1638d5a2
AC
28 val isDelete : file_action -> bool
29
d612d62c
AC
30 type file_status = {action : file_action,
31 domain : string,
6ae327f8 32 dir : string,
d612d62c
AC
33 file : string}
34
35 val registerFileHandler : (file_status -> unit) -> unit
36 (* Register a function to be called when a result configuration file's
37 * status has changed. Registered handlers are called in the reverse order
38 * from registration order. *)
39
40 val registerPreHandler : (unit -> unit) -> unit
41 val registerPostHandler : (unit -> unit) -> unit
42 (* Register code to run before or after making all changes. *)
43
44 val handleChanges : file_status list -> unit
8df2e702
AC
45
46 val shell : string list -> bool
47 val shellF : string list * (string -> string) -> unit
48
49 val concatTo : (string -> bool) -> string -> unit
50 (* Search through the result configuration hierarchy for all files matching
51 * the predicate, concatenating their contents in arbitrary order to the
52 * given file. *)
ed9fda3a
AC
53
54 val enumerateTo : (string -> bool) -> string -> string -> unit
55 (* Search through the result configuration hierarchy for all files matching
56 * the predicate, writing a list of their domains to the file named by the
57 * third argument, delimiting the entries with the second argument. *)
6e62228d
AC
58
59 val hostname : unit -> string
60 (* Get hostname of this machine *)
7db53a0b
AC
61
62 val readList : string -> string list
63 val writeList : string * string list -> unit
64 (* Reading and writing lists of strings stored on separate lines in files *)
d351d679
AC
65
66 val lineInFile : string -> string -> bool
67 (* Is there a line in the file (first arg) that matches that given? *)
68
737c68d4
AC
69 val inGroup : {user : string, group : string} -> bool
70 (* Check membership in a UNIX group. *)
71
409542d7
AC
72 val mkDirAll : string -> unit
73 (* [mkDirAll p] creates directory "p", creating all parent directories, as
74 * necessary. *)
e0b80e65
AC
75
76 val remove : ''a list * ''a -> ''a list
77 val removeDups : ''a list -> ''a list
31b50af0 78
31b50af0 79 val moveDirCreate : { from : string, to : string } -> unit
629a34f6 80end