summaryrefslogtreecommitdiff
path: root/replace.sh
blob: a059d16f9a1b6e248988c0b3229bf33c0aefc769 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env bash
set -e

replace_profile="$1"
profile="$2"

if ! (( "${#@}" )); then
    echo "Usage: ${0##*/} [replace_profile_dir] [profile_dir]"
    echo "This script will map replace.txt under replace_profile_dir and modify files in profile_dir."
fi

if ! [[ -d "${replace_profile}" ]]; then
    echo "Please specify a valid replacements directory."
    exit 1
fi
if ! [[ -d "${profile}" ]]; then
    echo "Please specify a valid profile directory."
    exit 1
fi

mapfile -t replacements < <(grep -vE '^\s*($|#)' "$replace_profile/replace.txt")
for r in "${replacements[@]}"; do
    IFS=":" read -ra files <<< "$r"
    orig="${files[0]}"
    dest="${files[1]}"

    #echo "Delete $orig"
    rm -v "$profile/$orig"
    if [[ "$r" =~ :$ ]]; then
        continue
    fi

    if ! (( "${#dest}" )); then
        dest="$orig"
    fi
    #echo "  -> Copying $replace_profile/$dest to $profile/$dest"
    cp -v "$replace_profile/$dest" "$profile/$dest"
done

echo "Deleting all empty dirs under $profile"
find "$profile" -type d -empty -exec rmdir {} \;