You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

104 lines
2.6 KiB

#!/usr/bin/env bash
# Tools for the scripts
# Make a backup of the existing file if it exists
# Then link to our supplied dotfile
link() {
# Only make a backup if an existing file is there and is not a link
if [ -f "$1/$2" ] && [ ! -L "$1/$2" ]; then
cp "$1/$2" "$1/$2.old"
echo "Backed up original $2 to $1/$2.old"
fi
ln -sf "$3" "$1/$2"
}
copy() {
# Only make a backup if an existing directory is there and is not a link
# Allow passing true as third param to do backups
backup=true
if [ ! -z "$4" ]; then
backup=$4
fi
overwrite=false
if [ ! -z "$5" ]; then
overwrite=$5
fi
if [ -f "$1/$2" ] || [ -L "$1/$2" ]; then
if $backup; then
mv "$1/$2" "$1/$2.old"
echo "Backed up original $2 to $1/$2.old"
else
if $overwrite; then
rm -r "$1/$2"
echo "removed original $2"
fi
fi
fi
# Should probably only do this is the source is newer
# Remove the old and copy the new
if $overwrite; then
cp -r "$3" "$1/$2"
fi
}
link_dir() {
# Only make a backup if an existing directory is there and is not a link
if [ -d "$1/$2" ] && [ ! -L "$1/$2" ]; then
mv "$1/$2" "$1/$2.old"
echo "Backed up original $2 to $1/$2.old"
fi
# Don't overwrite links
if [ ! -L "$1/$2" ]; then
echo "ln -sf $3 $1/$2"
ln -sf "$3" "$1/$2"
fi
}
copy_dir() {
# Only make a backup if an existing directory is there and is not a link
if [ -d "$1/$2" ] || [ -L "$1/$2" ]; then
# Allow passing true as third param to do backups
backup=true
if [ ! -z "$3" ]; then
backup=$4
fi
if $backup; then
mv "$1/$2" "$1/$2.old"
echo "Backed up original $2 to $1/$2.old"
else
rm -r "$1/$2"
echo "removed original $2"
fi
fi
# Should probably only do this is the source is newer
# Remove the old and copy the new
cp -r "$3" "$1/$2"
}
# Escape the path so we can use it in sed
escape_path() {
local safe="$(echo $1 | sed 's/\//\\\//g')"
echo $safe
}
# Clone a git repository into a location
# Or update an existing repository
clone_or_update_git_repo() {
local target=$1
local repo=$2
if [ ! -d "$target" ]; then
mkdir -p "$target"
echo "Cloning [$repo] into [$target]"
git clone "$repo" "$target"
else
# Update the repo otherwise
echo "Updating [$repo]"
cur_dir=$PWD
cd "$target"
git checkout .
git pull
cd $cur_dir
fi
}