|
|
@@ -8,6 +8,9 @@ function convertToMs(timeStr) {
|
|
|
return Math.floor(parseFloat(timeStr, 10) * 1000)
|
|
|
}
|
|
|
|
|
|
+const NOTEWORTHY_DEPENDENCIES_REGEXP =
|
|
|
+ /\/(beamer\.cls|tikz\.sty|microtype\.sty|minted\.sty)$/
|
|
|
+
|
|
|
/* An array of metric parsers for `latexmk` time output (`-time` flag).
|
|
|
* Each entry is a tuple containing a metric name and a function to parse that
|
|
|
* metric from the `latexmk` log output.
|
|
|
@@ -152,33 +155,36 @@ function addLatexFdbMetrics(fdbContent, stats) {
|
|
|
if (!fdbContent) {
|
|
|
return
|
|
|
}
|
|
|
- const { systemFileTypes, userFileTypes } = parseFdbContent(fdbContent)
|
|
|
+ const { systemFileTypes, userFileTypes, dependencies } =
|
|
|
+ parseFdbContent(fdbContent)
|
|
|
|
|
|
if (
|
|
|
- Object.keys(systemFileTypes).length === 0 &&
|
|
|
- Object.keys(userFileTypes).length === 0
|
|
|
+ Object.keys(systemFileTypes).length > 0 ||
|
|
|
+ Object.keys(userFileTypes).length > 0
|
|
|
) {
|
|
|
- return
|
|
|
- }
|
|
|
+ const userSummary = summarizeFileTypes(userFileTypes)
|
|
|
+ const systemSummary = summarizeFileTypes(systemFileTypes)
|
|
|
|
|
|
- const userSummary = summarizeFileTypes(userFileTypes)
|
|
|
- const systemSummary = summarizeFileTypes(systemFileTypes)
|
|
|
+ stats.latexmk['fdb-file-types'] = {
|
|
|
+ total: {
|
|
|
+ systemFileCount: systemSummary.total.count,
|
|
|
+ systemFileSize: systemSummary.total.size,
|
|
|
+ imageFileCount: userSummary.image.count,
|
|
|
+ imageFileSize: userSummary.image.size,
|
|
|
+ textFileCount: userSummary.text.count,
|
|
|
+ textFileSize: userSummary.text.size,
|
|
|
+ fontFileCount: userSummary.font.count,
|
|
|
+ fontFileSize: userSummary.font.size,
|
|
|
+ otherFileCount: userSummary.other.count,
|
|
|
+ otherFileSize: userSummary.other.size,
|
|
|
+ },
|
|
|
+ system: convertToArray(systemFileTypes),
|
|
|
+ user: convertToArray(userFileTypes),
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- stats.latexmk['fdb-file-types'] = {
|
|
|
- total: {
|
|
|
- systemFileCount: systemSummary.total.count,
|
|
|
- systemFileSize: systemSummary.total.size,
|
|
|
- imageFileCount: userSummary.image.count,
|
|
|
- imageFileSize: userSummary.image.size,
|
|
|
- textFileCount: userSummary.text.count,
|
|
|
- textFileSize: userSummary.text.size,
|
|
|
- fontFileCount: userSummary.font.count,
|
|
|
- fontFileSize: userSummary.font.size,
|
|
|
- otherFileCount: userSummary.other.count,
|
|
|
- otherFileSize: userSummary.other.size,
|
|
|
- },
|
|
|
- system: convertToArray(systemFileTypes),
|
|
|
- user: convertToArray(userFileTypes),
|
|
|
+ if (dependencies.length > 0) {
|
|
|
+ stats.latexmk['fdb-dependencies'] = dependencies
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -186,6 +192,7 @@ function parseFdbContent(fdbContent) {
|
|
|
const systemFileTypes = {}
|
|
|
const userFileTypes = {}
|
|
|
const seenFiles = new Set()
|
|
|
+ const dependencies = new Set()
|
|
|
// Extract the file path and size from lines like:
|
|
|
// FILENAME TIMESTAMP SIZE CHECKSUM ...
|
|
|
// "main.tex" 1760016467 6147 9da336eb1132ecb1d61cd1f5a70cfa62 ""
|
|
|
@@ -208,9 +215,19 @@ function parseFdbContent(fdbContent) {
|
|
|
}
|
|
|
fileTypes[ext].count++
|
|
|
fileTypes[ext].size += fileSize
|
|
|
+
|
|
|
+ const depMatch = filePath.match(NOTEWORTHY_DEPENDENCIES_REGEXP)
|
|
|
+ if (depMatch) {
|
|
|
+ dependencies.add(depMatch[1])
|
|
|
+ }
|
|
|
+
|
|
|
seenFiles.add(filePath)
|
|
|
}
|
|
|
- return { systemFileTypes, userFileTypes }
|
|
|
+ return {
|
|
|
+ systemFileTypes,
|
|
|
+ userFileTypes,
|
|
|
+ dependencies: Array.from(dependencies),
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
function getFileTypeCategory(ext) {
|