diff --git a/package.json b/package.json index fa6a2d4fb..48acd98bc 100644 --- a/package.json +++ b/package.json @@ -114,6 +114,7 @@ "circular-deps": "dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx", "circular-deps:overwrite": "npm run circular-deps | sed '$d' | grep -v '^npm run' > known-circular.txt", "circular-deps:diff": "./scripts/diff-circular-deps.sh", + "circular-deps:diff:nodejs": "npm run circular-deps:diff || node ./scripts/diff.js", "files:set-version": "echo \"$(jq --arg v \"$VERSION\" '.version=$v' package.json --indent 2)\" > package.json", "files:set-notes": "./scripts/set-files-notes.sh", "files:flip-to-nightly": "./scripts/flip-files-to-nightly.sh", diff --git a/scripts/diff.js b/scripts/diff.js new file mode 100644 index 000000000..03cd33273 --- /dev/null +++ b/scripts/diff.js @@ -0,0 +1,58 @@ +const fs = require('fs') +const latestRun = fs.readFileSync('/tmp/circular-deps.txt','utf-8') +const knownCircular = fs.readFileSync('./known-circular.txt','utf-8') + +function parseLine (line) { + let num = null + let depPath = null + const res = line.split(")",2) + if (res.length === 2) { + // should be a dep line + num = parseInt(res[0]) + depPath = res[1] + } + return { + num, + depPath + } +} + +function makeDependencyHash (file) { + const deps = {} + file.split("\n").forEach((line)=>{ + const {num, depPath} = parseLine(line) + if (depPath && !isNaN(num)) { + deps[depPath] = 1 + } + }) + return deps +} + +const latestRunDepHash = makeDependencyHash(latestRun) +const knownDepHash = makeDependencyHash(knownCircular) + +const dup1 = JSON.parse(JSON.stringify(latestRunDepHash)) +const dup2 = JSON.parse(JSON.stringify(knownDepHash)) +Object.keys(knownDepHash).forEach((key)=>{ + delete dup1[key] +}) + +Object.keys(latestRunDepHash).forEach((key)=>{ + delete dup2[key] +}) + +console.log("diff.js - line item diff") +console.log(" ") +console.log("Added(+)") +Object.keys(dup1).forEach((dep, index)=>{ + console.log(`${index+1}) ${dep}`) +}) + +console.log(" ") +console.log("Removed(-)") +if (Object.keys(dup2).length === 0) { + console.log("None") +} +Object.keys(dup2).forEach((dep, index)=>{ + console.log(`${index+1}) ${dep}`) +})