30 lines
560 B
C++
30 lines
560 B
C++
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
// 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 <name> [acc] [status]"
|
|
std::string help;
|
|
std::size_t minArgs = 0;
|
|
std::size_t maxArgs = 0;
|
|
std::vector<ArgKind> argKinds;
|
|
};
|