mirror of
https://github.com/chmln/handlr.git
synced 2025-02-17 06:28:39 +01:00
Implement add cmd
This commit is contained in:
parent
7bebc62d51
commit
1ecafc1162
2 changed files with 25 additions and 9 deletions
21
src/main.rs
21
src/main.rs
|
@ -1,5 +1,5 @@
|
|||
use clap::Clap;
|
||||
use error::{Error, Result};
|
||||
use structopt::StructOpt;
|
||||
|
||||
mod common;
|
||||
mod error;
|
||||
|
@ -8,14 +8,14 @@ mod mimeapps;
|
|||
|
||||
pub use common::{DesktopEntry, Handler, Mime};
|
||||
|
||||
#[derive(StructOpt)]
|
||||
#[derive(Clap)]
|
||||
enum Cmd {
|
||||
List,
|
||||
Open {
|
||||
path: String,
|
||||
},
|
||||
Get {
|
||||
#[structopt(long)]
|
||||
#[clap(long)]
|
||||
json: bool,
|
||||
mime: Mime,
|
||||
},
|
||||
|
@ -23,6 +23,10 @@ enum Cmd {
|
|||
mime: Mime,
|
||||
args: Vec<String>,
|
||||
},
|
||||
Add {
|
||||
mime: Mime,
|
||||
handler: Handler,
|
||||
},
|
||||
Set {
|
||||
mime: Mime,
|
||||
handler: Handler,
|
||||
|
@ -30,11 +34,11 @@ enum Cmd {
|
|||
Unset {
|
||||
mime: Mime,
|
||||
},
|
||||
#[structopt(setting = structopt::clap::AppSettings::Hidden)]
|
||||
#[clap(setting = clap::AppSettings::Hidden)]
|
||||
Autocomplete {
|
||||
#[structopt(short)]
|
||||
#[clap(short)]
|
||||
desktop_files: bool,
|
||||
#[structopt(short)]
|
||||
#[clap(short)]
|
||||
mimes: bool,
|
||||
},
|
||||
}
|
||||
|
@ -42,10 +46,13 @@ enum Cmd {
|
|||
fn main() -> Result<()> {
|
||||
let mut apps = mimeapps::MimeApps::read()?;
|
||||
|
||||
match Cmd::from_args() {
|
||||
match Cmd::parse() {
|
||||
Cmd::Set { mime, handler } => {
|
||||
apps.set_handler(mime, handler)?;
|
||||
}
|
||||
Cmd::Add { mime, handler } => {
|
||||
apps.add_handler(mime, handler)?;
|
||||
}
|
||||
Cmd::Launch { mime, args } => {
|
||||
apps.get_handler(&mime)?.launch(args)?;
|
||||
}
|
||||
|
|
|
@ -14,9 +14,18 @@ pub struct MimeApps {
|
|||
}
|
||||
|
||||
impl MimeApps {
|
||||
pub fn set_handler(&mut self, mime: Mime, handler: Handler) -> Result<()> {
|
||||
pub fn add_handler(&mut self, mime: Mime, handler: Handler) -> Result<()> {
|
||||
let handlers = self.default_apps.entry(mime).or_default();
|
||||
handlers.push_front(handler);
|
||||
handlers.push_back(handler);
|
||||
self.save()?;
|
||||
Ok(())
|
||||
}
|
||||
pub fn set_handler(&mut self, mime: Mime, handler: Handler) -> Result<()> {
|
||||
self.default_apps.insert(mime, {
|
||||
let mut handlers = VecDeque::with_capacity(1);
|
||||
handlers.push_back(handler);
|
||||
handlers
|
||||
});
|
||||
self.save()?;
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue