diff --git a/bin/dotfiles-doctor.sh b/bin/dotfiles-doctor.sh index 7b6a615..9ba0b7b 100755 --- a/bin/dotfiles-doctor.sh +++ b/bin/dotfiles-doctor.sh @@ -195,13 +195,13 @@ check_bin_scripts() { "dotfiles-compile.sh" "dotfiles-diff.sh" "dotfiles-doctor.sh" - "dotfiles-stats.sh" - "dotfiles-sync.sh" - "dotfiles-tour.sh" - "dotfiles-update.sh" - "dotfiles-vault.sh" + "dotfiles-stats.sh" + "dotfiles-sync.sh" + "dotfiles-tour.sh" + "dotfiles-update.sh" + "dotfiles-vault.sh" "dotfiles-version.sh" - "dotfiles-profile.sh" + "dotfiles-profile.sh" ) for script in "${scripts[@]}"; do diff --git a/zsh/aliases-extended.zsh b/zsh/aliases-extended.zsh deleted file mode 100644 index b8adeaf..0000000 --- a/zsh/aliases-extended.zsh +++ /dev/null @@ -1,206 +0,0 @@ -# ============================================================================ -# Dotfiles Command Aliases - Extended Version -# ============================================================================ -# Includes all original aliases plus new improvement aliases. -# ============================================================================ - -# Dotfiles directory -_df_dir="${DOTFILES_DIR:-$HOME/.dotfiles}" -_df_bin="$_df_dir/bin" - -# Helper to run dotfiles scripts -_df_run() { - local script="$1" - shift - if [[ -x "$_df_bin/$script" ]]; then - "$_df_bin/$script" "$@" - elif command -v "$script" &>/dev/null; then - "$script" "$@" - else - echo "Error: $script not found" >&2 - return 1 - fi -} - -# ============================================================================ -# Quality of Life Aliases -# ============================================================================ - -alias hist="history" -alias cls="clear" -alias q="exit" - -# ============================================================================ -# Core Dotfiles Commands -# ============================================================================ - -alias dfdir='cd $HOME/.dotfiles' -alias c.='cd $HOME/.dotfiles' - -# Doctor - health check -dfd() { _df_run dotfiles-doctor.sh "$@"; } -doctor() { _df_run dotfiles-doctor.sh "$@"; } -dffix() { _df_run dotfiles-doctor.sh --fix "$@"; } - -# Sync -dfs() { _df_run dotfiles-sync.sh "$@"; } -dfpush() { _df_run dotfiles-sync.sh push "${1:-Dotfiles update $(date '+%Y-%m-%d %H:%M')}"; } -dfpull() { _df_run dotfiles-sync.sh pull "$@"; } -dfstatus() { _df_run dotfiles-sync.sh status "$@"; } - -# Update -dfu() { _df_run dotfiles-update.sh "$@"; } -dfupdate() { _df_run dotfiles-update.sh "$@"; } - -# Version -dfv() { _df_run dotfiles-version.sh "$@"; } -dfversion() { _df_run dotfiles-version.sh "$@"; } - -# Stats / Analytics -dfstats() { _df_run dotfiles-stats.sh "$@"; } -dfanalytics() { _df_run dotfiles-analytics.sh "$@"; } - -# Vault -vault() { _df_run dotfiles-vault.sh "$@"; } -vls() { _df_run dotfiles-vault.sh list "$@"; } -vget() { _df_run dotfiles-vault.sh get "$@"; } -vset() { _df_run dotfiles-vault.sh set "$@"; } - -# Compile -dfcompile() { _df_run dotfiles-compile.sh "$@"; } - -# ============================================================================ -# NEW: Profile & Performance -# ============================================================================ - -dfprofile() { _df_run dotfiles-profile.sh "$@"; } -alias profile='dfprofile' -alias startup-time='dfprofile --quick' - -# ============================================================================ -# NEW: Diff & Audit -# ============================================================================ - -dfdiff() { _df_run dotfiles-diff.sh "$@"; } -dfaudit() { _df_run dotfiles-diff.sh --audit "$@"; } -alias audit='dfaudit' - -# ============================================================================ -# NEW: Tour & First-Run -# ============================================================================ - -dftour() { _df_run dotfiles-tour.sh "$@"; } -alias tour='dftour' -alias quickref='dftour --quick' - -# ============================================================================ -# Quick Edit Aliases -# ============================================================================ - -alias v.zshrc='${EDITOR:-vim} ~/.zshrc' -alias v.conf='${EDITOR:-vim} ~/.dotfiles/dotfiles.conf' -alias v.edit='cd ~/.dotfiles && ${EDITOR:-vim} .' -alias v.alias='${EDITOR:-vim} ~/.dotfiles/zsh/aliases.zsh' -alias v.motd='${EDITOR:-vim} ~/.dotfiles/zsh/functions/motd.zsh' -alias v.theme='${EDITOR:-vim} ~/.dotfiles/zsh/themes/adlee.zsh-theme' - -# NEW: Edit machine config -alias v.machine='${EDITOR:-vim} ~/.dotfiles/machines/${DF_HOSTNAME:-$(hostname -s)}.zsh' - -# ============================================================================ -# Reload Aliases -# ============================================================================ - -alias reload='source ~/.zshrc' -alias rl='source ~/.zshrc' - -# ============================================================================ -# Dotfiles CLI -# ============================================================================ - -dotfiles-cli() { - case "${1:-help}" in - doctor|doc|d) shift; _df_run dotfiles-doctor.sh "$@" ;; - sync|s) shift; _df_run dotfiles-sync.sh "$@" ;; - update|up|u) shift; _df_run dotfiles-update.sh "$@" ;; - version|ver|v) shift; _df_run dotfiles-version.sh "$@" ;; - stats|st) shift; _df_run dotfiles-stats.sh "$@" ;; - analytics|an) shift; _df_run dotfiles-analytics.sh "$@" ;; - vault|vlt) shift; _df_run dotfiles-vault.sh "$@" ;; - compile|comp) shift; _df_run dotfiles-compile.sh "$@" ;; - profile|prof) shift; _df_run dotfiles-profile.sh "$@" ;; - diff|df) shift; _df_run dotfiles-diff.sh "$@" ;; - audit|aud) shift; _df_run dotfiles-diff.sh --audit "$@" ;; - tour|t) shift; _df_run dotfiles-tour.sh "$@" ;; - test) shift; zsh ~/.dotfiles/tests/run-tests.zsh "$@" ;; - edit|e) cd ~/.dotfiles && ${EDITOR:-vim} . ;; - cd) cd ~/.dotfiles ;; - help|--help|-h|*) - cat << 'EOF' -Dotfiles CLI - Extended - -Usage: dotfiles-cli [args] - -Core Commands: - doctor, d Health check (--fix to repair) - sync, s Sync dotfiles across machines - update, u Pull latest and reinstall - version, v Show version info - stats, st Basic shell analytics - vault, vlt Secrets management - compile Compile zsh files for speed - -New Commands: - analytics, an Enhanced shell analytics - profile, prof Startup time profiling - diff, df Show changes and compare - audit, aud Security audit - tour, t Interactive tour / help - test Run test suite - -Navigation: - edit, e Open dotfiles in editor - cd Change to dotfiles directory - -Aliases: dfd, dffix, dfs, dfpush, dfpull, dfu, dfv, dfstats, vault - dfprofile, dfdiff, dfaudit, dftour - -EOF - ;; - esac -} - -alias dfc='dotfiles-cli' - -# ============================================================================ -# System Utilities -# ============================================================================ - -# Use glow for markdown -alias glow='glow -p' -less() { - if command -v glow &>/dev/null && [[ $# -eq 1 && "$1" == *.md ]]; then - glow -p "$1" - else - command less "$@" - fi -} - -# Arch system upgrade with snapper -sys-update() { - local update_date=$(date +"%Y-%m-%d %H:%M") - if command -v snapper &>/dev/null; then - sudo snapper -c root create --description "System Update ${update_date}" --command "sudo pacman -Syu" - else - sudo pacman -Syu - fi - # Update package count for prompt - command -v checkupdates &>/dev/null && export UPDATE_PKG_COUNT=$(checkupdates 2>/dev/null | wc -l) -} - -# ============================================================================ -# Testing -# ============================================================================ - -alias dftest='zsh ~/.dotfiles/tests/run-tests.zsh' -alias test-dotfiles='dftest' diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh index c9fbc11..b8adeaf 100644 --- a/zsh/aliases.zsh +++ b/zsh/aliases.zsh @@ -1,16 +1,14 @@ # ============================================================================ -# Dotfiles Command Aliases +# Dotfiles Command Aliases - Extended Version # ============================================================================ -# Convenient shortcuts for dotfiles management scripts -# -# Source this file in .zshrc (already included by default) +# Includes all original aliases plus new improvement aliases. # ============================================================================ # Dotfiles directory _df_dir="${DOTFILES_DIR:-$HOME/.dotfiles}" _df_bin="$_df_dir/bin" -# Helper to run dotfiles scripts (uses full path with fallback to PATH) +# Helper to run dotfiles scripts _df_run() { local script="$1" shift @@ -20,56 +18,85 @@ _df_run() { "$script" "$@" else echo "Error: $script not found" >&2 - echo "Run the installer: ~/.dotfiles/install.sh" >&2 return 1 fi } -# --- Quality of Life Aliases --- +# ============================================================================ +# Quality of Life Aliases +# ============================================================================ + alias hist="history" +alias cls="clear" +alias q="exit" +# ============================================================================ +# Core Dotfiles Commands +# ============================================================================ -# --- Core Dotfiles Commands --- alias dfdir='cd $HOME/.dotfiles' alias c.='cd $HOME/.dotfiles' -# Note: 'df' not aliased to avoid conflict with disk free utility - # Doctor - health check dfd() { _df_run dotfiles-doctor.sh "$@"; } doctor() { _df_run dotfiles-doctor.sh "$@"; } dffix() { _df_run dotfiles-doctor.sh --fix "$@"; } -# Sync - multi-machine synchronization +# Sync dfs() { _df_run dotfiles-sync.sh "$@"; } -dfsync() { _df_run dotfiles-sync.sh "$@"; } dfpush() { _df_run dotfiles-sync.sh push "${1:-Dotfiles update $(date '+%Y-%m-%d %H:%M')}"; } dfpull() { _df_run dotfiles-sync.sh pull "$@"; } dfstatus() { _df_run dotfiles-sync.sh status "$@"; } -# Update - pull latest and reinstall +# Update dfu() { _df_run dotfiles-update.sh "$@"; } dfupdate() { _df_run dotfiles-update.sh "$@"; } -# Version - check version info -dfv() { _df_run dotfiles-version.sh "$@"; } -dfversion() { _df_run dotfiles-version.sh "$@"; } +# Version +dfv() { _df_run dotfiles-version.sh "$@"; } +dfversion() { _df_run dotfiles-version.sh "$@"; } -# Stats - shell analytics (removed short 'stats' alias to force explicit usage) -dfstats() { _df_run dotfiles-stats.sh "$@"; } -tophist() { _df_run dotfiles-stats.sh --top "$@"; } -suggest() { _df_run dotfiles-stats.sh --suggest "$@"; } +# Stats / Analytics +dfstats() { _df_run dotfiles-stats.sh "$@"; } +dfanalytics() { _df_run dotfiles-analytics.sh "$@"; } -# Vault - secrets management +# Vault vault() { _df_run dotfiles-vault.sh "$@"; } vls() { _df_run dotfiles-vault.sh list "$@"; } vget() { _df_run dotfiles-vault.sh get "$@"; } vset() { _df_run dotfiles-vault.sh set "$@"; } -# Compile - compile zsh files for speed +# Compile dfcompile() { _df_run dotfiles-compile.sh "$@"; } -# --- Quick Edit Aliases --- +# ============================================================================ +# NEW: Profile & Performance +# ============================================================================ + +dfprofile() { _df_run dotfiles-profile.sh "$@"; } +alias profile='dfprofile' +alias startup-time='dfprofile --quick' + +# ============================================================================ +# NEW: Diff & Audit +# ============================================================================ + +dfdiff() { _df_run dotfiles-diff.sh "$@"; } +dfaudit() { _df_run dotfiles-diff.sh --audit "$@"; } +alias audit='dfaudit' + +# ============================================================================ +# NEW: Tour & First-Run +# ============================================================================ + +dftour() { _df_run dotfiles-tour.sh "$@"; } +alias tour='dftour' +alias quickref='dftour --quick' + +# ============================================================================ +# Quick Edit Aliases +# ============================================================================ + alias v.zshrc='${EDITOR:-vim} ~/.zshrc' alias v.conf='${EDITOR:-vim} ~/.dotfiles/dotfiles.conf' alias v.edit='cd ~/.dotfiles && ${EDITOR:-vim} .' @@ -77,73 +104,103 @@ alias v.alias='${EDITOR:-vim} ~/.dotfiles/zsh/aliases.zsh' alias v.motd='${EDITOR:-vim} ~/.dotfiles/zsh/functions/motd.zsh' alias v.theme='${EDITOR:-vim} ~/.dotfiles/zsh/themes/adlee.zsh-theme' -# --- Reload Aliases --- +# NEW: Edit machine config +alias v.machine='${EDITOR:-vim} ~/.dotfiles/machines/${DF_HOSTNAME:-$(hostname -s)}.zsh' + +# ============================================================================ +# Reload Aliases +# ============================================================================ + alias reload='source ~/.zshrc' alias rl='source ~/.zshrc' # ============================================================================ -# Function Wrappers (for tab completion) +# Dotfiles CLI # ============================================================================ -# Dotfiles main command with subcommands dotfiles-cli() { case "${1:-help}" in - doctor|doc|d) shift; _df_run dotfiles-doctor.sh "$@" ;; - sync|s) shift; _df_run dotfiles-sync.sh "$@" ;; - update|up|u) shift; _df_run dotfiles-update.sh "$@" ;; - version|ver|v) shift; _df_run dotfiles-version.sh "$@" ;; - stats|st) shift; _df_run dotfiles-stats.sh "$@" ;; - vault|vlt) shift; _df_run dotfiles-vault.sh "$@" ;; - compile|comp) shift; _df_run dotfiles-compile.sh "$@" ;; - edit|e) cd ~/.dotfiles && ${EDITOR:-vim} . ;; - cd) cd ~/.dotfiles ;; + doctor|doc|d) shift; _df_run dotfiles-doctor.sh "$@" ;; + sync|s) shift; _df_run dotfiles-sync.sh "$@" ;; + update|up|u) shift; _df_run dotfiles-update.sh "$@" ;; + version|ver|v) shift; _df_run dotfiles-version.sh "$@" ;; + stats|st) shift; _df_run dotfiles-stats.sh "$@" ;; + analytics|an) shift; _df_run dotfiles-analytics.sh "$@" ;; + vault|vlt) shift; _df_run dotfiles-vault.sh "$@" ;; + compile|comp) shift; _df_run dotfiles-compile.sh "$@" ;; + profile|prof) shift; _df_run dotfiles-profile.sh "$@" ;; + diff|df) shift; _df_run dotfiles-diff.sh "$@" ;; + audit|aud) shift; _df_run dotfiles-diff.sh --audit "$@" ;; + tour|t) shift; _df_run dotfiles-tour.sh "$@" ;; + test) shift; zsh ~/.dotfiles/tests/run-tests.zsh "$@" ;; + edit|e) cd ~/.dotfiles && ${EDITOR:-vim} . ;; + cd) cd ~/.dotfiles ;; help|--help|-h|*) - echo "Dotfiles CLI" - echo - echo "Usage: dotfiles-cli [args]" - echo - echo "Commands:" - echo " doctor, d Run health check (--fix to auto-repair)" - echo " sync, s Sync dotfiles across machines" - echo " update, u Pull latest and reinstall" - echo " version, v Show version info" - echo " stats, st Shell analytics dashboard" - echo " vault, vlt Secrets management" - echo " compile Compile zsh files for speed" - echo " edit, e Open dotfiles in editor" - echo " cd Change to dotfiles directory" - echo - echo "Aliases:" - echo " dfd, dffix, dfs, dfpush, dfpull, dfu, dfv, dfstats, vault" - echo - echo "Note: 'stats' alias removed - use 'dfstats' instead" + cat << 'EOF' +Dotfiles CLI - Extended + +Usage: dotfiles-cli [args] + +Core Commands: + doctor, d Health check (--fix to repair) + sync, s Sync dotfiles across machines + update, u Pull latest and reinstall + version, v Show version info + stats, st Basic shell analytics + vault, vlt Secrets management + compile Compile zsh files for speed + +New Commands: + analytics, an Enhanced shell analytics + profile, prof Startup time profiling + diff, df Show changes and compare + audit, aud Security audit + tour, t Interactive tour / help + test Run test suite + +Navigation: + edit, e Open dotfiles in editor + cd Change to dotfiles directory + +Aliases: dfd, dffix, dfs, dfpush, dfpull, dfu, dfv, dfstats, vault + dfprofile, dfdiff, dfaudit, dftour + +EOF ;; esac } -# Short alias for the CLI alias dfc='dotfiles-cli' -# Additional quality of life aliases/functions. +# ============================================================================ +# System Utilities +# ============================================================================ -# Use glow to "less" Markdown files: +# Use glow for markdown alias glow='glow -p' less() { - if ! command -v glow &>/dev/null; then - command less "$@" - return - fi - - if [[ $# -eq 1 && "$1" == *.md ]]; then - glow -p "$1" # -p for pager mode (like less) + if command -v glow &>/dev/null && [[ $# -eq 1 && "$1" == *.md ]]; then + glow -p "$1" else command less "$@" fi } -# Arch system upgrade with snapper pre/post +# Arch system upgrade with snapper sys-update() { - local update_date=$(date -d "today" +"%Y-%m-%d %H:%M") - sudo snapper -c root create --description "System Update ${update_date}" --command "sudo pacman -Syu" - _df_check_sys_updates + local update_date=$(date +"%Y-%m-%d %H:%M") + if command -v snapper &>/dev/null; then + sudo snapper -c root create --description "System Update ${update_date}" --command "sudo pacman -Syu" + else + sudo pacman -Syu + fi + # Update package count for prompt + command -v checkupdates &>/dev/null && export UPDATE_PKG_COUNT=$(checkupdates 2>/dev/null | wc -l) } + +# ============================================================================ +# Testing +# ============================================================================ + +alias dftest='zsh ~/.dotfiles/tests/run-tests.zsh' +alias test-dotfiles='dftest'