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,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "grunt test"
|
"test": "grunt test && dev-scripts/svg_check.sh"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"svgo": ">=0.4.4"
|
"svgo": ">=0.4.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint-config-wikimedia": "0.3.0",
|
"eslint-config-wikimedia": "0.4.0",
|
||||||
"grunt": "^1.0.1",
|
"grunt": "^1.0.1",
|
||||||
"grunt-banana-checker": "^0.5.0",
|
"grunt-banana-checker": "^0.5.0",
|
||||||
"grunt-contrib-watch": "^1.0.0",
|
"grunt-contrib-watch": "^1.0.0",
|
||||||
|
|
Loading…
Reference in a new issue