#!/usr/bin/env zsh ## vim:ft=zsh ## Look for conflicting aliases and commands in ~/bin ## Since aliases are usually loaded from zshrc, which is not sourced ## for zsh script execution, the recommended usage is ## source .../conflicts ## in a running, interactive zsh typeset file dir alias typeset PKG_DIR=$HOME/packages typeset -a sfpath spath conflict is_in_path () { typeset -i ret=1 typeset dir typeset file=$1 shift for dir in $@; { if [[ -e $dir/$file ]] { ret=0 echo $dir/$file } } return $ret } sfpath=(${fpath:#$HOME*}) spath=(${path:#$HOME*}) for file in $PKG_DIR/{*/provides/zsh/completions/*(N),zsh/etc/completions/*(N)}; { conflict=($(is_in_path ${file:t} $sfpath)) if (( ? == 0 )) { echo "conflict: $file <-> ${(j:, :)conflict}" } } for file in $PKG_DIR/*/bin/*(N); { conflict=($(is_in_path ${file:t} $spath)) if (( ? == 0 )) { echo "conflict: $file <-> ${(j:, :)conflict}" } } for alias in ${(k)aliases}; { if [[ -n $commands[$alias] ]] && [[ $aliases[$alias] != (sudo |noglob |)$alias* ]]; then echo "conflicting alias: $alias" fi }