parent
bef5434128
commit
6f8415890d
54
bin/dotfiles
54
bin/dotfiles
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
##
|
##
|
||||||
## binaryDiv's dotfiles management script
|
## binaryDiv's dotfiles management script
|
||||||
## Version 0.4.0
|
## Version 0.4.1
|
||||||
##
|
##
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
|
|
@ -18,12 +18,14 @@ usage() {
|
||||||
(this will NOT create links for all dotfiles, though)
|
(this will NOT create links for all dotfiles, though)
|
||||||
|
|
||||||
Dotfile management:
|
Dotfile management:
|
||||||
ls [DIR] list contents of .dotfiles directory (or DIR relative to it)
|
ls [DIR] list contents of .dotfiles directory (or DIR relative to it)
|
||||||
diff FILE use vimdiff to compare ~/FILE to ~/.dotfiles/FILE
|
diff FILE use vimdiff to compare ~/FILE to ~/.dotfiles/FILE
|
||||||
link FILE... create a symlink from ~/FILE to ~/.dotfiles/FILE (multiple files possible)
|
link FILE... create a symlink from ~/FILE to ~/.dotfiles/FILE (multiple files possible)
|
||||||
(-q: be quiet, only print something if an error occurs)
|
(-q: be quiet, only print something if an error occurs)
|
||||||
linkstatus [DIR] list contents of .dotfiles with information about whether there are links to
|
linkstatus [DIR] list contents of .dotfiles with information about whether there are links to
|
||||||
them in ~/, whether they differ, etc...
|
them in ~/, whether they differ, etc...
|
||||||
|
createfrom FILE... copy ~/FILE to ~/.dotfiles/FILE and symlink the file
|
||||||
|
(-n: only copy, leave the original, do not create symlink)
|
||||||
|
|
||||||
Synchronization:
|
Synchronization:
|
||||||
git ARGS... wrapper for git (all arguments are passed on to git)
|
git ARGS... wrapper for git (all arguments are passed on to git)
|
||||||
|
|
@ -181,6 +183,37 @@ case "$cmd" in
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
createfrom)
|
||||||
|
if [[ $1 = '-n' ]]; then
|
||||||
|
NOLINK=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -n $1 ]] || { echo "$(basename $0) $cmd: Missing argument."; exit 1; }
|
||||||
|
|
||||||
|
for filename in "$@"; do
|
||||||
|
file_home="$homedir/$filename"
|
||||||
|
file_dotfiles="$dotfilesdir/$filename"
|
||||||
|
|
||||||
|
if [[ ! -e $file_home ]]; then
|
||||||
|
echo "! $file_home: source file does not exist"
|
||||||
|
exit 1
|
||||||
|
elif [[ -e $file_dotfiles ]]; then
|
||||||
|
echo "! $file_dotfiles already exists"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
mkdir -p "$(dirname "$file_dotfiles")"
|
||||||
|
[[ $QUIET ]] || echo "* Copy $file_home -> $file_dotfiles"
|
||||||
|
cp -n "$file_home" "$file_dotfiles" || exit 1
|
||||||
|
if [[ ! $NOLINK ]]; then
|
||||||
|
[[ $QUIET ]] || echo "* Remove original and link $file_home -> $file_dotfiles"
|
||||||
|
rm "$file_home" || exit 1
|
||||||
|
ln -sr "$file_dotfiles" "$file_home" || exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
git)
|
git)
|
||||||
git -C "$dotfilesdir" "$@"
|
git -C "$dotfilesdir" "$@"
|
||||||
|
|
@ -200,7 +233,7 @@ case "$cmd" in
|
||||||
_dotfiles() {
|
_dotfiles() {
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
local commands="help install ls diff link linkstatus git pull"
|
local commands="help install ls diff link linkstatus createfrom git pull"
|
||||||
local gitcommands="add commit diff fetch log pull push rebase status"
|
local gitcommands="add commit diff fetch log pull push rebase status"
|
||||||
|
|
||||||
if [[ $COMP_CWORD -eq 1 ]]; then
|
if [[ $COMP_CWORD -eq 1 ]]; then
|
||||||
|
|
@ -215,6 +248,11 @@ case "$cmd" in
|
||||||
_dotfiles_filenames
|
_dotfiles_filenames
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
createfrom)
|
||||||
|
compopt -o filenames
|
||||||
|
COMPREPLY=($(compgen -f -- ${cur}))
|
||||||
|
;;
|
||||||
|
|
||||||
git)
|
git)
|
||||||
if [[ $COMP_CWORD -eq 2 ]]; then
|
if [[ $COMP_CWORD -eq 2 ]]; then
|
||||||
COMPREPLY=($(compgen -W "$gitcommands" -- ${cur}))
|
COMPREPLY=($(compgen -W "$gitcommands" -- ${cur}))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue