Compare commits
No commits in common. "92d13131fc56a5126f0d1d7ecd2355264442c9f5" and "84837becafebcade4a531b626b586732ddc0f577" have entirely different histories.
92d13131fc
...
84837becaf
3 changed files with 0 additions and 102 deletions
16
Dockerfile
16
Dockerfile
|
@ -1,16 +0,0 @@
|
||||||
FROM alpine:3.13
|
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
brotli \
|
|
||||||
pigz \
|
|
||||||
zstd \
|
|
||||||
bash \
|
|
||||||
the_silver_searcher
|
|
||||||
|
|
||||||
COPY ./precompress /precompress
|
|
||||||
|
|
||||||
VOLUME /compress-dir
|
|
||||||
|
|
||||||
WORKDIR /compress-dir
|
|
||||||
|
|
||||||
ENTRYPOINT ["/precompress"]
|
|
|
@ -1,7 +1,2 @@
|
||||||
# precompress
|
# precompress
|
||||||
|
|
||||||
A script for "precompressing" static files for use with [Caddy](https://caddyserver.com/).
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
Run `./precompress help`
|
|
||||||
|
|
81
precompress
81
precompress
|
@ -1,81 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
readonly SCAN_PATH="${1:-.}"
|
|
||||||
|
|
||||||
case "${1:-}" in
|
|
||||||
'-h' | '--help' | 'help')
|
|
||||||
cat << 'EOF'
|
|
||||||
precompress
|
|
||||||
===========
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
precompress [path]
|
|
||||||
|
|
||||||
If path is omitted, it used the current working directory.
|
|
||||||
|
|
||||||
Primarily used for Caddy's file_sever directive's precompresed option.
|
|
||||||
It will compress every non brotli, zstandard, or gzip file.
|
|
||||||
EOF
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "${SCAN_PATH}" = "." ] && [ -t 0 ] && [ -t 1 ] && [ -t 2 ]; then
|
|
||||||
while read -r -p "About to compress all of ${PWD}, continue? [y/n] " ANSWER; do
|
|
||||||
case "${ANSWER}" in
|
|
||||||
'y')
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
|
|
||||||
'n')
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
readonly REQUIRED_APPS=(
|
|
||||||
'ag'
|
|
||||||
'brotli'
|
|
||||||
'cat'
|
|
||||||
'nproc'
|
|
||||||
'pigz'
|
|
||||||
'tr'
|
|
||||||
'xargs'
|
|
||||||
'zstd'
|
|
||||||
)
|
|
||||||
|
|
||||||
for REQUIRED_APP in "${REQUIRED_APPS[@]}"; do
|
|
||||||
if ! command -v "${REQUIRED_APP}" &> /dev/null; then
|
|
||||||
>&2 echo "missing ${REQUIRED_APP} from PATH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
COMPRESS_SCRIPT="$(cat << 'EOF'
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
readonly FILE_NAME="$0"
|
|
||||||
|
|
||||||
errTrap() {
|
|
||||||
>&2 echo "failed to compress $FILE_NAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
trap errTrap ERR
|
|
||||||
|
|
||||||
zstd -k -T0 --ultra -20 "${FILE_NAME}" &> /dev/null &
|
|
||||||
pigz -k -9 "${FILE_NAME}" &> /dev/null &
|
|
||||||
brotli -k -9 "${FILE_NAME}" &> /dev/null &
|
|
||||||
|
|
||||||
wait
|
|
||||||
EOF
|
|
||||||
)"
|
|
||||||
readonly COMPRESS_SCRIPT
|
|
||||||
|
|
||||||
ag --nocolor --ignore '*.gz' --ignore '*.zst' --ignore '*.br' -g '' -l "${SCAN_PATH}" |
|
|
||||||
tr '\n' '\0' |
|
|
||||||
xargs -0 -r -n 1 -P "$(nproc)" "$(command -v bash)" -c "${COMPRESS_SCRIPT}"
|
|
Loading…
Reference in a new issue