Path: blob/main/src/resources/scripts/check-usage.ts
12925 views
import { readLines } from "https://deno.land/[email protected]/io/bufio.ts";12if (import.meta.main) {3const patterns: RegExp[] = Deno.args.map((arg) => new RegExp(arg));4const sizedEntries: Record<string, number> = {};5for await (const entry of readLines(Deno.stdin)) {6if (entry.trim() === "") {7continue;8}9let [url, size] = entry.split(" ");10size = size.slice(1, -1);11// heuristic: all urls we care about can be trimmed to the right of the first @12// for a simple group-by13url = url.split("@")[0];14let sizeNo = 0;15if (size.endsWith("KB")) {16sizeNo = Number(size.slice(0, -2)) * 1024;17} else if (size.endsWith("B")) {18sizeNo = Number(size.slice(0, -1));19} else {20console.log(`Don't know how to read ${size}`);21continue;22}23if (24patterns.length &&25!patterns.some((pattern: RegExp) => entry.match(pattern))26) {27continue;28}29sizedEntries[url] = (sizedEntries[url] || 0) + ~~sizeNo;30}3132const sizedEntriesArray = Object.entries(sizedEntries);33sizedEntriesArray.sort((a, b) => a[1] - b[1]);34let sum = 0;35for (const entry of sizedEntriesArray) {36console.log(`${entry[0]} ${entry[1]}`);37sum += entry[1];38}39console.log(`Overall: ${sum}`);40}414243