aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/verify.js
diff options
context:
space:
mode:
authorLibravatar vantezzen <hello@vantezzen.io>2019-10-20 22:23:19 +0200
committerLibravatar vantezzen <hello@vantezzen.io>2019-10-20 22:23:19 +0200
commitfb03fc2fb9f1a01b567210da1071ac093283e479 (patch)
tree3051c54634bc82878dd249cc728a75216ce068ae /scripts/verify.js
parentCreate recipe_request.md (diff)
downloadferdium-recipes-fb03fc2fb9f1a01b567210da1071ac093283e479.tar.gz
ferdium-recipes-fb03fc2fb9f1a01b567210da1071ac093283e479.tar.zst
ferdium-recipes-fb03fc2fb9f1a01b567210da1071ac093283e479.zip
Add script to verify packages
Diffstat (limited to 'scripts/verify.js')
-rw-r--r--scripts/verify.js64
1 files changed, 64 insertions, 0 deletions
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 @@
1/**
2 * Verify packaged recipe to match uncompressed recipe
3 */
4const targz = require('targz');
5const fs = require('fs-extra');
6const dircompare = require('dir-compare');
7const path = require('path');
8
9// Helper: Compress src folder into dest file
10const decompress = (src, dest) => new Promise((resolve, reject) => {
11 targz.decompress({
12 src,
13 dest,
14 }, (err) => {
15 if (err) {
16 reject(err);
17 } else {
18 resolve(dest);
19 }
20 });
21});
22
23if (!process.argv[2]) {
24 console.log('Usage: yarn verify <recipe>');
25 return;
26}
27
28// Let us work in an async environment
29(async () => {
30 const recipe = process.argv[2];
31
32 const compressedRecipe = path.join(__dirname, '../', `${recipe}.tar.gz`);
33 const uncompressedRecipe = path.join(__dirname, '../', 'uncompressed', recipe);
34 const tempUncompressed = path.join(__dirname, `uncompressed/`);
35
36 // Check that recipe exists
37 if (!await fs.pathExists(compressedRecipe) || !await fs.pathExists(uncompressedRecipe)) {
38 console.log(`Error: Recipe does not exist.`);
39 return;
40 }
41
42 if (await fs.pathExists(tempUncompressed)) {
43 await fs.remove(tempUncompressed);
44 }
45 await fs.mkdir(tempUncompressed);
46
47 // Package to uncompressed recipe to .tar.gz
48 console.log(`Decompressing...`);
49 await decompress(compressedRecipe, tempUncompressed);
50
51 // Compare directories
52 const compare = dircompare.compareSync(uncompressedRecipe, tempUncompressed, {
53 compareContent: true,
54 });
55
56 if (compare.same) {
57 console.log('✓ Compressed and uncompressed files are equal');
58 } else {
59 console.log('❌ Compressed and uncompressed files are NOT equal');
60 }
61
62 // Remove temporary compressed file
63 await fs.remove(tempUncompressed);
64})(); \ No newline at end of file