1 | const fs = require('fs-extra')
|
2 |
|
3 | module.exports = async (creativePath) => {
|
4 | const contents = await fs.readFile(creativePath, { encoding: 'utf8' })
|
5 | const snippets = contents.match(/<Snippet Footer>[\s\S]*?\*\*\*\*/g) || []
|
6 | return snippets
|
7 | .map((snippet) => {
|
8 | const file = snippet.match(/file:\s*(\S+)\s*$/m)
|
9 | const version = snippet.match(/version:\s*(\S+)\s*$/m)
|
10 | return { name: file && file[1], version: version && version[1] }
|
11 | })
|
12 | .reduce(([resultsArr, versionTrackingObj], snippet) => {
|
13 | if (snippet.name && snippet.version) {
|
14 | if (!versionTrackingObj[snippet.name]) {
|
15 | resultsArr.push(snippet)
|
16 | versionTrackingObj[snippet.name] = [snippet.version]
|
17 | } else if (!versionTrackingObj[snippet.name].includes(snippet.version)) {
|
18 | resultsArr.push(snippet)
|
19 | versionTrackingObj[snippet.name].push(snippet.version)
|
20 | }
|
21 | }
|
22 | return [resultsArr, versionTrackingObj]
|
23 | }, [[], {}])[0]
|
24 | }
|