mirror of
https://github.com/nextcloud/server.git
synced 2025-01-30 22:37:01 +00:00
e07a190641
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
121 lines
2.8 KiB
Bash
Executable file
121 lines
2.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
set -e
|
|
|
|
OPTIPNG=$(which optipng)
|
|
if ! [ -x "$OPTIPNG" ]; then
|
|
echo -e "\033[0;31moptipng executable not found, please install\033[0m" >&2
|
|
exit 1
|
|
fi
|
|
JPEGOPTIM=$(which jpegoptim)
|
|
if ! [ -x "$JPEGOPTIM" ]; then
|
|
echo -e "\033[0;31mjpegoptim executable not found, please install\033[0m" >&2
|
|
exit 2
|
|
fi
|
|
SCOUR=$(which scour)
|
|
if ! [ -x "$SCOUR" ]; then
|
|
echo -e "\033[0;31mscour executable not found, please install\033[0m" >&2
|
|
exit 3
|
|
fi
|
|
|
|
REQUIRED_SCOUR_VERSION="0.38.2"
|
|
SCOUR_VERSION=$(scour --version)
|
|
if dpkg --compare-versions $SCOUR_VERSION lt $REQUIRED_SCOUR_VERSION; then
|
|
echo "scour version $REQUIRED_SCOUR_VERSION or higher is required, found $SCOUR_VERSION" >&2
|
|
exit 3
|
|
fi
|
|
|
|
set +e
|
|
|
|
CHECK_DIR='../'
|
|
if [[ -d "$1" ]]; then
|
|
CHECK_DIR=$1
|
|
fi
|
|
|
|
function recursive_optimize_images() {
|
|
cd "$1" || return
|
|
DIR_NAME=${PWD##*/}
|
|
|
|
if [[ "$DIR_NAME" == "3rdparty" ]]; then
|
|
echo -e "\033[0;36mIgnoring 3rdparty for image optimization\033[0m"
|
|
return
|
|
elif [[ "$DIR_NAME" == "build" ]]; then
|
|
echo -e "\033[0;36mIgnoring build for image optimization\033[0m"
|
|
return
|
|
elif [[ "$DIR_NAME" == "cypress" ]]; then
|
|
echo -e "\033[0;36mIgnoring cypress for image optimization\033[0m"
|
|
return
|
|
elif [[ "$DIR_NAME" == "node_modules" ]]; then
|
|
echo -e "\033[0;36mIgnoring node_modules for image optimization\033[0m"
|
|
return
|
|
elif [[ "$DIR_NAME" == "tests" ]]; then
|
|
echo -e "\033[0;36mIgnoring tests for image optimization\033[0m"
|
|
return
|
|
elif [[ "$DIR_NAME" == "vendor" ]]; then
|
|
echo -e "\033[0;36mIgnoring vendor for image optimization\033[0m"
|
|
return
|
|
elif [[ "$DIR_NAME" == "vendor-bin" ]]; then
|
|
echo -e "\033[0;36mIgnoring vendor-bin for image optimization\033[0m"
|
|
return
|
|
fi
|
|
|
|
# Optimize all PNGs
|
|
for png in *.png
|
|
do
|
|
[[ -e "$png" ]] || break
|
|
|
|
$OPTIPNG -o6 -strip all "$png"
|
|
done
|
|
|
|
# Optimize all JPGs
|
|
for jpg in *.jpg
|
|
do
|
|
[[ -e "$jpg" ]] || break
|
|
|
|
$JPEGOPTIM --strip-all "$jpg"
|
|
done
|
|
|
|
# Optimize all SVGs
|
|
for svg in *.svg
|
|
do
|
|
[[ -e "$svg" ]] || break
|
|
|
|
if [[ "$svg" == "default-source.svg" ]]; then
|
|
echo -e "\033[0;36mIgnoring $svg image optimization\033[0m"
|
|
continue
|
|
fi
|
|
|
|
mv $svg $svg.opttmp
|
|
$SCOUR --create-groups \
|
|
--enable-id-stripping \
|
|
--enable-comment-stripping \
|
|
--shorten-ids \
|
|
--remove-metadata \
|
|
--strip-xml-prolog \
|
|
--no-line-breaks \
|
|
-i $svg.opttmp \
|
|
-o $svg
|
|
rm $svg.opttmp
|
|
done
|
|
|
|
# Check all subfolders
|
|
for dir in */
|
|
do
|
|
[[ -e "$dir" ]] || break
|
|
|
|
if [[ -d "$dir" ]]; then
|
|
if git check-ignore $dir -q ; then
|
|
echo -e "\033[0;36m$dir is not shipped. Ignoring image optimization\033[0m"
|
|
continue
|
|
fi
|
|
|
|
recursive_optimize_images "$dir"
|
|
cd ..
|
|
fi
|
|
done
|
|
}
|
|
|
|
recursive_optimize_images "$CHECK_DIR"
|