Skip to content

Instantly share code, notes, and snippets.

@DanielFGray
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DanielFGray/08c1edc46d1e34700893 to your computer and use it in GitHub Desktop.
Save DanielFGray/08c1edc46d1e34700893 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
var fs = require('fs');
var mkdirp = function(path) {
// TODO: handle non-UNIX paths
// TODO: optional trailing /
// TODO: as an array
var dirs = [];
if(arguments.length > 1) {
dirs = Array.prototype.slice.call(arguments, 0);
if(dirs[0].charAt(0) == '/') {
dirs[0] = dirs[0].replace('\/','');
}
if(dirs[0] == '') {
dirs.shift();
}
} else {
if(! path.match(/(\/\w+)\1*/)) {
console.log('invalid path');
return -1;
}
dirs = path.slice(1).split('/');
}
console.log(dirs);
for(var i = 0; i < dirs.length; i++) {
var cwd = dirs[i],
slice = dirs.slice(0, i),
pathto = '/' + (slice.length > 0 ? slice.join('/') + '/' : slice);
console.log(' ' + pathto + cwd);
try {
fs.mkdirSync(pathto + cwd, function(err, fd) {
if(err) {
console.log('making', err.path);
}
});
} catch(e) {
//console.log(e);
}
}
}
mkdirp('tmp','path','to','dir');
mkdirp('/tmp/path/to/dir');
mkdirp("/tmp","directories","can","be","made","recursively");
mkdirp("/","usr","share","man","man1");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment