From fb03fc2fb9f1a01b567210da1071ac093283e479 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sun, 20 Oct 2019 22:23:19 +0200 Subject: Add script to verify packages --- scripts/verify.js | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 scripts/verify.js (limited to 'scripts/verify.js') diff --git a/scripts/verify.js b/scripts/verify.js new file mode 100644 index 0000000..59dbe61 --- /dev/null +++ b/scripts/verify.js @@ -0,0 +1,64 @@ +/** + * Verify packaged recipe to match uncompressed recipe + */ +const targz = require('targz'); +const fs = require('fs-extra'); +const dircompare = require('dir-compare'); +const path = require('path'); + +// Helper: Compress src folder into dest file +const decompress = (src, dest) => new Promise((resolve, reject) => { + targz.decompress({ + src, + dest, + }, (err) => { + if (err) { + reject(err); + } else { + resolve(dest); + } + }); +}); + +if (!process.argv[2]) { + console.log('Usage: yarn verify '); + return; +} + +// Let us work in an async environment +(async () => { + const recipe = process.argv[2]; + + const compressedRecipe = path.join(__dirname, '../', `${recipe}.tar.gz`); + const uncompressedRecipe = path.join(__dirname, '../', 'uncompressed', recipe); + const tempUncompressed = path.join(__dirname, `uncompressed/`); + + // Check that recipe exists + if (!await fs.pathExists(compressedRecipe) || !await fs.pathExists(uncompressedRecipe)) { + console.log(`Error: Recipe does not exist.`); + return; + } + + if (await fs.pathExists(tempUncompressed)) { + await fs.remove(tempUncompressed); + } + await fs.mkdir(tempUncompressed); + + // Package to uncompressed recipe to .tar.gz + console.log(`Decompressing...`); + await decompress(compressedRecipe, tempUncompressed); + + // Compare directories + const compare = dircompare.compareSync(uncompressedRecipe, tempUncompressed, { + compareContent: true, + }); + + if (compare.same) { + console.log('✓ Compressed and uncompressed files are equal'); + } else { + console.log('❌ Compressed and uncompressed files are NOT equal'); + } + + // Remove temporary compressed file + await fs.remove(tempUncompressed); +})(); \ No newline at end of file -- cgit v1.2.3-54-g00ecf