diff --git a/bakery/src/install.rs b/bakery/src/install.rs index 41383f1..2562e4d 100644 --- a/bakery/src/install.rs +++ b/bakery/src/install.rs @@ -12,9 +12,10 @@ pub fn install_package(pkg: &Package, bin_dir: &Path) -> Result<()> { // 1. Download and verify all binaries. let mut binary_names = Vec::new(); for bin in &pkg.binaries { - let dest = bin_dir.join(&bin.name); + let install_name = strip_arch_suffix(&bin.name); + let dest = bin_dir.join(&install_name); fetch_and_place(bin, &dest)?; - binary_names.push(bin.name.clone()); + binary_names.push(install_name.to_string()); } // 2. Scaffold config dir + example file. @@ -240,6 +241,16 @@ fn expand_tilde(path: &str) -> PathBuf { } } +fn strip_arch_suffix(name: &str) -> &str { + const SUFFIXES: &[&str] = &["-x86_64", "-aarch64", "-arm64", "-armv7"]; + for s in SUFFIXES { + if let Some(base) = name.strip_suffix(s) { + return base; + } + } + name +} + fn warn_path_if_needed(bin_dir: &Path) { let path_var = std::env::var("PATH").unwrap_or_default(); let bin_str = bin_dir.to_string_lossy(); diff --git a/scripts/gen-index.sh b/scripts/gen-index.sh index 068219f..f695f56 100644 --- a/scripts/gen-index.sh +++ b/scripts/gen-index.sh @@ -11,7 +11,7 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" DL_DIR="${DL_DIR:-/srv/breadway-dl}" DL_BASE="${DL_BASE:-https://dl.breadway.dev}" -GH_BASE="https://github.com/Breadway" +GH_BASE="https://github.com" OUT="${DL_DIR}/index.json" # Products are read from the registry. Each line is "name repo".