const icondumper2 = require("./icon.js"); const iconjs = icondumper2.readers; const filesystem = require("fs"); const processObj = require("process"); // to make it viewable require("util").inspect.defaultOptions.maxArrayLength = 10; require("util").inspect.defaultOptions.compact = true; require("util").inspect.defaultOptions.depth = 2; // output debugging information icondumper2.options.setDebug(false); // node.js client console.log(`icon.js version ${icondumper2.version}, 2023 (c) yellows111`); switch(processObj.argv[2]) { case "psu": { let inputFile = filesystem.readFileSync(processObj.argv[3] ? processObj.argv[3] : "file.psu"); const parsed = iconjs.readEmsPsuFile(inputFile.buffer.slice(inputFile.byteOffset, inputFile.byteOffset + inputFile.byteLength)); const PS2D = iconjs.readPS2D(parsed[parsed.rootDirectory]["icon.sys"].data); let output = {parsed, PS2D} Object.keys(PS2D.filenames).forEach(function(file) { output[file] = iconjs.readIconFile(parsed[parsed.rootDirectory][PS2D.filenames[file]].data); }); console.log(output); break; } case "psv": { let inputFile = filesystem.readFileSync(processObj.argv[3] ? processObj.argv[3] : "file.psv"); const parsed = iconjs.readPsvFile(inputFile.buffer.slice(inputFile.byteOffset, inputFile.byteOffset + inputFile.byteLength)); console.log(parsed); const PS2D = iconjs.readPS2D(parsed["icon.sys"]); let output = {parsed, PS2D}; console.log(output); break; } case "sps": case "xps": { let inputFile = filesystem.readFileSync(processObj.argv[3] ? processObj.argv[3] : "file.sps"); const parsed = iconjs.readSharkXPortSxpsFile(inputFile.buffer.slice(inputFile.byteOffset, inputFile.byteOffset + inputFile.byteLength)); console.log(parsed); const PS2D = iconjs.readPS2D(parsed[parsed.rootDirectory]["icon.sys"].data); let output = {parsed, PS2D} Object.keys(PS2D.filenames).forEach(function(file) { output[file] = iconjs.readIconFile(parsed[parsed.rootDirectory][PS2D.filenames[file]].data); }); console.log(output); break; } case "sys": { let inputFile = filesystem.readFileSync(processObj.argv[3] ? processObj.argv[3] : "icon.sys"); const metadata = iconjs.readPS2D(inputFile.buffer.slice(inputFile.byteOffset, inputFile.byteOffset + inputFile.byteLength)); console.log("\noutput:", metadata, "\n") if(processObj.argv.length > 4 && processObj.argv[4].toLowerCase() === "--no-read-models") {break;} else { Object.keys(metadata.filenames).forEach(function(file) { let getFile = filesystem.readFileSync(metadata.filenames[file]); const output = iconjs.readIconFile(getFile.buffer.slice(getFile.byteOffset, getFile.byteOffset + getFile.byteLength)); //console.log(individialIcon); console.log(`contents of ${metadata.filenames[file]} (${file}):`, output, "\n"); }); } break; } default: { //Template literal goes here. console.log( `${(processObj.argv.length > 2) ? "Unknown argument: "+processObj.argv[2]+"\n\n": ""}icondumper2 node.js client subcommands: psu: Read a EMS Memory Adapter export file. psv: Read a PS3 export file. sps: Read a SharkPort export file. xps: Read a X-Port export file. sys: Read a icon.sys (964 bytes) file, and attempt to read icon files from the current directory. (suppress behaviour with --no-read-models) ` ); // end of template } }