mirror of
https://github.com/comby-tools/comby.git
synced 2024-10-26 13:19:23 +03:00
Error on invalid matcher option
This commit is contained in:
parent
e695d73082
commit
69b9987df8
@ -715,11 +715,8 @@ let all : (module Types.Matcher.S) list =
|
||||
; (module Generic)
|
||||
]
|
||||
|
||||
let select_with_extension extension : (module Types.Matcher.S) =
|
||||
let select_with_extension extension : (module Types.Matcher.S) option =
|
||||
List.find all ~f:(fun (module M) -> List.exists M.extensions ~f:((=) extension))
|
||||
|> function
|
||||
| Some matcher -> matcher
|
||||
| None -> (module Generic)
|
||||
|
||||
let create
|
||||
Types.Syntax.
|
||||
|
21
src/main.ml
21
src/main.ml
@ -4,12 +4,6 @@ open Hack_parallel
|
||||
|
||||
open Pipeline.Command_configuration
|
||||
|
||||
type json_result =
|
||||
{ matches : Match.t list
|
||||
; source : string
|
||||
}
|
||||
[@@deriving yojson]
|
||||
|
||||
let verbose_out_file = "/tmp/comby.out"
|
||||
|
||||
let debug =
|
||||
@ -32,7 +26,16 @@ let select_matcher custom_matcher override_matcher configuration =
|
||||
Format.eprintf "%s@." error;
|
||||
exit 1
|
||||
else if Option.is_some override_matcher then
|
||||
Matchers.select_with_extension (Option.value_exn override_matcher), None
|
||||
let matcher_override = Option.value_exn override_matcher in
|
||||
let matcher =
|
||||
match Matchers.select_with_extension matcher_override with
|
||||
| Some matcher -> matcher
|
||||
| None when matcher_override <> ".generic" ->
|
||||
Format.eprintf "The matcher %S is not supported. See -list for supported matchers@." matcher_override;
|
||||
exit 1
|
||||
| None -> (module Matchers.Generic)
|
||||
in
|
||||
matcher, None
|
||||
else
|
||||
let extension =
|
||||
match configuration.file_filters with
|
||||
@ -42,7 +45,9 @@ let select_matcher custom_matcher override_matcher configuration =
|
||||
| _, Some extension -> "." ^ extension
|
||||
| extension, None -> "." ^ extension
|
||||
in
|
||||
Matchers.select_with_extension extension, Some extension
|
||||
match Matchers.select_with_extension extension with
|
||||
| Some matcher -> matcher, Some extension
|
||||
| None -> (module Matchers.Generic), Some extension
|
||||
|
||||
let paths_with_file_size paths =
|
||||
List.map paths ~f:(fun path ->
|
||||
|
@ -38,7 +38,11 @@ let perform_match request =
|
||||
>>| function
|
||||
| Ok ({ source; match_template; rule; language; id } as request) ->
|
||||
if debug then Format.printf "Received %s@." (Yojson.Safe.pretty_to_string (In.match_request_to_yojson request));
|
||||
let matcher = Matchers.select_with_extension language in
|
||||
let matcher =
|
||||
match Matchers.select_with_extension language with
|
||||
| Some matcher -> matcher
|
||||
| None -> (module Matchers.Generic)
|
||||
in
|
||||
let run ?rule () =
|
||||
let configuration = Configuration.create ~match_kind:Fuzzy () in
|
||||
Pipeline.timed_run matcher ?rule ~configuration ~template:match_template ~source ()
|
||||
@ -64,7 +68,11 @@ let perform_rewrite request =
|
||||
>>| function
|
||||
| Ok ({ source; match_template; rewrite_template; rule; language; substitution_kind; id } as request) ->
|
||||
if debug then Format.printf "Received %s@." (Yojson.Safe.pretty_to_string (In.rewrite_request_to_yojson request));
|
||||
let matcher = Matchers.select_with_extension language in
|
||||
let matcher =
|
||||
match Matchers.select_with_extension language with
|
||||
| Some matcher -> matcher
|
||||
| None -> (module Matchers.Generic)
|
||||
in
|
||||
let source_substitution, substitute_in_place =
|
||||
match substitution_kind with
|
||||
| "newline_separated" -> None, false
|
||||
|
@ -836,3 +836,35 @@ let ()
|
||||
[%expect_exact {|3 matches
|
||||
WARNING: -count only works with -match-only. Performing -match-only -count.
|
||||
|}]
|
||||
|
||||
let%expect_test "unrecognized_matcher" =
|
||||
let source = {|dont care|} in
|
||||
let match_template = "dont care" in
|
||||
let rewrite_template = "dont care" in
|
||||
let command_args =
|
||||
Format.sprintf "-stdin '%s' '%s' -matcher invalid"
|
||||
match_template rewrite_template
|
||||
in
|
||||
let command = Format.sprintf "%s %s" binary_path command_args in
|
||||
read_expect_stdin_and_stdout command source
|
||||
|> print_string;
|
||||
[%expect_exact {|The matcher "invalid" is not supported. See -list for supported matchers
|
||||
|}]
|
||||
|
||||
let%expect_test "generic_matcher_ok" =
|
||||
let source = {|dont care|} in
|
||||
let match_template = "dont care" in
|
||||
let rewrite_template = "blah" in
|
||||
let command_args =
|
||||
Format.sprintf "-stdin '%s' '%s' -matcher .generic"
|
||||
match_template rewrite_template
|
||||
in
|
||||
let command = Format.sprintf "%s %s" binary_path command_args in
|
||||
read_expect_stdin_and_stdout command source
|
||||
|> print_string;
|
||||
[%expect_exact {|[0;31m------ [0m[0;1m/dev/null[0m
|
||||
[0;32m++++++ [0m[0;1m/dev/null[0m
|
||||
[0;100;30m@|[0m[0;1m-1,1 +1,1[0m ============================================================
|
||||
[0;41;30m-|[0m[0m[0;31mdont care[0m[0m
|
||||
[0;42;30m+|[0m[0m[0;32mblah[0m[0m
|
||||
|}]
|
||||
|
Loading…
Reference in New Issue
Block a user