Files
LuaCsForBarotraumaEP/changelogs/combine_changelogs.sh
2025-06-17 16:38:11 +03:00

58 lines
1.6 KiB
Bash

#!/bin/bash
##
# This file combines all the other .txt files in this directory into changelog.txt,
# or another file name given as optional argument.
#
# Determine script's absolute directory and use that for the paths, so the
# script can be executed from anywhere
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DEFAULT_TARGET_FILE="changelog.txt"
# A different target file can be provided as argument
if [ $# -eq 1 ]; then
TARGET_FILE="$SCRIPT_DIR/$1"
else
TARGET_FILE="$SCRIPT_DIR/$DEFAULT_TARGET_FILE"
fi
if [ ! -f "$TARGET_FILE" ]; then
echo "$TARGET_FILE doesn't exist yet, creating it"
touch "$TARGET_FILE"
fi
echo ""
echo "Appending *.txt into $(basename "$TARGET_FILE"):"
for file in "$SCRIPT_DIR"/*.txt; do
if [ -f "$file" ]; then
# Skip target file(s) that we're appending into
if [[ "$(basename "$file")" = "$DEFAULT_TARGET_FILE" ||
"$(basename "$file")" = "$(basename "$TARGET_FILE")" ]]; then
echo " - Skipping target file: $(basename "$file")"
continue
fi
echo " + $(basename "$file")"
# Strip path and extension from the file name and append it as heading for the entry
echo "$(basename "${file%.*}")" >> "$TARGET_FILE"
# Append file content
cat "$file" >> "$TARGET_FILE"
# Add a newline after each file's content
echo "" >> "$TARGET_FILE"
else
echo "ERROR: $file is missing or not a proper file, skipping!"
fi
done
echo ""
# Finished file name in upper case and without path as heading
echo "=== $(basename "$TARGET_FILE"):"
echo ""
# Print the finished file itself
cat "$TARGET_FILE"