Skip to content

Commit f38a1b7

Browse files
committed
Meta tweaks
1 parent d1d3929 commit f38a1b7

File tree

6 files changed

+82
-73
lines changed

6 files changed

+82
-73
lines changed

.gitattributes

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
* text=auto
2-
*.js text eol=lf
1+
* text=auto eol=lf

index.js

+22-22
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,28 @@ const checkPath = pth => {
1515
const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, ''));
1616

1717
if (pathHasInvalidWinCharacters) {
18-
const err = new Error(`Path contains invalid characters: ${pth}`);
19-
err.code = 'EINVAL';
20-
throw err;
18+
const error = new Error(`Path contains invalid characters: ${pth}`);
19+
error.code = 'EINVAL';
20+
throw error;
2121
}
2222
}
2323
};
2424

25-
module.exports = (input, opts) => Promise.resolve().then(() => {
25+
module.exports = (input, options) => Promise.resolve().then(() => {
2626
checkPath(input);
27-
opts = Object.assign({}, defaults, opts);
27+
options = Object.assign({}, defaults, options);
2828

2929
// TODO: Use util.promisify when targeting Node.js 8
30-
const mkdir = pify(opts.fs.mkdir);
31-
const stat = pify(opts.fs.stat);
30+
const mkdir = pify(options.fs.mkdir);
31+
const stat = pify(options.fs.stat);
3232

3333
const make = pth => {
34-
return mkdir(pth, opts.mode)
34+
return mkdir(pth, options.mode)
3535
.then(() => pth)
36-
.catch(err => {
37-
if (err.code === 'ENOENT') {
38-
if (err.message.includes('null bytes') || path.dirname(pth) === pth) {
39-
throw err;
36+
.catch(error => {
37+
if (error.code === 'ENOENT') {
38+
if (error.message.includes('null bytes') || path.dirname(pth) === pth) {
39+
throw error;
4040
}
4141

4242
return make(path.dirname(pth)).then(() => make(pth));
@@ -45,37 +45,37 @@ module.exports = (input, opts) => Promise.resolve().then(() => {
4545
return stat(pth)
4646
.then(stats => stats.isDirectory() ? pth : Promise.reject())
4747
.catch(() => {
48-
throw err;
48+
throw error;
4949
});
5050
});
5151
};
5252

5353
return make(path.resolve(input));
5454
});
5555

56-
module.exports.sync = (input, opts) => {
56+
module.exports.sync = (input, options) => {
5757
checkPath(input);
58-
opts = Object.assign({}, defaults, opts);
58+
options = Object.assign({}, defaults, options);
5959

6060
const make = pth => {
6161
try {
62-
opts.fs.mkdirSync(pth, opts.mode);
63-
} catch (err) {
64-
if (err.code === 'ENOENT') {
65-
if (err.message.includes('null bytes') || path.dirname(pth) === pth) {
66-
throw err;
62+
options.fs.mkdirSync(pth, options.mode);
63+
} catch (error) {
64+
if (error.code === 'ENOENT') {
65+
if (error.message.includes('null bytes') || path.dirname(pth) === pth) {
66+
throw error;
6767
}
6868

6969
make(path.dirname(pth));
7070
return make(pth);
7171
}
7272

7373
try {
74-
if (!opts.fs.statSync(pth).isDirectory()) {
74+
if (!options.fs.statSync(pth).isDirectory()) {
7575
throw new Error('The path is not a directory');
7676
}
7777
} catch (_) {
78-
throw err;
78+
throw error;
7979
}
8080
}
8181

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@
4343
"pify": "^4.0.1"
4444
},
4545
"devDependencies": {
46-
"ava": "*",
46+
"ava": "^1.0.1",
4747
"codecov": "^3.0.0",
4848
"graceful-fs": "^4.1.11",
49-
"nyc": "^11.3.0",
49+
"nyc": "^13.1.0",
5050
"path-type": "^3.0.0",
5151
"tempy": "^0.2.1",
52-
"xo": "*"
52+
"xo": "^0.23.0"
5353
}
5454
}

readme.md

+11-7
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ $ tree
3232
```js
3333
const makeDir = require('make-dir');
3434

35-
makeDir('unicorn/rainbow/cake').then(path => {
35+
(async () => {
36+
const path = await makeDir('unicorn/rainbow/cake');
37+
3638
console.log(path);
3739
//=> '/Users/sindresorhus/fun/unicorn/rainbow/cake'
38-
});
40+
})();
3941
```
4042

4143
```
@@ -51,18 +53,20 @@ Multiple directories:
5153
```js
5254
const makeDir = require('make-dir');
5355

54-
Promise.all([
55-
makeDir('unicorn/rainbow')
56-
makeDir('foo/bar')
57-
]).then(paths => {
56+
(async () => {
57+
const paths = await Promise.all([
58+
makeDir('unicorn/rainbow')
59+
makeDir('foo/bar')
60+
]);
61+
5862
console.log(paths);
5963
/*
6064
[
6165
'/Users/sindresorhus/fun/unicorn/rainbow',
6266
'/Users/sindresorhus/fun/foo/bar'
6367
]
6468
*/
65-
});
69+
})();
6670
```
6771

6872

test/async.js

+22-18
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,54 @@ import test from 'ava';
44
import tempy from 'tempy';
55
import gracefulFs from 'graceful-fs';
66
import {getFixture, assertDir} from './helpers/util';
7-
import m from '..';
7+
import makeDir from '..';
88

99
test('main', async t => {
1010
const dir = getFixture();
11-
const madeDir = await m(dir);
11+
const madeDir = await makeDir(dir);
1212
t.true(madeDir.length > 0);
1313
assertDir(t, madeDir);
1414
});
1515

1616
test('`fs` option', async t => {
1717
const dir = getFixture();
18-
await m(dir, {fs: gracefulFs});
18+
await makeDir(dir, {fs: gracefulFs});
1919
assertDir(t, dir);
2020
});
2121

2222
test('`mode` option', async t => {
2323
const dir = getFixture();
2424
const mode = 0o744;
25-
await m(dir, {mode});
25+
await makeDir(dir, {mode});
2626
assertDir(t, dir, mode);
2727

2828
// Ensure it's writable
29-
await m(dir);
29+
await makeDir(dir);
3030
assertDir(t, dir, mode);
3131
});
3232

3333
test('dir exists', async t => {
34-
const dir = await m(tempy.directory());
34+
const dir = await makeDir(tempy.directory());
3535
t.true(dir.length > 0);
3636
assertDir(t, dir);
3737
});
3838

3939
test('file exits', async t => {
4040
const fp = tempy.file();
4141
fs.writeFileSync(fp, '');
42-
const err = await t.throwsAsync(m(fp));
43-
t.is(err.code, 'EEXIST');
42+
await t.throwsAsync(makeDir(fp), {code: 'EEXIST'});
4443
});
4544

4645
test('root dir', async t => {
4746
const mode = fs.statSync('/').mode & 0o777;
48-
const dir = await m('/');
47+
const dir = await makeDir('/');
4948
t.true(dir.length > 0);
5049
assertDir(t, dir, mode);
5150
});
5251

5352
test('race two', async t => {
5453
const dir = getFixture();
55-
await Promise.all([m(dir), m(dir)]);
54+
await Promise.all([makeDir(dir), makeDir(dir)]);
5655
assertDir(t, dir);
5756
});
5857

@@ -61,7 +60,7 @@ test('race many', async t => {
6160
const all = [];
6261

6362
for (let i = 0; i < 100; i++) {
64-
all.push(m(dir));
63+
all.push(makeDir(dir));
6564
}
6665

6766
await Promise.all(all);
@@ -70,8 +69,8 @@ test('race many', async t => {
7069

7170
test('handles null bytes in path', async t => {
7271
const dir = path.join(tempy.directory(), 'foo\u0000bar');
73-
const err = await t.throwsAsync(m(dir), /null bytes/);
74-
t.regex(err.code, /ERR_INVALID_ARG_VALUE|ENOENT/);
72+
const error = await t.throwsAsync(makeDir(dir), /null bytes/);
73+
t.regex(error.code, /ERR_INVALID_ARG_VALUE|ENOENT/);
7574
});
7675

7776
test.serial('handles invalid path characters', async t => {
@@ -82,11 +81,14 @@ test.serial('handles invalid path characters', async t => {
8281
});
8382

8483
// Also to please `nyc`
85-
await m(tempy.directory());
84+
await makeDir(tempy.directory());
8685

8786
const dir = path.join(tempy.directory(), 'foo"bar');
88-
const err = await t.throwsAsync(m(dir), /invalid characters/);
89-
t.is(err.code, 'EINVAL');
87+
88+
await t.throwsAsync(makeDir(dir), {
89+
code: 'EINVAL',
90+
message: /invalid characters/
91+
});
9092

9193
Object.defineProperty(process, 'platform', {
9294
value: platform
@@ -96,7 +98,9 @@ test.serial('handles invalid path characters', async t => {
9698
if (process.platform === 'win32') {
9799
test('handles non-existent root', async t => {
98100
// We assume the `o:\` drive doesn't exist on Windows
99-
const err = await t.throwsAsync(m('o:\\foo'), /no such file or directory/);
100-
t.is(err.code, 'ENOENT');
101+
await t.throwsAsync(makeDir('o:\\foo'), {
102+
code: 'ENOENT',
103+
message: /no such file or directory/
104+
});
101105
});
102106
}

test/sync.js

+23-21
Original file line numberDiff line numberDiff line change
@@ -4,85 +4,87 @@ import test from 'ava';
44
import tempy from 'tempy';
55
import gracefulFs from 'graceful-fs';
66
import {getFixture, assertDir} from './helpers/util';
7-
import m from '..';
7+
import makeDir from '..';
88

99
test('main', t => {
1010
const dir = getFixture();
11-
const madeDir = m.sync(dir);
11+
const madeDir = makeDir.sync(dir);
1212
t.true(madeDir.length > 0);
1313
assertDir(t, madeDir);
1414
});
1515

1616
test('`fs` option', t => {
1717
const dir = getFixture();
18-
m.sync(dir, {fs: gracefulFs});
18+
makeDir.sync(dir, {fs: gracefulFs});
1919
assertDir(t, dir);
2020
});
2121

2222
test('`mode` option', t => {
2323
const dir = getFixture();
2424
const mode = 0o744;
25-
m.sync(dir, {mode});
25+
makeDir.sync(dir, {mode});
2626
assertDir(t, dir, mode);
2727

2828
// Ensure it's writable
29-
m.sync(dir);
29+
makeDir.sync(dir);
3030
assertDir(t, dir, mode);
3131
});
3232

3333
test('dir exists', t => {
34-
const dir = m.sync(tempy.directory());
34+
const dir = makeDir.sync(tempy.directory());
3535
t.true(dir.length > 0);
3636
assertDir(t, dir);
3737
});
3838

3939
test('file exits', t => {
4040
const fp = tempy.file();
4141
fs.writeFileSync(fp, '');
42-
const err = t.throws(() => {
43-
m.sync(fp);
44-
});
45-
t.is(err.code, 'EEXIST');
42+
t.throws(() => {
43+
makeDir.sync(fp);
44+
}, {code: 'EEXIST'});
4645
});
4746

4847
test('root dir', t => {
4948
const mode = fs.statSync('/').mode & 0o777;
50-
const dir = m.sync('/');
49+
const dir = makeDir.sync('/');
5150
t.true(dir.length > 0);
5251
assertDir(t, dir, mode);
5352
});
5453

5554
test('race two', t => {
5655
const dir = getFixture();
57-
m.sync(dir);
58-
m.sync(dir);
56+
makeDir.sync(dir);
57+
makeDir.sync(dir);
5958
assertDir(t, dir);
6059
});
6160

6261
test('race many', t => {
6362
const dir = getFixture();
6463

6564
for (let i = 0; i < 100; i++) {
66-
m.sync(dir);
65+
makeDir.sync(dir);
6766
}
6867

6968
assertDir(t, dir);
7069
});
7170

7271
test('handles null bytes in path', t => {
7372
const dir = path.join(tempy.directory(), 'foo\u0000bar');
74-
const err = t.throws(() => {
75-
m.sync(dir);
73+
74+
const error = t.throws(() => {
75+
makeDir.sync(dir);
7676
}, /null bytes/);
77-
t.regex(err.code, /ERR_INVALID_ARG_VALUE|ENOENT/);
77+
t.regex(error.code, /ERR_INVALID_ARG_VALUE|ENOENT/);
7878
});
7979

8080
if (process.platform === 'win32') {
8181
test('handles non-existent root', t => {
8282
// We assume the `o:\` drive doesn't exist on Windows
83-
const err = t.throws(() => {
84-
m.sync('o:\\foo');
85-
}, /no such file or directory/);
86-
t.is(err.code, 'ENOENT');
83+
t.throws(() => {
84+
makeDir.sync('o:\\foo');
85+
}, {
86+
code: 'ENOENT',
87+
message: /no such file or directory/
88+
});
8789
});
8890
}

0 commit comments

Comments
 (0)