(*****************************************************************************)
(* Prelude *)
(*****************************************************************************)
(* There is currently no 'semgrep test' subcommand. Tests are run via
 * 'semgrep scan --test ...' but internally it's quite similar to
 * a subcommand.
 *)

(*****************************************************************************)
(* Types *)
(*****************************************************************************)

type conf = {
  target : target_kind;
  ignore_todo : bool;
  (* TODO? do we need those options? people use the JSON output?
   * the playground? and the optimizations and strict?
   *)
  json : bool;
  (* take the whole core_runner_conf? like for validate? *)
  optimizations : bool;
  strict : bool;
}

  alt : we could accept multiple dirs , and multiple files 
  * TODO ? should we restrict the config_str to File or Dir ? 
 
 * TODO? should we restrict the config_str to File or Dir?
 *)
and target_kind =
  | Dir of
      Fpath.t
      * Semgrep_dashdash_config.config_str option (* optional --config *)
  | File of
      Fpath.t * Semgrep_dashdash_config.config_str (* mandatory --config *)
[@@deriving show]

(*****************************************************************************)
(* Entry point *)
(*****************************************************************************)

let run (_conf : conf) : Exit_code.t = failwith "TODO: Test_subcommand.run"

***************************************************************************
 Prelude 
***************************************************************************
 There is currently no 'semgrep test' subcommand. Tests are run via
 * 'semgrep scan --test ...' but internally it's quite similar to
 * a subcommand.
 
***************************************************************************
 Types 
***************************************************************************
 TODO? do we need those options? people use the JSON output?
   * the playground? and the optimizations and strict?
   
 take the whole core_runner_conf? like for validate? 
 optional --config 
 mandatory --config 
***************************************************************************
 Entry point 
***************************************************************************


type conf = {
  target : target_kind;
  ignore_todo : bool;
  json : bool;
  optimizations : bool;
  strict : bool;
}

  alt : we could accept multiple dirs , and multiple files 
  * TODO ? should we restrict the config_str to File or Dir ? 
 
 * TODO? should we restrict the config_str to File or Dir?
 *)
and target_kind =
  | Dir of
      Fpath.t
  | File of
[@@deriving show]


let run (_conf : conf) : Exit_code.t = failwith "TODO: Test_subcommand.run"
