44 lines
1.1 KiB
Text
44 lines
1.1 KiB
Text
|
shopt -s extglob
|
||
|
|
||
|
[ -z "$DF_DIR" ] && DF_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/df_linux"
|
||
|
game_dir="@dwarfFortress@"
|
||
|
|
||
|
update_path() {
|
||
|
local pkg_dir="$1"
|
||
|
local path="$2"
|
||
|
|
||
|
mkdir -p "$DF_DIR/$(dirname "$path")"
|
||
|
# If user has replaced these data directories, let them stay.
|
||
|
if [ ! -e "$DF_DIR/$path" ] || [ -L "$DF_DIR/$path" ]; then
|
||
|
rm -f "$DF_DIR/$path"
|
||
|
ln -s "$pkg_dir/$path" "$DF_DIR/$path"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
forcecopy_path() {
|
||
|
local pkg_dir="$1"
|
||
|
local path="$2"
|
||
|
|
||
|
mkdir -p "$DF_DIR/$(dirname "$path")"
|
||
|
rm -rf "$DF_DIR/$path"
|
||
|
cp -rL --no-preserve=all "$pkg_dir/$path" "$DF_DIR/$path"
|
||
|
}
|
||
|
|
||
|
mkdir -p "$DF_DIR"
|
||
|
|
||
|
cat <<EOF >&2
|
||
|
Using $DF_DIR as Dwarf Fortress overlay directory.
|
||
|
If you do any changes in it, don't forget to clean it when updating the game version!
|
||
|
We try to detect changes based on data directories being symbolic links -- keep this in mind.
|
||
|
|
||
|
EOF
|
||
|
|
||
|
cd "$game_dir"
|
||
|
for i in data/init/* data/!(init|index|announcement) raw; do
|
||
|
update_path "$game_dir" "$i"
|
||
|
done
|
||
|
|
||
|
forcecopy_path "$game_dir" data/index
|
||
|
# For some reason, it's needed to be writable...
|
||
|
forcecopy_path "$game_dir" data/announcement
|