43 lines
811 B
Bash
43 lines
811 B
Bash
|
#!/bin/bash
|
||
|
|
||
|
function usage { printf "Usage: %s FILE\n" "$(basename "$0")" >&2; exit 1; }
|
||
|
|
||
|
while getopts "h" opt; do
|
||
|
case "${opt}" in
|
||
|
*)
|
||
|
usage
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
shift $((OPTIND-1))
|
||
|
|
||
|
FILE="$1"
|
||
|
|
||
|
if [ -z "${FILE}" ]; then
|
||
|
usage
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if command -v sponge > /dev/null; then
|
||
|
( echo "# promcat (sponge)" ; cat /dev/stdin ) | sponge "${FILE}"
|
||
|
else
|
||
|
TEMP=$(mktemp --suffix .prom)
|
||
|
|
||
|
function finish {
|
||
|
if [ -f "${TEMP}" ]; then
|
||
|
rm -f "${TEMP}"
|
||
|
fi
|
||
|
}
|
||
|
trap finish EXIT
|
||
|
|
||
|
echo "# promcat (mktemp, mv)" > "${TEMP}"
|
||
|
cat /dev/stdin >> "${TEMP}"
|
||
|
|
||
|
if [ ! -s "${TEMP}" ] || grep -q '^[[:space:]]*$' "${TEMP}" ; then
|
||
|
printf "%s is empty\n" "${TEMP}" >&2
|
||
|
exit 1
|
||
|
else
|
||
|
mv "${TEMP}" "${FILE}"
|
||
|
fi
|
||
|
fi
|