| #!/usr/bin/env node | |
| (function(){ | |
| try { | |
| var dive = require('dive'); | |
| } catch (ex) { | |
| console.error('this example requires "dive", please run "npm install dive"'); | |
| process.exit(1); | |
| } | |
| var treeify = require('../treeify'), | |
| path = require('path'), | |
| fs = require('fs'), | |
| rootDir = process.argv.length < 3 ? '.' : process.argv[2], | |
| tree = {}; | |
| if ( ! fs.existsSync(rootDir)) { | |
| console.error('path "' + rootDir + '" does not exist - unable to proceed!'); | |
| process.exit(1); | |
| } | |
| console.log(rootDir !== '.' ? path.relative(process.cwd(), rootDir) : '.'); | |
| function scanComplete() { | |
| process.stdout.write('\r \r'); | |
| console.log(treeify.asTree(tree, true)); | |
| } | |
| dive(rootDir, { all: true, directories: true }, function(err, thisPath) { | |
| var relativePath = path.relative(rootDir, thisPath), | |
| node = tree; | |
| if (relativePath.indexOf('..') !== 0) { | |
| relativePath.split(path.sep).forEach(function(part) { | |
| typeof node[part] !== 'object' && (node[part] = {}); | |
| node = node[part]; | |
| }); | |
| } | |
| }, scanComplete); | |
| process.stdout.write('wait... '); | |
| })(); |