File tree 5 files changed +23
-9
lines changed
5 files changed +23
-9
lines changed Original file line number Diff line number Diff line change @@ -8,15 +8,16 @@ open Dune_deps
8
8
9
9
type config = {
10
10
roots : string list ;
11
+ exclude : string list ;
11
12
no_exe : bool ;
12
13
no_ext : bool ;
13
14
deps : string list ;
14
15
revdeps : string list ;
15
16
}
16
17
17
- let optimistic_run {roots; no_exe; no_ext; deps; revdeps} =
18
+ let optimistic_run {roots; exclude; no_exe; no_ext; deps; revdeps} =
18
19
let graph =
19
- Find. find_dune_files roots
20
+ Find. find_dune_files roots ~exclude
20
21
|> Dune. load_files
21
22
in
22
23
let graph =
@@ -57,6 +58,15 @@ let roots_term =
57
58
in
58
59
Arg. value (Arg. pos_all Arg. file [" ." ] info)
59
60
61
+ let exclude_term =
62
+ let info =
63
+ Arg. info [" exclude" ; " x" ]
64
+ ~docv: " ROOT"
65
+ ~doc: " Ignore folder or file $(docv) when scanning the file tree \
66
+ for 'dune' files."
67
+ in
68
+ Arg. value (Arg. opt_all Arg. string [] info)
69
+
60
70
let no_exe_term =
61
71
let info =
62
72
Arg. info [" no-exe" ]
@@ -109,14 +119,15 @@ let revdeps_term =
109
119
Arg. value (Arg. opt_all Arg. string [] info)
110
120
111
121
let cmdline_term =
112
- let combine roots no_exe no_ext hourglass deps revdeps =
122
+ let combine roots exclude no_exe no_ext hourglass deps revdeps =
113
123
let deps, revdeps =
114
124
(deps @ hourglass), (revdeps @ hourglass)
115
125
in
116
- { roots; no_exe; no_ext; deps; revdeps }
126
+ { roots; exclude; no_exe; no_ext; deps; revdeps }
117
127
in
118
128
Term. (const combine
119
129
$ roots_term
130
+ $ exclude_term
120
131
$ no_exe_term
121
132
$ no_ext_term
122
133
$ hourglass_term
Original file line number Diff line number Diff line change @@ -61,8 +61,9 @@ let find ~accept_file_name ~accept_dir_name visit_tracker root =
61
61
Excludes '_build' folders but doesn't honor exclusion rules specified
62
62
in dune files with (dirs ... \ exclude_me).
63
63
*)
64
- let find_dune_files roots =
64
+ let find_dune_files ~ exclude roots =
65
65
let visit_tracker = create_visit_tracker () in
66
+ List. iter visit_tracker.mark_visited exclude;
66
67
List. fold_left (fun acc root ->
67
68
find
68
69
~accept_file_name: (fun name -> name = " dune" )
Original file line number Diff line number Diff line change @@ -14,9 +14,9 @@ test: output
14
14
15
15
.PHONY : output
16
16
output :
17
- ./dune-deps proj extra-proj > proj.dot
18
- ./dune-deps proj extra-proj --no-exe > proj-no-exe.dot
19
- ./dune-deps proj extra-proj --no-ext > proj-no-ext.dot
17
+ ./dune-deps proj extra-proj -x extra-proj/exclude-me > proj.dot
18
+ ./dune-deps proj --no-exe > proj-no-exe.dot
19
+ ./dune-deps proj --no-ext > proj-no-ext.dot
20
20
./dune-deps proj --hourglass lib5 -h lib3 > proj-hourglass.dot
21
21
./dune-deps proj --deps lib3 --revdeps lib5 > proj-deps.dot
22
22
Original file line number Diff line number Diff line change
1
+ (library
2
+ (public_name exclude-me)
3
+ )
Original file line number Diff line number Diff line change 1
1
digraph {
2
- "exe:extra-proj/dune:0" [label="extra",shape=diamond]
3
2
"exe:proj/bar/test/dune:0" [label="test<bar/test>",shape=diamond]
4
3
"exe:proj/foo/test/dune:0" [label="test<foo/test>",shape=diamond]
5
4
"exe:proj/dune:10" [label="lib-or-exe",shape=diamond]
You can’t perform that action at this time.
0 commit comments