summaryrefslogtreecommitdiffstats
path: root/perl_checker.src/perl_checker.ml
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2002-12-06 16:39:02 +0000
committerPascal Rigaux <pixel@mandriva.com>2002-12-06 16:39:02 +0000
commit4a1099012a04e35b54a5e067294fecddaa3d4cf7 (patch)
tree0257375f6db1f5dc10afd63770cda8235e7ecd44 /perl_checker.src/perl_checker.ml
parent669271fe5214a623b388c801d3f6ac0ae35d2bad (diff)
downloadperl_checker-4a1099012a04e35b54a5e067294fecddaa3d4cf7.tar
perl_checker-4a1099012a04e35b54a5e067294fecddaa3d4cf7.tar.gz
perl_checker-4a1099012a04e35b54a5e067294fecddaa3d4cf7.tar.bz2
perl_checker-4a1099012a04e35b54a5e067294fecddaa3d4cf7.tar.xz
perl_checker-4a1099012a04e35b54a5e067294fecddaa3d4cf7.zip
- perl_checker: print on stdout, not stderr
- perl_checker: add option --restrict-to-files (mainly for perl_checko the Clean Keeper)
Diffstat (limited to 'perl_checker.src/perl_checker.ml')
-rw-r--r--perl_checker.src/perl_checker.ml17
1 files changed, 12 insertions, 5 deletions
diff --git a/perl_checker.src/perl_checker.ml b/perl_checker.src/perl_checker.ml
index dfa8061..9d88c6c 100644
--- a/perl_checker.src/perl_checker.ml
+++ b/perl_checker.src/perl_checker.ml
@@ -26,13 +26,13 @@ let findfile dirs f = List.find Sys.file_exists (List.map (fun dir -> dir ^ "/"
let rec parse_file state file =
try
- if !Flags.verbose then prerr_endline ("checking " ^ file) ;
+ if !Flags.verbose then print_endline_flush ("checking " ^ file) ;
let channel = Unix.open_process_in (Printf.sprintf "expand \"%s\"" file) in
let lexbuf = Lexing.from_channel channel in
try
Info.start_a_new_file file ;
let tokens = Lexer.get_token Lexer.token lexbuf in
- (*let _ = Unix.close_process_in channel in*)
+ let _ = Unix.close_process_in channel in
let t = Parser_helper.parse_tokens Parser.prog tokens (Some lexbuf) in
let packages, required_packages = get_global_info_from_package t in
List.fold_left (fun (required_packages, state) package ->
@@ -41,7 +41,7 @@ let rec parse_file state file =
List.map (fun (s, (_, pos)) -> s, pos) package.uses @ required_packages, state
) (required_packages, state) packages
with Failure s -> (
- prerr_endline s ;
+ print_endline_flush s ;
exit 1
)
with
@@ -71,19 +71,26 @@ let rec parse_required_packages state = function
let parse_options =
let args_r = ref [] in
+ let restrict_to_files = ref false in
let options = [
"-v", Arg.Set Flags.verbose, " be verbose" ;
"-q", Arg.Set Flags.quiet, " be quiet" ;
+ "--restrict-to-files", Arg.Set restrict_to_files, " only display warnings concerning the file(s) given on command line" ;
] in
let usage = "Usage: perl_checker [-v] [-q] <files>\nOptions are:" in
Arg.parse options (lpush args_r) usage;
- let args = if !args_r = [] then ["../t.pl"] else !args_r in
- let required_packages, state = collect_withenv parse_file default_state args in
+ let files = if !args_r = [] then ["../t.pl"] else !args_r in
+ let required_packages, state = collect_withenv parse_file default_state files in
+ if !restrict_to_files then Common.print_endline_flush_quiet := true ;
let state = parse_required_packages state required_packages in
+ if !restrict_to_files then Common.print_endline_flush_quiet := false ;
let l = List.map snd state.per_package in
(* HACK: skip ignored_packages. Some package may have appeared in ignored_packages due to the xs bootstrap hack *)
let l = List.filter (fun pkg -> not (List.mem pkg.package_name !ignored_packages)) l in
+
+ let l = if !restrict_to_files then List.filter (fun pkg -> List.mem pkg.file_name files) l else l in
+
List.iter (check_tree state) l