58 lines
1.6 KiB
Bash
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"
|