Merge branch 'main' into hash_files
diff --git a/images/index.js b/images/index.js
index f25a3ed..10fc63d 100644
--- a/images/index.js
+++ b/images/index.js
@@ -8,9 +8,13 @@
const express = require('express');
const fs = require('fs');
const commandLineArgs = require('command-line-args');
+const md5File = require('md5-file');
+const { promises: { readFile } } = require('fs');
const examplesDirectory = '../examples/';
const destinationDirectory = './screenshots';
+const md5Directory = './md5sum/lottie_web';
+
if (!fs.existsSync(destinationDirectory)) {
fs.mkdirSync(destinationDirectory);
}
@@ -65,26 +69,26 @@
const wait = (time) => new Promise((resolve) => setTimeout(resolve, time));
const startServer = async () => {
- const lottieJS = fs.readFileSync('node_modules/lottie-web/build/player/lottie.min.js', 'utf8');
- const screenshotJS = fs.readFileSync('screenshot.js', 'utf8');
- const driverHTML = fs.readFileSync('screenshot.html', 'utf8');
- const lottieJSON = fs.readFileSync('../examples/rectangle.json', 'utf8');
+ const lottieJS = await readFile('node_modules/lottie-web/build/player/lottie.min.js', 'utf8');
+ const screenshotJS = await readFile('screenshot.js', 'utf8');
+ const driverHTML = await readFile('screenshot.html', 'utf8');
+ const lottieJSON = await readFile('../examples/rectangle.json', 'utf8');
const app = express();
app.get('/screenshot.html', (req, res) => res.send(driverHTML));
- app.get('/screenshot_live.html', (req, res) => {
- const file = fs.readFileSync('screenshot.html', 'utf8');
+ app.get('/screenshot_live.html', async (req, res) => {
+ const file = await readFile('screenshot.html', 'utf8');
res.send(file);
});
app.get('/lottie.js', (req, res) => res.send(lottieJS));
app.get('/screenshot.js', (req, res) => res.send(screenshotJS));
app.get('/lottie.json', (req, res) => res.send(lottieJSON));
- app.get('/*', (req, res) => {
+ app.get('/*', async (req, res) => {
try {
if (req.originalUrl.indexOf('.json') !== -1) {
- const file = fs.readFileSync(`..${req.originalUrl}`, 'utf8');
+ const file = await readFile(`..${req.originalUrl}`, 'utf8');
res.send(file);
} else {
- const data = fs.readFileSync(`..${req.originalUrl}`);
+ const data = await readFile(`..${req.originalUrl}`);
res.writeHead(200, { 'Content-Type': 'image/jpeg' });
res.end(data);
}
@@ -109,12 +113,12 @@
return page;
};
-const createFilmStrim = async (page, path) => {
+const createFilmStrip = async (page, path) => {
await page.waitForFunction('window._finished === true', {
timeout: 20000,
});
await page.screenshot({
- path: `${destinationDirectory}/${path}.png`,
+ path,
fullPage: true,
});
};
@@ -131,9 +135,33 @@
})
);
+const getFileAsString = async (path) => {
+ try {
+ const fileBuffer = await readFile(path);
+ return fileBuffer.toString();
+ } catch (err) {
+ return '';
+ }
+};
+
+const checkMD5Sum = async (fileName, filePath) => {
+ const md5FilePath = `${md5Directory}/${fileName}.md5`;
+ const md5StoredValue = await getFileAsString(md5FilePath);
+ if (!md5StoredValue) {
+ // It's a new file.. Check how to commit the new value.
+ } else {
+ const md5Value = await md5File(filePath);
+ if (md5Value !== md5StoredValue) {
+ // The file has changed. Should not allow the commit.
+ }
+ }
+};
+
async function processPage(browser, settings, directory, file) {
const page = await startPage(browser, settings, directory + file);
- await createFilmStrim(page, file);
+ const filePath = `${destinationDirectory}/${file}.png`;
+ await createFilmStrip(page, filePath);
+ await checkMD5Sum(file, filePath);
}
const iteratePages = async (browser, settings) => {
diff --git a/images/md5sum/lottie_web/image.json.md5 b/images/md5sum/lottie_web/image.json.md5
new file mode 100644
index 0000000..9d82e1b
--- /dev/null
+++ b/images/md5sum/lottie_web/image.json.md5
@@ -0,0 +1 @@
+29077ea93acecd8a1bfe740b8a1cfe27
\ No newline at end of file
diff --git a/images/md5sum/lottie_web/precomp.json.md5 b/images/md5sum/lottie_web/precomp.json.md5
new file mode 100644
index 0000000..7a4cddd
--- /dev/null
+++ b/images/md5sum/lottie_web/precomp.json.md5
@@ -0,0 +1 @@
+76bacdfe0fed97addc47c4f1f49cc98c
\ No newline at end of file
diff --git a/images/md5sum/lottie_web/rectangle.json.md5 b/images/md5sum/lottie_web/rectangle.json.md5
new file mode 100644
index 0000000..b6e34c0
--- /dev/null
+++ b/images/md5sum/lottie_web/rectangle.json.md5
@@ -0,0 +1 @@
+a74c36a7a1b674c9ec5949b133f9c54b
\ No newline at end of file
diff --git a/images/md5sum/lottie_web/shape.json.md5 b/images/md5sum/lottie_web/shape.json.md5
new file mode 100644
index 0000000..1bdd46f
--- /dev/null
+++ b/images/md5sum/lottie_web/shape.json.md5
@@ -0,0 +1 @@
+fbbd168a2504590b2e5e315350bd4427
\ No newline at end of file
diff --git a/images/package-lock.json b/images/package-lock.json
index 4a056c6..6c66d2d 100644
--- a/images/package-lock.json
+++ b/images/package-lock.json
@@ -1553,6 +1553,11 @@
"yallist": "^4.0.0"
}
},
+ "md5-file": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz",
+ "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw=="
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
diff --git a/images/package.json b/images/package.json
index c2ac02a..66602b3 100644
--- a/images/package.json
+++ b/images/package.json
@@ -7,6 +7,7 @@
"command-line-args": "^5.2.0",
"express": "^4.17.1",
"lottie-web": "^5.7.14",
+ "md5-file": "^5.0.0",
"puppeteer": "^10.4.0"
},
"devDependencies": {
@@ -16,7 +17,7 @@
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
- "lint" : "./node_modules/.bin/eslint index.js"
+ "lint": "./node_modules/.bin/eslint index.js"
},
"keywords": [],
"author": "",