From 44451e5e920d939ed63ee8942757e90d7188d8ff Mon Sep 17 00:00:00 2001 From: Naz Date: Fri, 25 Jul 2025 15:38:38 +0100 Subject: =?UTF-8?q?=E2=9C=A8feat:=20add=20basic=20CLI=20args=20and=20data?= =?UTF-8?q?=20types=20scaffolding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/args.rs | 29 +++++++++++++++++++++++++++++ src/lib.rs | 7 ++++++- src/types.rs | 20 ++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/args.rs create mode 100644 src/types.rs (limited to 'src') diff --git a/src/args.rs b/src/args.rs new file mode 100644 index 0000000..274bb1e --- /dev/null +++ b/src/args.rs @@ -0,0 +1,29 @@ +use clap::{Args, Parser, Subcommand}; + +/// A command line interface to install AppImages +#[derive(Debug, Parser)] +#[command(version, about, long_about = None)] +pub struct Cli { + #[command(subcommand)] + pub command: Command, +} + +#[derive(Debug, Subcommand)] +pub enum Command { + /// Installs an AppImage + #[command(name = "install", alias = "i")] + Install(InstallArgs), +} + +#[derive(Debug, Args)] +pub struct InstallArgs { + pub appname: String, + + /// Provide a repository slug, or a direct URL to an appimage. + #[arg(long)] + pub from: String, + + /// Name of the executable + #[arg(long)] + pub executable: Option, +} diff --git a/src/lib.rs b/src/lib.rs index 90cee5e..4604c31 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,10 @@ -use std::path::PathBuf; +mod args; +mod types; + +pub use crate::args::*; +pub use crate::types::*; +use std::path::PathBuf; pub fn ndpm_ai_home() -> PathBuf { let home = std::env::var("HOME").expect("HOME not set"); diff --git a/src/types.rs b/src/types.rs new file mode 100644 index 0000000..bd903df --- /dev/null +++ b/src/types.rs @@ -0,0 +1,20 @@ +use serde::Serialize; +use std::path::PathBuf; + +#[derive(Debug, Serialize)] +pub struct AppImage { + pub file_path: PathBuf, + pub executable: String, + pub source: Source, +} + +#[derive(Debug, Serialize)] +pub struct Source { + pub identifier: String, + pub meta: SourceMetadata, +} + +#[derive(Debug, Serialize)] +pub struct SourceMetadata { + pub url: String, +} -- cgit v1.2.3