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.
|
|
#!/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 }
|