From 3cdd079e2e92bbec558e0de82a33fd034c243246 Mon Sep 17 00:00:00 2001 From: Andrejus Date: Fri, 27 Mar 2026 16:22:06 +0000 Subject: [PATCH] feat(install): new apps, parallel brew cache, output formatting Add eza, fd, sd, bottom, procs, tealdeer to mise apps. Add || true guards to mise install/use and bat cache to prevent failures from halting the installer. Parallelize brew list --cask/--versions queries with background jobs. Add log_indent helper. Cleaner script section formatting with ruled separators and compact timing output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- install.d/30-mise.sh | 14 ++++++++++---- script/install | 30 ++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/install.d/30-mise.sh b/install.d/30-mise.sh index 3b19319..78e7f2a 100755 --- a/install.d/30-mise.sh +++ b/install.d/30-mise.sh @@ -48,8 +48,8 @@ if [[ "$DOTS_ENV" != "codespaces" ]]; then ) log_info "Installing runtimes..." - MISE_QUIET=1 mise install "${MISE_RUNTIMES[@]}" 2>&1 | log_quote - MISE_QUIET=1 mise use -g "${MISE_RUNTIMES[@]}" 2>&1 | log_quote + MISE_QUIET=1 mise install "${MISE_RUNTIMES[@]}" 2>&1 | log_quote || true + MISE_QUIET=1 mise use -g "${MISE_RUNTIMES[@]}" 2>&1 | log_quote || true fi # Activate mise shims so runtimes (e.g. python3) are available for app installers @@ -62,6 +62,12 @@ typeset -a MISE_APPS=( "zoxide@latest" "ripgrep@latest" "delta@latest" + "eza@latest" + "fd@latest" + "sd@latest" + "bottom@latest" + "ubi:dalance/procs@latest" + "cargo:tealdeer@latest" ) if [[ "$DOTS_ENV" != "codespaces" ]]; then @@ -76,10 +82,10 @@ if [[ "$DOTS_ENV" != "codespaces" ]]; then fi log_info "Installing apps..." -MISE_QUIET=1 mise use -g "${MISE_APPS[@]}" 2>&1 | log_quote +MISE_QUIET=1 mise use -g "${MISE_APPS[@]}" 2>&1 | log_quote || true # Rebuild bat theme cache with mise-installed bat (must match delta's syntect version) -bat cache --build &>/dev/null +bat cache --build &>/dev/null || true if [[ "$DOTS_ENV" != "codespaces" ]]; then # Setup Poetry ZSH completions (XDG compliant) diff --git a/script/install b/script/install index fe0d676..3b6bfe6 100755 --- a/script/install +++ b/script/install @@ -31,9 +31,10 @@ log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } log_error() { echo -e "${RED}[FAIL]${NC} $*"; } log_debug() { echo -e "${TEAL}$*${NC}"; } log_quote() { sed "s/^/ ${GREY}│ /" | sed "s/$/${NC}/"; } +log_indent() { sed "s/^/ │ /"; } # Export log functions -export -f log_info log_pass log_skip log_warn log_error log_debug log_quote +export -f log_info log_pass log_skip log_warn log_error log_debug log_quote log_indent printf "\n\t${TEAL} <<< ${TEAL_BOLD}dots${TEAL} >>> ${NC}\n" printf "\t${GREY}==============${NC}\n\n" @@ -138,10 +139,18 @@ run() { # Cache brew package lists (avoid repeated slow brew queries in install scripts) if [[ "$DOTS_PKG" == "brew" ]]; then log_info "Caching brew package lists..." - export BREW_CASKS=$(brew list --cask 2>/dev/null || true) - export BREW_FORMULAE=$(brew list 2>/dev/null || true) - export BREW_CASK_VERSIONS=$(brew list --cask --versions 2>/dev/null || true) - export BREW_FORMULA_VERSIONS=$(brew list --versions 2>/dev/null || true) + local cask_versions_tmp=$(mktemp) + local formula_versions_tmp=$(mktemp) + brew list --cask --versions 2>/dev/null > "$cask_versions_tmp" & + local cask_pid=$! + brew list --versions 2>/dev/null > "$formula_versions_tmp" & + local formula_pid=$! + wait "$cask_pid" "$formula_pid" 2>/dev/null || true + export BREW_CASK_VERSIONS=$(cat "$cask_versions_tmp") + export BREW_FORMULA_VERSIONS=$(cat "$formula_versions_tmp") + export BREW_CASKS=$(awk '{print $1}' <<< "$BREW_CASK_VERSIONS") + export BREW_FORMULAE=$(awk '{print $1}' <<< "$BREW_FORMULA_VERSIONS") + rm -f "$cask_versions_tmp" "$formula_versions_tmp" fi scripts=("$install_dir"/*.sh) @@ -155,8 +164,14 @@ run() { fi local script_name=$(basename "$script") + local label=" ${script_name} " + local rule_width=40 + local label_len=${#label} + local pad_len=$(( rule_width - label_len - 2 )) + (( pad_len < 2 )) && pad_len=2 + local pad=$(printf '─%.0s' $(seq 1 "$pad_len")) - printf "\n\n${TEAL}<<< ${TEAL_BOLD}$script_name:${NC}\n" + printf "\n${GREY}──${label}${pad}${NC}\n" local start_ns=$(now_ns) source "$script" local end_ns=$(now_ns) @@ -170,8 +185,7 @@ run() { else time_color="$RED" fi - printf "${TEAL}>>> ${TEAL_BOLD}${script_name}, ${NC}" - printf "completed in ${time_color}${execution_ms_formatted}ms${NC}\n" + printf "${GREY}── ${time_color}${execution_ms_formatted}ms${NC}\n" done } log_info "Logging to \"$log_abs_target\""