diff options
Diffstat (limited to 'load_config.sh')
| -rwxr-xr-x | load_config.sh | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/load_config.sh b/load_config.sh new file mode 100755 index 0000000..ec59828 --- /dev/null +++ b/load_config.sh @@ -0,0 +1,55 @@ +#!/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" + 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" + echo "cp -a $src $dest" + 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." |
