blob: 0d947b9ffa11a18a45f82956be1f254439f37c11 (
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#!/usr/bin/env bash
# Ensure good argument is passed
if [[ $# -ne 1 ]]; then
echo "Usage: $0 (desktop | laptop)"
exit 1
elif [[ "$1" != "laptop" && "$1" != "desktop" ]]; then
echo "Target must be \"laptop\" or \"desktop\""
exit 1
fi
TARGET=$1
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
make_dir() {
local dir="$1"
if [ -d "$dir" ]; then
return 1
fi
echo "mkdir -p $dir"
if ! mkdir -p "$dir" 2>/dev/null; then
echo "Failed - using sudo..."
sudo mkdir -p "$dir"
fi
}
copy_file() {
local src="$1"
local dest="$2"
if [ -f "$dest" ]; then
if diff "$src" "$dest" &> /dev/null; then
return 1
else
echo "Updating $dest..."
fi
else
echo "$dest doesn't exist - copying..."
fi
if ! cp -a "$src" "$dest" 2>/dev/null; then
echo "Failed - using sudo..."
sudo cp -a "$src" "$dest"
fi
}
copy_to_disk() {
local root="$1"
cd "$root"
find . -mindepth 1 | while read -r node; do
# ./node -> /node
dest="${node#.}"
if [[ -d "$node" ]]; then
make_dir "$dest"
else
make_dir "$(dirname "$dest")"
copy_file "$node" "$dest"
fi
done
}
copy_to_disk "$SCRIPT_DIR/common"
copy_to_disk "$SCRIPT_DIR/$TARGET"
cd "$SCRIPT_DIR"
echo "Done."
|