mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-27 12:52:59 +08:00
69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
![]() |
var common = require('./common');
|
||
|
var fs = require('fs');
|
||
|
var path = require('path');
|
||
|
|
||
|
// Recursively creates 'dir'
|
||
|
function mkdirSyncRecursive(dir) {
|
||
|
var baseDir = path.dirname(dir);
|
||
|
|
||
|
// Base dir exists, no recursion necessary
|
||
|
if (fs.existsSync(baseDir)) {
|
||
|
fs.mkdirSync(dir, parseInt('0777', 8));
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Base dir does not exist, go recursive
|
||
|
mkdirSyncRecursive(baseDir);
|
||
|
|
||
|
// Base dir created, can create dir
|
||
|
fs.mkdirSync(dir, parseInt('0777', 8));
|
||
|
}
|
||
|
|
||
|
//@
|
||
|
//@ ### mkdir([options ,] dir [, dir ...])
|
||
|
//@ ### mkdir([options ,] dir_array)
|
||
|
//@ Available options:
|
||
|
//@
|
||
|
//@ + `p`: full path (will create intermediate dirs if necessary)
|
||
|
//@
|
||
|
//@ Examples:
|
||
|
//@
|
||
|
//@ ```javascript
|
||
|
//@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
|
||
|
//@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
|
||
|
//@ ```
|
||
|
//@
|
||
|
//@ Creates directories.
|
||
|
function _mkdir(options, dirs) {
|
||
|
options = common.parseOptions(options, {
|
||
|
'p': 'fullpath'
|
||
|
});
|
||
|
if (!dirs)
|
||
|
common.error('no paths given');
|
||
|
|
||
|
if (typeof dirs === 'string')
|
||
|
dirs = [].slice.call(arguments, 1);
|
||
|
// if it's array leave it as it is
|
||
|
|
||
|
dirs.forEach(function(dir) {
|
||
|
if (fs.existsSync(dir)) {
|
||
|
if (!options.fullpath)
|
||
|
common.error('path already exists: ' + dir, true);
|
||
|
return; // skip dir
|
||
|
}
|
||
|
|
||
|
// Base dir does not exist, and no -p option given
|
||
|
var baseDir = path.dirname(dir);
|
||
|
if (!fs.existsSync(baseDir) && !options.fullpath) {
|
||
|
common.error('no such file or directory: ' + baseDir, true);
|
||
|
return; // skip dir
|
||
|
}
|
||
|
|
||
|
if (options.fullpath)
|
||
|
mkdirSyncRecursive(dir);
|
||
|
else
|
||
|
fs.mkdirSync(dir, parseInt('0777', 8));
|
||
|
});
|
||
|
} // mkdir
|
||
|
module.exports = _mkdir;
|