Catala_utils.FileSourceUtility functions used for file manipulation.
Runs the given function with the provided file opened, ensuring it is properly closed afterwards. May raise just as open_out.
Runs the given function with the provided file opened, ensuring it is properly closed afterwards. May raise just as open_in.
with_formatter_of_out_channel oc f creates an flushes the formatter used in f from the given out_channel oc.
with_formatter_of_file filename f manages the formatter created from the file filename used in f -- i.e. closes the corresponding out_channel and flushes the formatter.
with_formatter_of_opt_file filename_opt f manages the formatter created from the file filename_opt if there is some (see with_formatter_of_file), otherwise, uses the Format.std_formatter.
val get_out_channel :
source_file:Cli.input_src ->
output_file:t option ->
?ext:string ->
unit ->
t option * ((out_channel -> 'a) -> 'a)get_output ~source_file ~output_file ?ext () returns the inferred filename and its corresponding with_out_channel function. If the output_file is equal to Some "-" returns a wrapper around stdout.
val get_formatter_of_out_channel :
source_file:Cli.input_src ->
output_file:t option ->
?ext:string ->
unit ->
t option * ((Format.formatter -> 'a) -> 'a)get_output_format ~source_file ~output_file ?ext () returns the inferred filename and its corresponding with_formatter_of_out_channel function. If the output_file is equal to Some "-" returns a wrapper around stdout.
Like Filename.temp_file, but registers the file for deletion at program exit unless Cli.debug_flag is set.
Creates a temp file (with prefix and suffix like temp_file, optionally with the given contents, for the lifetime of the supplied function, then remove it unconditionally
process_out cmd args executes the given command with the specified arguments, and returns the stdout of the process as a string. check_exit is called on the return code of the sub-process, the default is to fail on anything but 0.
Checks if the given directory exists and returns it normalised (as per Unix.realpath).
Returns its argument if it exists and is a plain file, None otherwise. Does not do resolution like check_directory.
Resolves a command:
t is a plain name, resolve in PATHt is relative, returns its absolute patht was not foundFilename.concat: Sugar to allow writing File.("some" / "relative" / "path"). As an exception, if the lhs is ., returns the rhs unchanged.
Extension replacement: chops the given filename extension, and replaces it with the given one (which shouldn't contain a dot)
Empty elements or current-directory (".") are skipped in the resulting list
Formats a filename in a consistent style, with double-quotes and color (when the output supports)
Recursively scans a directory for files. Directories or files matching ".*" or "_*" are ignored. Unreadable files or subdirectories are ignored with a debug message. If t is a plain file, scan just that non-recursively.
The matching results are returned grouped by directory, case-insensitively ordered by filename, as a list of non-empty subdirs and a list of extracted items.