2 * Copyright (c) 2015, Facebook, Inc.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
10 #use
"scripts/utils.ml"
14 fun () -> incr
idx; !idx
17 let files = Sys.readdir dir
in
18 let index_file = Filename.concat dir
"INDEX" in
19 let index = open_out
index_file in
22 let idx = get_idx () in
23 let file = Filename.concat dir name
in
24 if Sys.is_directory
file then begin
25 Printf.fprintf
index "%d dir %s\n" idx name
;
26 let file, digest
= iter rc
file in
27 Printf.fprintf rc
"%d 256 %s // %s\n" idx
28 file (Digest.to_hex digest
)
29 end else if name
<> "INDEX" then begin
30 let digest = Digest.file file in
31 Printf.fprintf
index "%d file %s\n" idx name
;
32 Printf.fprintf rc
"%d 257 %s // %s\n"
33 idx file (Digest.to_hex
digest);
37 index_file, Digest.file index_file
40 let out_file = Sys.argv
.(1) in
41 let dir = Sys.argv
.(2) in
42 let temp_file = Filename.temp_file "hhi" ".rc" in
43 let rc = open_out
temp_file in
44 let file, digest = iter rc dir in
45 Printf.fprintf
rc "100 256 %s // %s\n" file (Digest.to_hex
digest);
48 not
(Sys.file_exists
out_file) ||
49 string_of_file
out_file <> string_of_file
temp_file in
51 if (Sys.file_exists
out_file) then Sys.remove
out_file;
52 Sys.rename
temp_file out_file