find package

This commit is contained in:
2024-07-24 16:11:33 +02:00
parent d40da30a50
commit 0d0c544088
5 changed files with 169 additions and 43 deletions

27
src/cli.rs Normal file
View File

@@ -0,0 +1,27 @@
use clap::{Parser, Subcommand, Args};
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Option<SubCommands>,
}
#[derive(Subcommand, Debug)]
pub enum SubCommands {
#[command(alias = "i")]
Install(PackageArg),
#[command(alias = "u")]
Upgrade {},
#[command(alias = "s")]
Sync {},
#[command(alias = "r")]
Remove(PackageArg),
#[command(alias = "f")]
Find(PackageArg),
}
#[derive(Args, Debug)]
pub struct PackageArg {
pub package: String,
}

View File

@@ -1,40 +1,17 @@
use clap::{Command, Parser, Subcommand, Args};
use clap::Parser;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Cli {
#[command(subcommand)]
pub command: Option<SubCommands>,
}
#[derive(Subcommand, Debug)]
enum SubCommands {
#[command(alias = "i")]
Install(PackageArg),
#[command(alias = "u")]
Upgrade {},
#[command(alias = "s")]
Sync {},
#[command(alias = "r")]
Remove(PackageArg),
#[command(alias = "f")]
Find(PackageArg),
}
#[derive(Args, Debug)]
struct PackageArg {
package: String,
}
mod cli;
mod packages;
fn main() {
let cli = Cli::parse();
let cli = cli::Cli::parse();
match cli.command {
Some(SubCommands::Install(arg)) => println!("Installing package: {}", arg.package),
Some(SubCommands::Upgrade {}) => todo!(),
Some(SubCommands::Sync {}) => todo!(),
Some(SubCommands::Remove(arg)) => println!("Removing package: {}", arg.package),
Some(SubCommands::Find(arg)) => println!("Looking for package: {}", arg.package),
None => println!("No subcommand was used"),
Some(cli::SubCommands::Install(arg)) => packages::install(&arg.package),
Some(cli::SubCommands::Upgrade {}) => packages::upgrade(),
Some(cli::SubCommands::Sync {}) => packages::sync(),
Some(cli::SubCommands::Remove(arg)) => packages::remove(&arg.package),
Some(cli::SubCommands::Find(arg)) => packages::find(&arg.package),
None => packages::sync(),
}
}

38
src/packages.rs Normal file
View File

@@ -0,0 +1,38 @@
use colored::Colorize;
use std::process::Command;
const PACKAGE_MANAGER: &str = "paru";
pub fn sync() {
println!("{} {}", "::".bold().green(), "Syncing packages...".bold());
todo!();
}
pub fn upgrade() {
println!("{} {}", "::".bold().green(), "Upgrading packages...".bold());
todo!();
}
pub fn install(package: &str) {
println!("{} {}", "::".bold().green(), "Installing packages...".bold());
todo!();
}
pub fn remove(package: &str) {
println!("{} {}", "::".bold().green(), "Removing packages...".bold());
todo!();
}
pub fn find(package: &str) {
println!("{} {}", "::".bold().green(), "Looking for package...".bold());
let output = Command::new(PACKAGE_MANAGER)
.arg("--color")
.arg("always")
.arg("-Ss")
.arg(package)
.output()
.expect("Failed to execute command");
print!("{}", String::from_utf8_lossy(&output.stdout));
}