Closed pdehaan closed 7 months ago
/cc @maxxcrawford @codemist
I ended up prototyping this over in https://github.com/pdehaan/blurts-logo-linter. Still need to figure out the best way to wire up husky/lint-staged since I think those have changed since I've used them last. But if I understand lint-staged correctly, it will pass through the list of staged files/logos to the specified script, so it will hopefully just call lint-logos public/img/logos/LinkedIn.png public/img/logos/Adobe.png. I somewhat overbuilt this to support globs in case we wanted to use this outside of lint-staged. Which also means we can use this to lint newly added/modified files going forward without needing to go back and fix the old logos.
A few more updates since I'm bored on PTO.
I set up husky/lint-staged via npx mrm@2 lint-staged (per https://www.npmjs.com/package/lint-staged README)
Here's what it looks like if I rename a file and try committing a staged logo file:
git commit -S -m "Bump bad logos"
✔ Preparing...
⚠ Running tasks...
❯ Running tasks for public/img/logos/*
✖ blurts-logo-linter [FAILED]
↓ Skipped because of errors from tasks. [SKIPPED]
✔ Reverting to original state because of errors...
✔ Cleaning up...
✖ blurts-logo-linter:
IndianRailways-squashed.png is too large, 9.53KB. Expected < 8KB.
Zynga2.png is 130×150 [png]. Expected 150×150 [png].
husky - pre-commit hook exited with code 1 (error)
diff --git a/package.json b/package.json
index 9d547255..c0d30f84 100644
--- a/package.json
+++ b/package.json
@@ -56,6 +56,7 @@
"@wdio/selenium-standalone-service": "5.16.10",
"@wdio/spec-reporter": "5.23.0",
"@wdio/sync": "5.23.0",
+ "blurts-logo-linter": "github:pdehaan/blurts-logo-linter",
"chai": "4.2.0",
"clean-css-cli": "4.3.0",
"coveralls": "3.1.0",
@@ -63,8 +64,10 @@
"eslint-plugin-node": "6.0.1",
"faucet": "0.0.1",
"htmllint-cli": "0.0.7",
+ "husky": "^7.0.1",
"jest": "26.4.2",
"jest-tap-reporter": "1.9.0",
+ "lint-staged": "^11.1.2",
"node-mocks-http": "1.9.0",
"nodemon": "2.0.4",
"npm-audit-ci-wrapper": "3.0.1",
@@ -141,7 +144,12 @@
"test:integration-headless": "MOZ_HEADLESS=1 wdio tests/integration/wdio.conf.js",
"test:integration-headless-ci": "MOZ_HEADLESS=1 ERROR_SHOTS=1 wdio tests/integration/wdio.conf.js",
"test:integration-docker": "MOZ_HEADLESS=1 wdio tests/integration/wdio.docker.js",
- "test": "run-s test:db:migrate test:tests test:coveralls"
+ "test": "run-s test:db:migrate test:tests test:coveralls",
+ "prepare": "husky install",
+ "logolint": "blurts-logo-linter 'public/img/logos/*'"
},
- "supportedLocales": "cak,cs,cy,da,de,el,en,en-CA,en-GB,es-AR,es-CL,es-ES,es-MX,fi,fr,fy-NL,gn,hu,kab,ia,id,it,ja,nb-NO,nl,nn-NO,pt-BR,pt-PT,ro,ru,sk,sl,sq,sv-SE,tr,uk,vi,zh-CN,zh-TW"
+ "supportedLocales": "cak,cs,cy,da,de,el,en,en-CA,en-GB,es-AR,es-CL,es-ES,es-MX,fi,fr,fy-NL,gn,hu,kab,ia,id,it,ja,nb-NO,nl,nn-NO,pt-BR,pt-PT,ro,ru,sk,sl,sq,sv-SE,tr,uk,vi,zh-CN,zh-TW",
+ "lint-staged": {
+ "public/img/logos/*": "blurts-logo-linter"
+ }
}
Not sure what the prepare
script is, or if every user needs to manually run that in order to add some husky git hooks. Will need to read more.
Closing since we've redesigned the site and functionality since this was created. If you feel that this is still needed, please let me know.
Random idea... We already have some misc scripts that check for breach logo dimensions and file sizes. Wondering if it's worth the effort to do some git hook or use Husky or something to lint staged logo files so that NEW breach logos fit some arbitrary criteria (ie: 150x150, sub 10kb).
Plus, if it's a git hook, we could see if we can only trigger it for local pre-commit/pre-push or something so there isn't any impact on CI or excessive tooling. Basically it could potentially prevent you from submitting a PR if the logo is too tall/wide/big. Conversely, tweak it to run on CI, although that might flag ALL non-conforming logos, and I'm not 100% convinced yet that it's worth the immediate effort to update ~200 older breach logo images.
Or maybe it's all a very terrible, no good idea.