feat!: CLI init
- Added CLI, does not perform any action now, but accepts arguments correctly BREAKING CHANGE: Removed main.rs file
This commit is contained in:
parent
f5180a559b
commit
119b7bce9c
4 changed files with 117 additions and 4 deletions
95
src/bin/cli.rs
Normal file
95
src/bin/cli.rs
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
use std::path::PathBuf;
|
||||
|
||||
use clap::{Parser,Subcommand,Args,ValueEnum};
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(version, about, long_about = None)]
|
||||
#[command(propagate_version = true)]
|
||||
struct Cli {
|
||||
/// Path to config
|
||||
#[arg(short, long)]
|
||||
config: PathBuf,
|
||||
/// Object to make operation on
|
||||
#[command(subcommand)]
|
||||
command: Objects,
|
||||
}
|
||||
|
||||
#[derive(Subcommand)]
|
||||
enum Objects {
|
||||
/// Operations on the quests
|
||||
#[command(subcommand)]
|
||||
Quest(QuestCommands)
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
|
||||
enum QuestDifficulty {
|
||||
/// Easy quest
|
||||
Easy,
|
||||
/// Normal quest
|
||||
Normal,
|
||||
/// Hard quest
|
||||
Hard,
|
||||
/// Special case of hard quests.
|
||||
Secret
|
||||
}
|
||||
|
||||
#[derive(Subcommand)]
|
||||
enum QuestCommands {
|
||||
/// List available quests
|
||||
List(QuestListArgs),
|
||||
/// Create new quest and automatically assign it id
|
||||
Create(QuestCreateArgs),
|
||||
/// Update existing quest
|
||||
Update(QuestUpdateArgs),
|
||||
/// Delete quest
|
||||
Delete(QuestDeleteArgs),
|
||||
}
|
||||
|
||||
#[derive(Args)]
|
||||
struct QuestListArgs {
|
||||
/// Only list id and name of the quest
|
||||
#[arg(short, long)]
|
||||
short: bool
|
||||
}
|
||||
|
||||
#[derive(Args)]
|
||||
struct QuestCreateArgs {
|
||||
/// Difficulty of the quest
|
||||
#[arg(value_enum)]
|
||||
difficulty: QuestDifficulty,
|
||||
/// Reward for the quest
|
||||
reward: u32,
|
||||
/// Name of the quest
|
||||
name: String,
|
||||
/// Visible description of the quest
|
||||
description: String,
|
||||
/// Answer for the quest for admins
|
||||
answer: String
|
||||
}
|
||||
|
||||
#[derive(Args)]
|
||||
struct QuestUpdateArgs {
|
||||
/// Id of the quest to update
|
||||
id: u16,
|
||||
/// Difficulty of the quest
|
||||
#[arg(value_enum)]
|
||||
difficulty: QuestDifficulty,
|
||||
/// Reward for the quest
|
||||
reward: u32,
|
||||
/// Name of the quest
|
||||
name: String,
|
||||
/// Visible description of the quest
|
||||
description: String,
|
||||
/// Answer for the quest for admins
|
||||
answer: String
|
||||
}
|
||||
|
||||
#[derive(Args)]
|
||||
struct QuestDeleteArgs {
|
||||
/// Id of the quest to delete
|
||||
id: u16
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _cli = Cli::parse();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue