go-get-folder-size
Version:
Get the size of a folder by recursively iterating through all its sub(files && folders). Use go, so high-speed
123 lines (119 loc) • 3.6 kB
JavaScript
import { getFolderSizeBin as y } from "./bin.mjs";
import "buffer";
import "path";
import "child_process";
import "process";
import "fs";
import "url";
import "node:os";
import "os";
import "timers/promises";
import "stream";
import "util";
import "./index-4f2f13ba.mjs";
import "readline";
function h(t) {
return t == null ? [] : Array.isArray(t) ? t : [t];
}
function p(t, e, r, i) {
var l, o = t[e], u = ~i.string.indexOf(e) ? r == null || r === !0 ? "" : String(r) : typeof r == "boolean" ? r : ~i.boolean.indexOf(e) ? r === "false" ? !1 : r === "true" || (t._.push((l = +r, l * 0 === 0 ? l : r)), !!r) : (l = +r, l * 0 === 0 ? l : r);
t[e] = o == null ? u : Array.isArray(o) ? o.concat(u) : [o, u];
}
function A(t, e) {
t = t || [], e = e || {};
var r, i, l, o, u, f = { _: [] }, n = 0, a = 0, s = 0, g = t.length;
const d = e.alias !== void 0, c = e.unknown !== void 0, b = e.default !== void 0;
if (e.alias = e.alias || {}, e.string = h(e.string), e.boolean = h(e.boolean), d)
for (r in e.alias)
for (i = e.alias[r] = h(e.alias[r]), n = 0; n < i.length; n++)
(e.alias[i[n]] = i.concat(r)).splice(n, 1);
for (n = e.boolean.length; n-- > 0; )
for (i = e.alias[e.boolean[n]] || [], a = i.length; a-- > 0; )
e.boolean.push(i[a]);
for (n = e.string.length; n-- > 0; )
for (i = e.alias[e.string[n]] || [], a = i.length; a-- > 0; )
e.string.push(i[a]);
if (b) {
for (r in e.default)
if (o = typeof e.default[r], i = e.alias[r] = e.alias[r] || [], e[o] !== void 0)
for (e[o].push(r), n = 0; n < i.length; n++)
e[o].push(i[n]);
}
const m = c ? Object.keys(e.alias) : [];
for (n = 0; n < g; n++) {
if (l = t[n], l === "--") {
f._ = f._.concat(t.slice(++n));
break;
}
for (a = 0; a < l.length && l.charCodeAt(a) === 45; a++)
;
if (a === 0)
f._.push(l);
else if (l.substring(a, a + 3) === "no-") {
if (o = l.substring(a + 3), c && !~m.indexOf(o))
return e.unknown(l);
f[o] = !1;
} else {
for (s = a + 1; s < l.length && l.charCodeAt(s) !== 61; s++)
;
for (o = l.substring(a, s), u = l.substring(++s) || n + 1 === g || ("" + t[n + 1]).charCodeAt(0) === 45 || t[++n], i = a === 2 ? [o] : o, s = 0; s < i.length; s++) {
if (o = i[s], c && !~m.indexOf(o))
return e.unknown("-".repeat(a) + o);
p(f, o, s + 1 < i.length || u, e);
}
}
}
if (b)
for (r in e.default)
f[r] === void 0 && (f[r] = e.default[r]);
if (d)
for (r in f)
for (i = e.alias[r] || []; i.length > 0; )
f[i.shift()] = f[r];
return f;
}
function k() {
console.log(`
go-get-folder-size
Get the size of a folder by recursively iterating through all its sub(files && folders). Use go, so high-speed.
usage:
go-get-folder-size [options]
options:
-h, --help check help
-l --loose ignore permission error
-p, --pretty pretty bytes (default true)
-b, --base target base path (default cwd)
`);
}
async function w() {
const t = process.argv.slice(2), e = A(t, {
default: {
help: !1,
pretty: !0,
loose: !1,
base: process.cwd()
},
string: ["base"],
boolean: ["pretty", "help", "loose"],
alias: {
h: ["help"],
b: ["base"],
p: ["pretty"],
l: ["loose"]
}
});
if (e.help)
k();
else
try {
const r = await y(
e.base,
e.pretty,
{ loose: e.loose }
);
console.log(r);
} catch (r) {
console.error(r.message);
}
}
w();