From 13b7ce9a193a0e4f266a2242ea19bbbb57a47eb0 Mon Sep 17 00:00:00 2001 From: Breadway Date: Sun, 7 Jun 2026 08:53:39 +0800 Subject: [PATCH] fix: strip arch suffix on install, fix doubled org in github_url - bakery: strip -x86_64 / -aarch64 / -arm64 / -armv7 suffix when placing binary so `breadcrumbs-x86_64` installs as `breadcrumbs` - gen-index.sh: GH_BASE was "github.com/Breadway" but repo slugs already include the org, producing doubled paths; change to "github.com" Co-Authored-By: Claude Sonnet 4.6 --- bakery/src/install.rs | 15 +++++++++++++-- scripts/gen-index.sh | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) 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".