fs = {
const rootNode = { kind: "d", entries: {} };
var currNode = rootNode;
commandList.forEach((cmd) => {
switch (cmd.cmd) {
case "cd":
currNode = currNode.entries[
cmd.dir == ".." ? "_PARENTDIR" : cmd.dir
] ??= {
kind: "d",
entries: { ["_PARENTDIR"]: currNode }
};
break;
case "ls":
for (const output of cmd.output) {
const [sizeOrDir, fileOrDirName] = output;
currNode.entries[fileOrDirName] =
sizeOrDir == "dir"
? { kind: "d", entries: { ["_PARENTDIR"]: currNode } }
: { kind: "f", fsize: +sizeOrDir };
}
}
});
return rootNode;
}