#pragma once #include #include #include // What kind of value an argument holds (drives tab completion). enum class ArgKind { None, Task, Account, AccountOrDash, AccountOrStatus, Status, Visibility, TaskLevel, AccountLevel, File, Editor }; struct CommandSpec { std::string key; // e.g. "tsk add" std::string usage; // e.g. "tsk add [acc] [status]" std::string help; std::size_t minArgs = 0; std::size_t maxArgs = 0; std::vector argKinds; };