Skip to content

Commit

Permalink
feat: a bit more dog themed
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelessiet committed Nov 17, 2024
1 parent 41c8fc1 commit f0aa8f1
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/command_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub async fn handle_command(args: &[String]) -> Result<()> {

// Check if command exists
if which(&command_name).is_err() {
println!("{} not found. Attempting to install...", command.yellow());
println!("{} not found. Attempting to install 🐕", command.yellow());

// Try to install via homebrew
if let Err(e) = crate::package_manager::install_package(command).await {
Expand Down
9 changes: 4 additions & 5 deletions src/homebrew.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ impl Formula {
println!("No version information available.");
}

println!("{}", "Installing latest version instead.".yellow());
println!("{}", "Installing latest version instead 🐕".yellow());
self.name.clone()
}
} else {
Expand Down Expand Up @@ -143,7 +143,7 @@ pub async fn install_homebrew() -> Result<()> {
anyhow::bail!("Homebrew is required to continue.");
}

println!("Installing Homebrew...");
println!("Installing Homebrew 🐕");

match Platform::current() {
Platform::Windows => {
Expand Down Expand Up @@ -227,7 +227,7 @@ pub async fn install_formula_version(name: &str, version: Option<&str>) -> Resul

// For custom taps, we can install directly
if name.matches('/').count() == 2 {
println!("Installing {} via Homebrew...", name.cyan());
println!("Installing {} via Homebrew 🐕", name.cyan());

let status = Command::new(if cfg!(windows) { "brew.exe" } else { "brew" })
.args(["install", name])
Expand All @@ -244,7 +244,7 @@ pub async fn install_formula_version(name: &str, version: Option<&str>) -> Resul
// Regular formula installation
if let Some(formula) = search_formula(name).await? {
let install_name = formula.get_install_name(version);
println!("Installing {} via Homebrew...", install_name.cyan());
println!("Installing {} via Homebrew 🐕", install_name.cyan());

let status = Command::new(if cfg!(windows) { "brew.exe" } else { "brew" })
.args(["install", &install_name])
Expand All @@ -269,7 +269,6 @@ pub async fn search_formula(name: &str) -> Result<Option<Formula>> {
3 => {
// Format: tap_user/tap_name/formula (e.g., oven-sh/bun/bun)
let tap = format!("{}/{}", parts[0], parts[1]);
let formula_name = parts[2];

// First ensure the tap is added
let tap_status = Command::new(if cfg!(windows) { "brew.exe" } else { "brew" })
Expand Down
17 changes: 8 additions & 9 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,15 @@ mod homebrew;
mod package_manager;
mod platform;

/// Goon: A cross-platform package manager built on top of Homebrew
#[derive(Parser)]
#[command(
name = "bert",
author = "Michael Essiet <[email protected]>",
version = "0.1.0",
about = "A cross-platform package manager built on top of Homebrew",
long_about = "Bert is a package manager that leverages Homebrew's package repository to provide \
cross-platform package management. It automatically handles installation of missing \
commands and manages Homebrew installation. Heavily inspired by Bert Solana's #1 dog."
about = "A friendly cross-platform package assistant built on top of Homebrew",
long_about = "Bert 🐕 is a friendly package assistant that leverages Homebrew's package repository to provide \
cross-platform package management. He automatically handles installation of missing \
commands and manages Homebrew installations. Heavily inspired by Bert Solana's #1 dog Bertram the Pomeranian!"
)]
struct Cli {
#[command(subcommand)]
Expand Down Expand Up @@ -70,7 +69,7 @@ async fn main() -> Result<()> {
Some(Commands::Install { package }) => {
// Parse package name and version
let (name, version) = parse_package_spec(&package);
println!("Installing package: {}", name.cyan());
println!("Installing package: {} 🐕", name.cyan());
if let Some(ver) = version {
println!("Version: {}", ver.cyan());
}
Expand All @@ -80,7 +79,7 @@ async fn main() -> Result<()> {
.with_context(|| format!("Failed to install package: {}", package))?;
}
Some(Commands::Search { query }) => {
println!("Searching for packages matching: {}", query.cyan());
println!("Searching for packages matching: {} 🐕", query.cyan());
if let Some(formula) = homebrew::search_formula(&query).await? {
homebrew::display_package_info(&formula);
} else {
Expand All @@ -89,7 +88,7 @@ async fn main() -> Result<()> {
}
Some(Commands::Update { packages }) => {
if packages.is_empty() {
println!("{}", "Updating Homebrew...".cyan());
println!("{}", "Updating Homebrew 🐕".cyan());
let status = Command::new(if cfg!(windows) { "brew.exe" } else { "brew" })
.arg("update")
.status()?;
Expand All @@ -116,7 +115,7 @@ async fn main() -> Result<()> {
};

for package in packages_to_update {
println!("Updating {}", package.cyan());
println!("Updating {} 🐕", package.cyan());
let status = Command::new(if cfg!(windows) { "brew.exe" } else { "brew" })
.args(["upgrade", &package])
.status()?;
Expand Down
6 changes: 3 additions & 3 deletions src/package_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ pub async fn uninstall_package(name: &str) -> Result<()> {
}

pub async fn install_package(package: &str) -> Result<()> {
println!("Searching for package {}...", package.cyan());
println!("Searching for package {} 🐕", package.cyan());

if let Some(formula) = crate::homebrew::search_formula(package).await? {
println!("Found package: {}", formula.name.green());
Expand All @@ -65,7 +65,7 @@ pub fn get_bin_path() -> PathBuf {
}

pub async fn install_package_version(name: &str, version: Option<&str>) -> Result<()> {
println!("Searching for package {}...", name.cyan());
println!("Searching for package {} 🐕", name.cyan());

if let Some(formula) = crate::homebrew::search_formula(name).await? {
crate::homebrew::display_package_info(&formula);
Expand All @@ -77,7 +77,7 @@ pub async fn install_package_version(name: &str, version: Option<&str>) -> Resul
"Note: This package doesn't have version-specific formulae available.".yellow()
);
println!(
"Installing latest version ({}) instead...",
"Installing latest version ({}) instead 🐕",
formula.versions.stable
);
}
Expand Down

0 comments on commit f0aa8f1

Please sign in to comment.