Homebrew bottle builder and tap manager for OCaml monorepos
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

bottler update: only upgrade already-installed binaries

+14 -8
+14 -8
bin/cmd_update.ml
··· 17 17 let tap_name = Homebrew.tap_name config in 18 18 let status = Sys.command (Fmt.str "brew update") in 19 19 if status <> 0 then Fmt.epr "Warning: brew update failed (exit %d)@." status; 20 - (* Upgrade each binary *) 20 + (* Only upgrade binaries that are already installed *) 21 + let installed = 22 + List.filter 23 + (fun (b : Homebrew.binary) -> 24 + let formula = Fmt.str "%s/%s" tap_name b.name in 25 + Sys.command (Fmt.str "brew list %s >/dev/null 2>&1" formula) = 0) 26 + binaries 27 + in 28 + if installed = [] then ( 29 + Fmt.pr "No installed binaries to upgrade.@."; 30 + exit 0); 21 31 List.iter 22 32 (fun (b : Homebrew.binary) -> 23 33 let formula = Fmt.str "%s/%s" tap_name b.name in 24 34 Fmt.pr "Upgrading %s...@." b.name; 25 - let status = Sys.command (Fmt.str "brew upgrade %s 2>&1" formula) in 26 - if status <> 0 then 27 - (* Try install if not installed yet *) 28 - let status = Sys.command (Fmt.str "brew install %s 2>&1" formula) in 29 - if status <> 0 then Fmt.epr " Failed to upgrade/install %s@." b.name) 30 - binaries; 31 - Fmt.pr "Done.@." 35 + ignore (Sys.command (Fmt.str "brew upgrade %s" formula))) 36 + installed; 37 + Fmt.pr "Done. %d binaries upgraded.@." (List.length installed) 32 38 33 39 let cmd = 34 40 let doc = "Upgrade all bottled binaries via brew." in