windows
Version:
A collection of utilities for Windows for Node.js
50 lines (40 loc) • 1.14 kB
JavaScript
var Command = require('./Command').Command;
var resolve = require('./utility').resolve;
var q = require('./utility').q;
module.exports = driveAlias;
function driveAlias(name, folder){
switch (arguments.length) {
case 0:
// list
return allDrives.cache = allDrives();
case 1:
// delete
delete allDrives.cache[name[0]];
return subst(drive(name), '/d')[0] || true;
case 2:
// set
allDrives.cache[name[0]] = folder = resolve(folder);
return subst(drive(name), q(folder))[0] || folder;
}
}
var subst = new Command('subst');
var drives = new Command('fsutil fsinfo drives', 'drives', function(s){
return s.trim().slice(8, -2).split(':\\ ');
});
function drive(name){ return name[0]+':' }
function allDrives(){
var physical = drives();
allDrives.cache = subst().reduce(function(r,s){
if (s && (s = s.split(':\\: => ')).length) {
r[s[0]] = s[1];
}
return r;
}, {});
physical.forEach(function(drive){
if (!allDrives.cache[drive]) {
allDrives.cache[drive] = drive + ':\\';
}
});
return allDrives.cache;
}
allDrives.cache = {};