Files
init.sh/lib/filefct.sh

66 lines
1.7 KiB
Bash

# Define normalised time display, filename friendly
stdtime()
{
date --rfc-3339=seconds | sed -e 's/ /-/' -e 's/://g'
}
export -f stdtime
# Backup original installation files
# (or any old files if runned several time on same file)
backupdist()
{
[[ $# -lt 1 ]] &&
prnt E "backupdist(): Au moins un argument requis." &&
exit 11
for file in $@; do
if [[ -e ${file} ]]; then
local tmpstmp=$(stdtime)
prnt I "Création d'une sauvegarde de ${file} du $tmpstmp..."
cp -av $file $file.dist.$tmpstmp
fi
done
}
export -f backupdist
# Install file to the host (specific first then general)
installfile()
{
local filelist=""
local i=0
[[ $# -lt 2 ]] && (
prnt E "installfile(): Au moins deux arguments requis."
die 11
)
[[ $(echo $@ | grep "\*\|\?") ]] && (
prnt E "installfile(): Les wildcards sont interdits."
die 10
)
for arg in $@; do
if [[ -f $MYPATH/repo/hosts/$HOSTNAME/$arg ]]; then
filelist="$filelist $MYPATH/repo/hosts/$HOSTNAME/$arg"
elif [[ -f $MYPATH/repo/common/$arg ]]; then
filelist="$filelist $MYPATH/repo/common/$arg"
else
# Not found in repository, we expect full name
filelist="$filelist $arg"
fi
done
for i in $filelist; do :; done
if [[ ! $i==/* ]]; then
prnt E "installfile(): Target must be on the root filesystem."
die 13
fi
prnt I "Création du répertoire $(dirname $i) si nécessaire..."
mkdir -pv $(dirname $i)
prnt I "Copie des fichiers ${filelist}..."
cp -av $filelist || (
prnt E "installfile(): Couldn't copy some required files..." &&
die 12
)
}
export -f installfile