val file_newer_than : string -> string -> bool
(** [file_newer_than file_a file_b] returns true if [file_a] is
newer than [file_b]. Note that if [file_a] does not exist, it
- returns false. If [file_b] does not exist, it is an error. *)
+ returns false. If [file_b] does not exist, it is an error.
+
+ There is also a goal version of this function. *)
val more_recent : string list -> string list -> bool
(** [more_recent objects sources] expresses the [make] relationship:
Note that both parameters are lists (since in [make] you can
have a list of source files and a list of object files). If you
don't want a list, pass a single-element list containing the
- single the object/source file. *)
+ single the object/source file.
+
+ There is also a goal version of this function. *)
val url_exists : string -> bool
(** The URL is tested to see if it exists.
- This function also exists as a goal. Writing:
- {v require (url_exists "http://example.com");}
- will die unless the given URL exists. *)
+ There is also a goal version of this function. *)
+
+val file_contains_string : string -> string -> bool
+ (** [file_contains_string filename str] checks if the named file
+ contains the given substring [str].
+
+ There is also a goal version of this function. *)
+
+val url_contains_string : string -> string -> bool
+ (** [url_contains_string url str] downloads the URL and checks
+ whether the content contains the given substring [str].
+
+ There is also a goal version of this function. *)
+
(** {2 Shell}
val goal_file_newer_than : string -> string -> unit
val goal_more_recent : string list -> string list -> unit
val goal_url_exists : string -> unit
+val goal_file_contains_string : string -> string -> unit
+val goal_url_contains_string : string -> string -> unit
val goal_memory_exists : string -> unit
(* A single call to this function is added by the 'goaljobs' script.