your_ip_to_ip
[hcoop/zz_old/domtool2-proto.git] / src / slave.sig
CommitLineData
2f68506c 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
c12828f2 19(* Code for receiving and executing configuration files *)
2f68506c 20
c12828f2 21signature SLAVE = sig
2f68506c 22
c12828f2 23 datatype file_action =
24 Add
32a3db08 25 | Delete of bool (* Set to true to really delete the file *)
c12828f2 26 | Modify
27
32a3db08 28 val isDelete : file_action -> bool
29
c12828f2 30 type file_status = {action : file_action,
31 domain : string,
85af7d3e 32 dir : string,
c12828f2 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
1f53f82b 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. *)
cd873ae9 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. *)
f58a3627 58
59 val hostname : unit -> string
60 (* Get hostname of this machine *)
acb4199f 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 *)
891b033c 65
66 val lineInFile : string -> string -> bool
67 (* Is there a line in the file (first arg) that matches that given? *)
68
9f063ecc 69 val inGroup : {user : string, group : string} -> bool
70 (* Check membership in a UNIX group. *)
71
244a93c6 72 val mkDirAll : string -> unit
73 (* [mkDirAll p] creates directory "p", creating all parent directories, as
74 * necessary. *)
97d03e40 75
76 val remove : ''a list * ''a -> ''a list
77 val removeDups : ''a list -> ''a list
ddecf6de 78
ddecf6de 79 val moveDirCreate : { from : string, to : string } -> unit
2f68506c 80end