Commit | Line | Data |
---|---|---|
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 | 21 | signature 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 | |
abcfe83a | 48 | val shellOutput : string list -> string option |
dfd19067 | 49 | val run : string * string list -> bool |
7421bb04 CE |
50 | val runOutput : string * string list -> bool * string option |
51 | (* Like shellOutput, but return status and lines and don't use the shell *) | |
8df2e702 AC |
52 | |
53 | val concatTo : (string -> bool) -> string -> unit | |
54 | (* Search through the result configuration hierarchy for all files matching | |
55 | * the predicate, concatenating their contents in arbitrary order to the | |
56 | * given file. *) | |
ed9fda3a AC |
57 | |
58 | val enumerateTo : (string -> bool) -> string -> string -> unit | |
59 | (* Search through the result configuration hierarchy for all files matching | |
60 | * the predicate, writing a list of their domains to the file named by the | |
61 | * third argument, delimiting the entries with the second argument. *) | |
6e62228d AC |
62 | |
63 | val hostname : unit -> string | |
64 | (* Get hostname of this machine *) | |
7db53a0b AC |
65 | |
66 | val readList : string -> string list | |
67 | val writeList : string * string list -> unit | |
68 | (* Reading and writing lists of strings stored on separate lines in files *) | |
d351d679 AC |
69 | |
70 | val lineInFile : string -> string -> bool | |
71 | (* Is there a line in the file (first arg) that matches that given? *) | |
72 | ||
737c68d4 AC |
73 | val inGroup : {user : string, group : string} -> bool |
74 | (* Check membership in a UNIX group. *) | |
75 | ||
409542d7 AC |
76 | val mkDirAll : string -> unit |
77 | (* [mkDirAll p] creates directory "p", creating all parent directories, as | |
78 | * necessary. *) | |
e0b80e65 AC |
79 | |
80 | val remove : ''a list * ''a -> ''a list | |
81 | val removeDups : ''a list -> ''a list | |
31b50af0 | 82 | |
31b50af0 | 83 | val moveDirCreate : { from : string, to : string } -> unit |
629a34f6 | 84 | end |