7d78217da783e8e22db8bd20cd8269f04c391fd3
[hcoop/domtool2.git] / src / slave.sig
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
19 (* Code for receiving and executing configuration files *)
20
21 signature SLAVE = sig
22
23 datatype file_action =
24 Add
25 | Delete
26 | Modify
27
28 type file_status = {action : file_action,
29 domain : string,
30 dir : string,
31 file : string}
32
33 val registerFileHandler : (file_status -> unit) -> unit
34 (* Register a function to be called when a result configuration file's
35 * status has changed. Registered handlers are called in the reverse order
36 * from registration order. *)
37
38 val registerPreHandler : (unit -> unit) -> unit
39 val registerPostHandler : (unit -> unit) -> unit
40 (* Register code to run before or after making all changes. *)
41
42 val handleChanges : file_status list -> unit
43
44 val shell : string list -> bool
45 val shellF : string list * (string -> string) -> unit
46
47 val concatTo : (string -> bool) -> string -> unit
48 (* Search through the result configuration hierarchy for all files matching
49 * the predicate, concatenating their contents in arbitrary order to the
50 * given file. *)
51
52 val enumerateTo : (string -> bool) -> string -> string -> unit
53 (* Search through the result configuration hierarchy for all files matching
54 * the predicate, writing a list of their domains to the file named by the
55 * third argument, delimiting the entries with the second argument. *)
56
57 val hostname : unit -> string
58 (* Get hostname of this machine *)
59 end