mirror of
https://github.com/eRgo35/ah.git
synced 2026-02-04 05:16:09 +01:00
find package
This commit is contained in:
27
src/cli.rs
Normal file
27
src/cli.rs
Normal 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,
|
||||
}
|
||||
43
src/main.rs
43
src/main.rs
@@ -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
38
src/packages.rs
Normal 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));
|
||||
}
|
||||
Reference in New Issue
Block a user