mirror of
https://github.com/timvisee/ffsend.git
synced 2025-10-03 09:39:15 +02:00
105 lines
3.2 KiB
Rust
105 lines
3.2 KiB
Rust
use clap::{App, Arg, SubCommand};
|
|
|
|
use crate::cmd::arg::{
|
|
ArgDownloadLimit, ArgExpiryTime, ArgGenPassphrase, ArgHost, ArgPassword, CmdArg,
|
|
};
|
|
|
|
/// The upload command definition.
|
|
pub struct CmdUpload;
|
|
|
|
impl CmdUpload {
|
|
pub fn build<'a, 'b>() -> App<'a, 'b> {
|
|
// Build the subcommand
|
|
#[allow(unused_mut)]
|
|
let mut cmd = SubCommand::with_name("upload")
|
|
.about("Upload files")
|
|
.visible_alias("u")
|
|
.visible_alias("up")
|
|
.arg(
|
|
Arg::with_name("FILE")
|
|
.help("The file(s) to upload")
|
|
.required(true)
|
|
.multiple(true),
|
|
)
|
|
.arg(ArgPassword::build().help("Protect the file with a password"))
|
|
.arg(ArgGenPassphrase::build())
|
|
.arg(ArgDownloadLimit::build())
|
|
.arg(ArgExpiryTime::build())
|
|
.arg(ArgHost::build())
|
|
.arg(
|
|
Arg::with_name("name")
|
|
.long("name")
|
|
.short("n")
|
|
.alias("file")
|
|
.alias("f")
|
|
.value_name("NAME")
|
|
.help("Rename the file being uploaded"),
|
|
)
|
|
.arg(
|
|
Arg::with_name("open")
|
|
.long("open")
|
|
.short("o")
|
|
.help("Open the share link in your browser"),
|
|
);
|
|
|
|
// Optional archive support
|
|
#[cfg(feature = "archive")]
|
|
{
|
|
cmd = cmd.arg(
|
|
Arg::with_name("archive")
|
|
.long("archive")
|
|
.short("a")
|
|
.alias("arch")
|
|
.help("Archive the upload in a single file"),
|
|
)
|
|
}
|
|
|
|
// Optional clipboard support
|
|
#[cfg(feature = "clipboard")]
|
|
{
|
|
cmd = cmd
|
|
.arg(
|
|
Arg::with_name("copy")
|
|
.long("copy")
|
|
.short("c")
|
|
.help("Copy the share link to your clipboard")
|
|
.conflicts_with("copy-cmd"),
|
|
)
|
|
.arg(
|
|
Arg::with_name("copy-cmd")
|
|
.long("copy-cmd")
|
|
.alias("copy-command")
|
|
.short("C")
|
|
.help("Copy the ffsend download command to your clipboard")
|
|
.conflicts_with("copy"),
|
|
);
|
|
}
|
|
|
|
// Optional url shortening support
|
|
#[cfg(feature = "urlshorten")]
|
|
{
|
|
cmd = cmd.arg(
|
|
Arg::with_name("shorten")
|
|
.long("shorten")
|
|
.alias("short")
|
|
.alias("url-shorten")
|
|
.short("S")
|
|
.help("Shorten share URLs with a public service"),
|
|
)
|
|
}
|
|
|
|
// Optional qrcode support
|
|
#[cfg(feature = "qrcode")]
|
|
{
|
|
cmd = cmd.arg(
|
|
Arg::with_name("qrcode")
|
|
.long("qrcode")
|
|
.alias("qr")
|
|
.short("Q")
|
|
.help("Print a QR code for the share URL"),
|
|
)
|
|
}
|
|
|
|
cmd
|
|
}
|
|
}
|