You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.8 KiB
JavaScript

'use strict';
const Promise = require("bluebird");
const streamToPromise = require("stream-to-promise");
const fs = require("fs");
const memoizee = require("memoizee");
const archy = require("archy");
const httpSeekable = require("./lib/seekable/http");
const fsSeekable = require("./lib/seekable/fs");
const iso9660 = require("./lib/iso9660");
let imagePath = process.argv[2];
Promise.try(() => {
if (imagePath.match(/^https?:\/\//)) {
return httpSeekable(imagePath);
} else {
return fsSeekable(imagePath);
}
}).then((seekable) => {
let image = iso9660(seekable);
return Promise.try(() => {
return image.getRootDirectory();
}).then((rootDirectory) => {
return rootDirectory.getTree();
}).then((tree) => {
function makeArchy(node) {
if (node.type === "directory") {
return {
label: node.filename,
nodes: node.children.map(makeArchy)
}
} else {
return node.filename
}
}
let archyNodes = {
label: "(root)",
nodes: tree.map(makeArchy)
}
console.log(archy(archyNodes));
});
/*
let image = iso9660(seekable);
return Promise.try(() => {
return image.getPathTable();
}).then((paths) => {
//console.log(paths);
return image.getPrimaryVolumeDescriptor();
}).then((primaryVolumeDescriptor) => {
console.log(JSON.stringify(primaryVolumeDescriptor, (key, value) => {
if (value != null && value.type === "Buffer") {
return require("util").inspect(Buffer.from(value));
} else {
return value;
}
}, "\t"));
})
*/
});