mirror of
https://github.com/tenrok/axios.git
synced 2026-05-15 11:59:42 +03:00
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
import Handlebars from "handlebars";
|
|
import fs from "fs/promises";
|
|
import prettyBytes from 'pretty-bytes';
|
|
import {gzipSize} from 'gzip-size';
|
|
import {getBlobHistory} from './repo.js';
|
|
|
|
const generateFileReport = async (files) => {
|
|
const stat = {};
|
|
|
|
for(const [name, file] of Object.entries(files)) {
|
|
const commits = await getBlobHistory(file);
|
|
|
|
stat[file] = {
|
|
name,
|
|
size: (await fs.stat(file)).size,
|
|
path: file,
|
|
gzip: await gzipSize(String(await fs.readFile(file))),
|
|
commits,
|
|
history: commits.map(({tag, size}) => `${prettyBytes(size)} (${tag})`).join(' ← ')
|
|
}
|
|
}
|
|
|
|
return stat;
|
|
}
|
|
|
|
const generateBody = async ({files, template = './templates/pr.hbs'} = {}) => {
|
|
const data = {
|
|
files: await generateFileReport(files)
|
|
};
|
|
|
|
Handlebars.registerHelper('filesize', (bytes)=> prettyBytes(bytes));
|
|
|
|
return Handlebars.compile(String(await fs.readFile(template)))(data);
|
|
}
|
|
|
|
console.log(await generateBody({
|
|
files: {
|
|
'Browser build (UMD)' : './dist/axios.min.js',
|
|
'Browser build (ESM)' : './dist/esm/axios.min.js',
|
|
}
|
|
}));
|
|
|