aboutsummaryrefslogtreecommitdiff
path: root/tools/svg/ffsvg.sh
blob: 02f6a631b2f76df943da981766afc40381118f49 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/bin/sh
#
# Written in 2016 by Sergei Eremenko <https://github.com/SmartFinn>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software. If not, see
# <http://creativecommons.org/publicdomain/zero/1.0/>.
#
# Description:
#  This script finds, fixes and cleans SVG files.
#
# Usage:
#  ffsvg.sh PATH...

set -e

SCRIPT_DIR=$(dirname "$0")

_run_helpers() {
	echo "=> Working on '$1' ..." >&2

	# optimize a SVG
	if command -v svgo > /dev/null 2>&1; then
		# use SVGO
		svgo --config="$SCRIPT_DIR/_svgo.yml" -i "$1"
	elif command -v scour > /dev/null 2>&1; then
		# use scour
		"$SCRIPT_DIR/_scour.sh" "$1"
	else
		cat <<-'EOF'

		You should have installed svgo or scour to use this script.

		sudo apt-get install python-scour

		EOF

		exit 1
	fi

	# fix a color scheme
	#"$SCRIPT_DIR/_fix_color_scheme.sh" "$1"

	# clear attributes
	sed -r -i -f "$SCRIPT_DIR/_clean_attrs.sed" "$1"

	# clear a style attribute
	sed -r -i -f "$SCRIPT_DIR/_clean_style_attr.sed" "$1"
}

for i in "$@"; do
	if [ -d "$i" ]; then
		# is a directory

		echo "=> Directory '$i' will be processed." >&2
		echo "   Press <CTRL-C> to abort (wait 1 seconds) ..." >&2

		sleep 1

		# process all SVG files w/o symlinks
		find "$i" -type f -name '*.svg' | while read -r file; do
			_run_helpers "$file"
		done
	elif [ -f "$i" ] && [ ! -L "$i" ]; then
		# is a file and is not a symlink

		# continue if an extension is svg
		[ "${i##*.}" = "svg" ] || continue

		_run_helpers "$i"
	else
		continue
	fi
done