#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../lib/common.sh" source "$SCRIPT_DIR/../lib/package.sh" # Parse command line arguments APP_NAME="${1:-all}" update_obsidian() { log_info "Updating Obsidian" case "$OS_TYPE" in macos) brew upgrade --cask obsidian || log_warn "Obsidian may already be up to date" ;; debian) local obsidian_url=$(get_latest_github_release_url "obsidianmd/obsidian-releases" "_amd64.deb") install_deb_from_url "$obsidian_url" ;; arch) install_aur obsidian ;; esac log_success "Obsidian updated" } update_chrome() { log_info "Updating Google Chrome" case "$OS_TYPE" in macos) brew upgrade --cask google-chrome || log_warn "Chrome may already be up to date" ;; debian) install_deb_from_url "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" ;; arch) install_aur google-chrome ;; esac log_success "Google Chrome updated" } update_vscodium() { log_info "Updating VSCodium" case "$OS_TYPE" in macos) brew upgrade --cask vscodium || log_warn "VSCodium may already be up to date" ;; debian) update_package_cache install_package codium ;; arch) install_aur vscodium-bin ;; esac log_success "VSCodium updated" } update_1password() { log_info "Updating 1Password" case "$OS_TYPE" in macos) brew upgrade --cask 1password || log_warn "1Password may already be up to date" ;; debian) update_package_cache install_package 1password ;; arch) install_aur 1password ;; esac log_success "1Password updated" } update_todoist() { log_info "Updating Todoist" case "$OS_TYPE" in macos) brew upgrade --cask todoist || log_warn "Todoist may already be up to date" ;; debian) if command_exists snap; then maybe_sudo snap refresh todoist else log_warn "snapd not installed, skipping Todoist" fi ;; arch) install_aur todoist-appimage ;; esac log_success "Todoist updated" } # Main logic case "$APP_NAME" in obsidian) update_obsidian ;; chrome|google-chrome) update_chrome ;; vscodium|codium) update_vscodium ;; 1password) update_1password ;; todoist) update_todoist ;; all) log_info "Updating all applications" update_vscodium update_1password update_obsidian update_chrome update_todoist log_success "All applications updated" ;; *) log_error "Unknown application: $APP_NAME" echo "Usage: $0 [app-name|all]" echo "Available apps: obsidian, chrome, vscodium, 1password, todoist, all" exit 1 ;; esac