54 void parse(std::span<char*> argv);
58 return scriptOption.scripts;
61 return commandOption.commands;
75 : name(n), option(o), phase(p), length(l) {}
77 std::string_view name;
83 std::string_view extension;
84 CLIFileType* fileType;
87 [[nodiscard]]
bool parseFileName(
const std::string& arg,
88 std::span<std::string>& cmdLine);
89 [[nodiscard]] CLIFileType* getFileTypeHandlerForFileName(std::string_view filename)
const;
90 [[nodiscard]]
bool parseOption(
const std::string& arg,
91 std::span<std::string>& cmdLine,
ParsePhase phase);
92 void createMachineSetting();
95 std::vector<OptionData> options;
96 std::vector<FileTypeData> fileTypes;
100 struct HelpOption final : CLIOption {
101 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
102 [[nodiscard]] std::string_view optionHelp()
const override;
105 struct VersionOption final : CLIOption {
106 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
107 [[nodiscard]] std::string_view optionHelp()
const override;
110 struct ControlOption final : CLIOption {
111 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
112 [[nodiscard]] std::string_view optionHelp()
const override;
115 struct ScriptOption final : CLIOption, CLIFileType {
116 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
117 [[nodiscard]] std::string_view optionHelp()
const override;
118 void parseFileType(
const std::string& filename,
119 std::span<std::string>& cmdLine)
override;
120 [[nodiscard]] std::string_view fileTypeCategoryName()
const override;
121 [[nodiscard]] std::string_view fileTypeHelp()
const override;
123 std::vector<std::string> scripts;
126 struct CommandOption final : CLIOption {
127 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
128 [[nodiscard]] std::string_view optionHelp()
const override;
130 std::vector<std::string> commands;
133 struct MachineOption final : CLIOption {
134 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
135 [[nodiscard]] std::string_view optionHelp()
const override;
138 struct SettingOption final : CLIOption {
139 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
140 [[nodiscard]] std::string_view optionHelp()
const override;
143 struct TestConfigOption final : CLIOption {
144 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
145 [[nodiscard]] std::string_view optionHelp()
const override;
148 struct BashOption final : CLIOption {
149 void parseOption(
const std::string& option, std::span<std::string>& cmdLine)
override;
150 [[nodiscard]] std::string_view optionHelp()
const override;
153 struct FileTypeCategoryInfoTopic final : InfoTopic {
154 FileTypeCategoryInfoTopic(InfoCommand& openMSXInfoCommand,
const CommandLineParser& parser);
155 void execute(std::span<const TclObject> tokens, TclObject& result)
const override;
156 [[nodiscard]] std::string help(std::span<const TclObject> tokens)
const override;
158 const CommandLineParser& parser;
160 std::optional<FileTypeCategoryInfoTopic> fileTypeCategoryInfo;
163 CliExtension cliExtension;
165 SaveStateCLI saveStateCLI;
166 CassettePlayerCLI cassettePlayerCLI;
167#if COMPONENT_LASERDISC
168 LaserdiscPlayerCLI laserdiscPlayerCLI;
170 DiskImageCLI diskImageCLI;
171 HDImageCLI hdImageCLI;
172 CDImageCLI cdImageCLI;
174 bool haveConfig =
false;
175 bool haveSettings =
false;