mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-11-11 16:38:20 +00:00
Add tooling for svg size checking
also add pre-commit hook to ensure svgs are compressed on commit since extensions are accessible via http an .htaccess is added to the dev-scripts folder for safety. Bug: T170639 Change-Id: Ibcd5c29340d16c9cffc6e2eb90d33ee89b69874f
This commit is contained in:
parent
f60ca174f1
commit
59a17fd0af
1
dev-scripts/.htaccess
Normal file
1
dev-scripts/.htaccess
Normal file
|
@ -0,0 +1 @@
|
|||
Deny from all
|
75
dev-scripts/pre-commit
Executable file
75
dev-scripts/pre-commit
Executable file
|
@ -0,0 +1,75 @@
|
|||
#!/usr/bin/env bash
|
||||
# Enable this pre-commit hook by running 'make installhooks'
|
||||
set -euo pipefail
|
||||
|
||||
git-staged-files() {
|
||||
git diff --cached -C -C -z --name-only --diff-filter=ACMRTUXB "$@"
|
||||
}
|
||||
|
||||
git-is-staged() {
|
||||
local diff=0
|
||||
git-staged-files --quiet "$@" 2> /dev/null || diff=$?
|
||||
[[ diff -eq 1 ]] || return 1
|
||||
}
|
||||
|
||||
map() { IFS= read -rd $'\0' "$@"; }
|
||||
|
||||
compress-png() {
|
||||
git-staged-files \*.png|while map file; do
|
||||
echo "Compressing $file"
|
||||
optipng -q -o7 "$file" && advpng -z -4 "$file" && advdef -z -4 "$file" | grep Output
|
||||
git add "$file"
|
||||
done
|
||||
}
|
||||
|
||||
compress-svg() {
|
||||
git-staged-files \*.svg|while map file; do
|
||||
make nodecheck
|
||||
echo "Compressing $file"
|
||||
node_modules/.bin/svgo --config=.svgo.yml "$file"
|
||||
git add "$file"
|
||||
done
|
||||
}
|
||||
|
||||
test-whitespace() { git diff --cached --check; }
|
||||
|
||||
test-js() {
|
||||
local err=0
|
||||
|
||||
make eslint || err+=1
|
||||
|
||||
if git-is-staged \*.js; then
|
||||
make qunit || err+=1
|
||||
fi
|
||||
|
||||
return $err
|
||||
}
|
||||
|
||||
test-php() {
|
||||
local err=0
|
||||
if git-is-staged \*.php; then
|
||||
make phplint || err+=1
|
||||
fi
|
||||
|
||||
# todo: where is result set?
|
||||
if git-is-staged 'includes/skins/*.php'; then
|
||||
make validatehtml > $result || err+=1
|
||||
fi
|
||||
|
||||
return $err
|
||||
}
|
||||
|
||||
main() {
|
||||
local err=0
|
||||
|
||||
compress-png
|
||||
compress-svg
|
||||
|
||||
test-whitespace || err+=1
|
||||
test-js || err+=1
|
||||
test-php || err+=1
|
||||
|
||||
return $err
|
||||
}
|
||||
|
||||
main "$@"
|
17
dev-scripts/svg_check.sh
Executable file
17
dev-scripts/svg_check.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env bash
|
||||
found=0
|
||||
|
||||
for svgfile in `find resources -type f -name "*.svg"`; do
|
||||
outfile="$svgfile.tmp"
|
||||
node_modules/.bin/svgo --config .svgo.yml -i $svgfile -o $outfile -q
|
||||
if [ $(wc -c $svgfile | awk '{print $1}') -gt $(wc -c $outfile | awk '{print $1}') ]; then
|
||||
echo "File $svgfile is not compressed"
|
||||
found=$((found + 1))
|
||||
fi
|
||||
rm $outfile
|
||||
done
|
||||
|
||||
if [ $found -gt 0 ]; then
|
||||
echo "Found $found uncompressed SVG files. Please compress the files and re-submit the patch"
|
||||
exit 1
|
||||
fi
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"test": "grunt test"
|
||||
"test": "grunt test && dev-scripts/svg_check.sh"
|
||||
},
|
||||
"dependencies": {
|
||||
"svgo": ">=0.4.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-wikimedia": "0.3.0",
|
||||
"eslint-config-wikimedia": "0.4.0",
|
||||
"grunt": "^1.0.1",
|
||||
"grunt-banana-checker": "^0.5.0",
|
||||
"grunt-contrib-watch": "^1.0.0",
|
||||
|
|
Loading…
Reference in a new issue