mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
generator: List files generated in a separate file.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -83,6 +83,7 @@ fuse/guestmount
|
||||
fuse/guestmount.1
|
||||
fuse/stamp-guestmount.pod
|
||||
generator/.pod2text.data*
|
||||
generator/files-generated.txt
|
||||
generator/generator
|
||||
generator/stamp-generator
|
||||
guestfish.1
|
||||
|
||||
@@ -52,7 +52,7 @@ SOURCES = \
|
||||
SOURCES_ML = $(filter %.ml,$(SOURCES))
|
||||
OBJECTS = $(SOURCES_ML:.ml=.cmo)
|
||||
|
||||
EXTRA_DIST = $(SOURCES)
|
||||
EXTRA_DIST = $(SOURCES) files-generated.txt
|
||||
|
||||
OCAMLCFLAGS = -warn-error CDEFLMPSUVYZX
|
||||
OCAMLCLIBS = unix.cma str.cma
|
||||
|
||||
@@ -132,11 +132,15 @@ Run it from the top source directory using the command
|
||||
output_to "php/extension/php_guestfs_php.h" generate_php_h;
|
||||
output_to "php/extension/guestfs_php.c" generate_php_c;
|
||||
|
||||
(* Generate the list of files generated -- last. *)
|
||||
printf "generated %d lines of code\n" (get_lines_generated ());
|
||||
let files = List.sort compare (get_files_generated ()) in
|
||||
output_to "generator/files-generated.txt"
|
||||
(fun () -> List.iter (pr "%s\n") files);
|
||||
|
||||
(* Always generate this file last, and unconditionally. It's used
|
||||
* by the Makefile to know when we must re-run the generator.
|
||||
*)
|
||||
let chan = open_out "generator/stamp-generator" in
|
||||
fprintf chan "1\n";
|
||||
close_out chan;
|
||||
|
||||
printf "generated %d lines of code\n" (get_lines_generated ())
|
||||
close_out chan
|
||||
|
||||
@@ -23,9 +23,18 @@ open Printf
|
||||
|
||||
open Generator_utils
|
||||
|
||||
(* 'pr' prints to the current output file. *)
|
||||
(* Output channel, 'pr' prints to this. *)
|
||||
let chan = ref Pervasives.stdout
|
||||
|
||||
(* Number of lines generated. *)
|
||||
let lines = ref 0
|
||||
|
||||
(* Name of each file generated. *)
|
||||
let files = ref []
|
||||
|
||||
(* Print-to-current-output function, used everywhere. It has
|
||||
* printf-like semantics.
|
||||
*)
|
||||
let pr fs =
|
||||
ksprintf
|
||||
(fun str ->
|
||||
@@ -35,6 +44,8 @@ let pr fs =
|
||||
) fs
|
||||
|
||||
let output_to filename k =
|
||||
files := filename :: !files;
|
||||
|
||||
let filename_new = filename ^ ".new" in
|
||||
chan := open_out filename_new;
|
||||
k ();
|
||||
@@ -54,3 +65,6 @@ let output_to filename k =
|
||||
|
||||
let get_lines_generated () =
|
||||
!lines
|
||||
|
||||
let get_files_generated () =
|
||||
List.rev !files
|
||||
|
||||
@@ -30,3 +30,6 @@ val output_to : string -> (unit -> unit) -> unit
|
||||
|
||||
val get_lines_generated : unit -> int
|
||||
(** Return number of lines of code generated. *)
|
||||
|
||||
val get_files_generated : unit -> string list
|
||||
(** Return names of the files that were generated. *)
|
||||
|
||||
Reference in New Issue
Block a user