namespace impeller {
namespace compiler {

struct Switches {
  TargetPlatform target_platform = TargetPlatform::kUnknown;
  std::shared_ptr<fml::UniqueFD> working_directory;
  std::vector<IncludeDir> include_directories;
  std::string source_file_name;
  std::string sl_file_name;
  std::string spirv_file_name;
  std::string reflection_json_name;
  std::string reflection_header_name;
  std::string reflection_cc_name;
  std::string depfile_path;
  std::vector<std::string> defines;

  Switches();

  ~Switches();

  Switches(const fml::CommandLine& command_line);

  bool AreValid(std::ostream& explain) const;

  static void PrintHelp(std::ostream& stream);
};

}  // namespace compiler
}  // namespace impeller
