Skip to content

Commit

Permalink
Refactor CLI args parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
bubelov committed Oct 10, 2024
1 parent 56b98d5 commit 9452867
Show file tree
Hide file tree
Showing 11 changed files with 546 additions and 185 deletions.
120 changes: 120 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ colored_json = "5.0.0"
rusqlite = { version = "0.32.1", features = ["bundled"] }
dirs = "5.0.1"
serde_json = "1.0.128"
clap = { version = "4.5.20", features = ["derive"] }
42 changes: 42 additions & 0 deletions src/command/admin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use crate::{rpc, Result};
use clap::Args;
use serde_json::json;

#[derive(Args)]
pub struct AddAdminArgs {
pub new_admin_name: String,
pub new_admin_password: String,
}

pub fn add_admin(args: &AddAdminArgs) -> Result<()> {
rpc::call(
"add_admin",
json!({"new_admin_name": args.new_admin_name, "new_admin_password": args.new_admin_password}),
)
}

#[derive(Args)]
pub struct AddAllowedActionArgs {
pub admin_name: String,
pub action: String,
}

pub fn add_allowed_action(args: &AddAllowedActionArgs) -> Result<()> {
rpc::call(
"add_allowed_action",
json!({"admin_name": args.admin_name, "action": args.action}),
)
}

#[derive(Args)]
pub struct RemoveAllowedActionArgs {
pub admin_name: String,
pub action: String,
}

pub fn remove_allowed_action(args: &RemoveAllowedActionArgs) -> Result<()> {
rpc::call(
"remove_allowed_action",
json!({"admin_name": args.admin_name, "action": args.action}),
)
}
63 changes: 63 additions & 0 deletions src/command/area.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
use crate::{rpc, Result};
use clap::Args;
use serde_json::json;

#[derive(Args)]
pub struct GetAreaArgs {
pub id: String,
}

pub fn get_area(args: &GetAreaArgs) -> Result<()> {
rpc::call("get_area", json!({"id": args.id}))
}

#[derive(Args)]
pub struct SetAreaTagArgs {
pub id: String,
pub name: String,
pub value: serde_json::Value,
}

pub fn set_area_tag(args: &SetAreaTagArgs) -> Result<()> {
rpc::call(
"set_area_tag",
json!({"id": args.id,"name": args.name, "value": args.value}),
)
}

#[derive(Args)]
pub struct RemoveAreaTagArgs {
pub id: String,
pub tag: String,
}

pub fn remove_area_tag(args: &RemoveAreaTagArgs) -> Result<()> {
rpc::call("remove_area_tag", json!({"id": args.id,"tag": args.tag}))
}

#[derive(Args)]
pub struct SetAreaIconArgs {
pub id: String,
pub icon_base64: String,
pub icon_ext: String,
}

pub fn set_area_icon(args: &SetAreaIconArgs) -> Result<()> {
rpc::call(
"set_area_icon",
json!({"id": args.id,"icon_base64": args.icon_base64,"icon_ext": args.icon_ext}),
)
}

#[derive(Args)]
pub struct GenerateAreasElementsMappingArgs {
pub from_element_id: i64,
pub to_element_id: i64,
}

pub fn generate_areas_elements_mapping(args: &GenerateAreasElementsMappingArgs) -> Result<()> {
rpc::call(
"generate_areas_elements_mapping",
json!({"from_element_id": args.from_element_id,"to_element_id": args.to_element_id}),
)
}
12 changes: 12 additions & 0 deletions src/command/common.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
use crate::{rpc, Result};
use clap::Args;
use serde_json::json;

#[derive(Args)]
pub struct SearchArgs {
pub query: String,
}

pub fn search(args: &SearchArgs) -> Result<()> {
rpc::call("search", json!({"query": args.query}))
}
Loading

0 comments on commit 9452867

Please sign in to comment.