Skip to content

Commit 8002406

Browse files
committed
chore: Handlebars templating in attribution utility
1 parent f5ee6fc commit 8002406

File tree

2 files changed

+9
-44
lines changed

2 files changed

+9
-44
lines changed

oss/attribution/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
"start": "node dist/main.js"
1010
},
1111
"dependencies": {
12+
"axios": "^1.6.0",
1213
"fs-extra": "^11.1.1",
13-
"axios": "^1.6.0"
14+
"handlebars": "^4.7.8"
1415
},
1516
"devDependencies": {
1617
"@types/fs-extra": "^11.0.1",

oss/attribution/src/main.ts

Lines changed: 7 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import * as fs from "fs-extra";
22
import * as path from "path";
3-
import * as url from "url";
43
import axios from "axios";
5-
import { promisify } from "util";
4+
import Handlebars from "handlebars";
65

76
// Regular expressions for finding license files
87
const licenseRegex = /^(LICENSE|LICENCE)($|\.md|\.txt)/i;
@@ -198,7 +197,7 @@ async function main() {
198197
packages.push({
199198
name,
200199
url: url || vcsUrl || null,
201-
license: licenseText,
200+
license: licenseText.trim(),
202201
version,
203202
source_url: sourceUrl || vcsUrl || null,
204203
});
@@ -213,46 +212,11 @@ async function main() {
213212

214213
console.log(`Writing results to ${outputFile}`);
215214

216-
// Generate Markdown from template
217-
const output = template.replace(
218-
/{{#each packages}}([\s\S]*?){{\/each}}/g,
219-
(_match, block) => {
220-
return packages
221-
.map((pkg) => {
222-
let result = block
223-
.replace(/{{name}}/g, pkg.name)
224-
.replace(/{{version}}/g, pkg.version)
225-
.replace(/{{{license}}}/g, pkg.license);
226-
227-
if (pkg.url) {
228-
result = result
229-
.replace(/{{#if url}}(.*?){{\/if}}/g, "$1")
230-
.replace(/{{url}}/g, pkg.url);
231-
} else {
232-
result = result.replace(/{{#if url}}(.*?){{\/if}}/g, "");
233-
}
234-
235-
if (pkg.source_url) {
236-
result = result
237-
.replace(/{{#if source_url}}([\s\S]*?){{\/if}}/g, "$1")
238-
.replace(/{{source_url}}/g, pkg.source_url);
239-
} else {
240-
result = result.replace(/{{#if source_url}}[\s\S]*?{{\/if}}/g, "");
241-
}
242-
243-
return result;
244-
})
245-
.join("");
246-
},
247-
);
248-
249-
// Final output replacements
250-
const finalOutput = output.replace(
251-
/{{#each packages}}[\s\S]*?{{\/each}}/g,
252-
"",
253-
);
254-
255-
fs.writeFileSync(outputFile, finalOutput);
215+
const compiledTemplate = Handlebars.compile(template);
216+
217+
const output = compiledTemplate({ packages });
218+
219+
fs.writeFileSync(outputFile, output);
256220
console.log("Finished!");
257221
}
258222

0 commit comments

Comments
 (0)