Use closure names, not ids for CreateCl
[hiphop-php.git] / hphp / hack / scripts / gen_index.ml
blobb271bb38e243c09011aee0b601f23fe9c32f9c6e
1 (*
2 * Copyright (c) 2015, Facebook, Inc.
3 * All rights reserved.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
8 *)
10 #use "scripts/utils.ml"
12 let get_idx =
13 let idx = ref 100 in
14 fun () -> incr idx; !idx
16 let rec iter rc dir =
17 let files = Sys.readdir dir in
18 let index_file = Filename.concat dir "INDEX" in
19 let index = open_out index_file in
20 Array.iter
21 (fun name ->
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);
34 end)
35 files;
36 close_out index;
37 index_file, Digest.file index_file
39 let () =
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);
46 close_out rc;
47 let do_copy =
48 not (Sys.file_exists out_file) ||
49 string_of_file out_file <> string_of_file temp_file in
50 if do_copy then begin
51 if (Sys.file_exists out_file) then Sys.remove out_file;
52 Sys.rename temp_file out_file
53 end