This commit is contained in:
parent
6b7b549029
commit
6dddeb9c2e
8 changed files with 91 additions and 17 deletions
23
src/cli.rs
23
src/cli.rs
|
@ -73,7 +73,7 @@ pub struct MoveArgs {
|
|||
#[arg(long)]
|
||||
strict_channel: bool,
|
||||
channel: String,
|
||||
client: Option<String>,
|
||||
clients: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Args)]
|
||||
|
@ -148,17 +148,24 @@ impl MoveArgs {
|
|||
pub fn channel(&self, connection: &mut Telnet) -> Result<Option<Channel>, String> {
|
||||
wrappers::find_channel(connection, "channel_name", &self.channel, self.strict_channel)
|
||||
}
|
||||
pub fn client(&self, connection: &mut Telnet) -> Result<Option<Client>, String> {
|
||||
match &self.client {
|
||||
Some(client) => {
|
||||
wrappers::find_client(connection, "client_nickname", client, self.strict_client)
|
||||
}
|
||||
None => {
|
||||
pub fn clients(&self, connection: &mut Telnet) -> Result<Vec<Client>, String> {
|
||||
match self.clients.is_empty() {
|
||||
true => {
|
||||
match wrappers::find_self(connection) {
|
||||
Ok(client) => Ok(Some(client)),
|
||||
Ok(client) => Ok(vec![client]),
|
||||
Err(msg) => Err(msg)
|
||||
}
|
||||
}
|
||||
false => {
|
||||
let clients = self.clients.iter().map(|client_nickname| {
|
||||
wrappers::find_client(connection, "client_nickname", client_nickname, self.strict_client)
|
||||
.unwrap_or(None)
|
||||
})
|
||||
.filter(|result| result.is_some())
|
||||
.map(|result| result.unwrap())
|
||||
.collect();
|
||||
Ok(clients)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
11
src/main.rs
11
src/main.rs
|
@ -52,7 +52,7 @@ fn main() -> Result<(), Error> {
|
|||
Ok(client) => client,
|
||||
Err(msg) => return Err(make_action_error("find self", msg))
|
||||
};
|
||||
|
||||
|
||||
let channel_name: String = match wrappers::find_channel(&mut connection, "cid", &client.cid.to_string(), true) {
|
||||
Ok(channel) => match channel {
|
||||
Some(channel) => channel.channel_name,
|
||||
|
@ -60,13 +60,13 @@ fn main() -> Result<(), Error> {
|
|||
},
|
||||
Err(msg) => return Err(make_action_error("find self", msg))
|
||||
};
|
||||
|
||||
|
||||
println!("Client: {}", client.client_nickname);
|
||||
println!("Channel: {}", channel_name);
|
||||
println!("Channel ID: {}", client.cid);
|
||||
println!("Client ID: {}", client.clid);
|
||||
}
|
||||
|
||||
|
||||
Commands::Channels(args) => {
|
||||
match wrappers::get_channels(&mut connection, args.spacers) {
|
||||
Ok(channels) => {
|
||||
|
@ -149,9 +149,10 @@ fn main() -> Result<(), Error> {
|
|||
|
||||
Commands::Move(args) => {
|
||||
let channel = result_or_error(args.channel(&mut connection), "channel")?;
|
||||
let client = result_or_error(args.client(&mut connection), "client")?;
|
||||
let clients = args.clients(&mut connection)
|
||||
.map_err(|msg| make_action_error("move clients", msg))?;
|
||||
|
||||
match wrappers::move_client(&mut connection, &channel, &[client]) {
|
||||
match wrappers::move_client(&mut connection, &channel, &clients) {
|
||||
Ok(resp) => println!("Successfully moved client: {}", resp),
|
||||
Err(msg) => {
|
||||
return Err(make_action_error("move client", msg));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue