mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Add skelify function.
This commit is contained in:
43
dotfiles/zshrc.d/skelify.zsh
Normal file
43
dotfiles/zshrc.d/skelify.zsh
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/bin/zsh
|
||||
#
|
||||
# Skelify -- move a file to my .skel and setup symlinks
|
||||
|
||||
function skelify {
|
||||
local target
|
||||
local whichdir
|
||||
local relhome
|
||||
local fname
|
||||
local fulltarget
|
||||
for target in $~@; do
|
||||
if test -d ${target} ; then
|
||||
skelify ${target}/* || return 1
|
||||
elif test -f ${target} ; then
|
||||
if ! whichdir=$(cd $(dirname $target) && pwd); then
|
||||
echo Could not find directory for $target >/dev/stderr
|
||||
return 1
|
||||
fi
|
||||
fname=$(basename ${target})
|
||||
relhome=${whichdir#${HOME}/}
|
||||
fulltarget="${whichdir}/${fname}"
|
||||
if [[ ${relhome} == ${whichdir} ]] ; then
|
||||
echo ${whichdir} is not in home >/dev/stderr
|
||||
return 1
|
||||
fi
|
||||
if [[ ${relhome:0:1} == "." ]] ; then
|
||||
relhome=${relhome:1}
|
||||
elif [[ ${fname:0:1} == "." ]] ; then
|
||||
fname=${fname:1}
|
||||
else
|
||||
echo skelify only supports dotfiles >/dev/stderr
|
||||
return 1
|
||||
fi
|
||||
echo ${target}
|
||||
mkdir -p ${HOME}/.skel/${relhome}
|
||||
mv ${target} ${HOME}/.skel/${relhome}/${fname}
|
||||
ln -s ${fulltarget} ${HOME}/.skel/${relhome}/${fname}
|
||||
else
|
||||
echo ${target} is not a directory or file. >/dev/stderr
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
Reference in New Issue
Block a user