inital commit

This commit is contained in:
2026-03-23 23:50:58 +00:00
commit 503c232b30
110 changed files with 7218 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
#autoload
# Helper: backup a file via a dummy backup script/command
confe_backup_file() {
emulate -L zsh
local file=${1:A}
if [[ -z $file ]]; then
print -u2 "confe: no file passed to confe_backup_file"
return 1
fi
if [[ ! -e $file ]]; then
print -u2 "confe: cannot backup, file does not exist: $file"
return 1
fi
# You can override this with: CONFE_BACKUP_CMD=your-script
local backup_cmd=${CONFE_BACKUP_CMD:-echo}
# Dummy backup – replace with your real backup script
"$backup_cmd" "$file"
}
# Helper: stage a file in its git repository (if there is one)
confe_stage_file() {
emulate -L zsh
local file=${1:A}
if [[ -z $file ]]; then
print -u2 "confe: no file passed to confe_stage_file"
return 1
fi
if [[ ! -e $file ]]; then
print -u2 "confe: cannot stage, file does not exist: $file"
return 1
fi
local dir=${file:h}
if git -C "$dir" rev-parse --is-inside-work-tree &>/dev/null; then
git -C "$dir" add "$file"
else
print -u2 "confe: $file is not inside a git repository"
return 1
fi
}
confe() {
emulate -L zsh
# Main executable for editing – define here.
# You can also override with CONFE_EDIT_CMD in your env.
local edit_cmd=${CONFE_EDIT_CMD:-${EDITOR:-vim}}
[[ -z $edit_cmd ]] && edit_cmd=nvim
local do_backup=false
local do_staged=false
local -a positional
# Option parsing: --backup/-b, --staged/-s
while (( $# > 0 )); do
case "$1" in
--backup|-b)
do_backup=true
;;
--staged|-s)
do_staged=true
;;
--)
shift
positional+=("$@")
break
;;
--*)
print -u2 "confe: unknown option: $1"
return 1
;;
-*)
print -u2 "confe: unknown short option: $1"
return 1
;;
*)
positional+=("$1")
;;
esac
shift
done
set -- "${positional[@]}"
local topic=$1
if [[ -z $topic ]]; then
print -u2 "usage: confe [--backup|-b] [--staged|-s] (alias|keybindings|options|path|packages|ssh|brewfile)"
return 1
fi
# Associative array: topic → file path
local -A CONFE_FILES=(
alias "$ZDOTDIR/alias.zsh"
keybindings "$ZDOTDIR/keybindings.zsh"
options "$ZDOTDIR/options.zsh"
path "$ZDOTDIR/path.zsh"
packages "$DOTFILES/antidote/zsh_plugins.txt"
ssh "$HOME/.ssh/config"
brewfile "$DOTFILES/00-homebrew/Brewfile"
)
local file=${CONFE_FILES[$topic]}
if [[ -z $file ]]; then
print -u2 "confe: unknown topic: $topic"
print -u2 "valid topics: ${(j:, :)${(k)CONFE_FILES}}"
return 1
fi
# Run backup first if requested
if $do_backup; then
confe_backup_file "$file" || return $?
fi
# Main dummy command – you replace by setting edit_cmd / CONFE_EDIT_CMD
eval "$edit_cmd" $file(:P) || return $?
if [[ "${file}(:e)" == "zsh" ]]; then
source $file(:P)
fi
# Stage changes if requested
if $do_staged; then
confe_stage_file "$file" || return $?
fi
}
confe ${1:-ssh}