Skip to content

Commit fcbb76e

Browse files
committed
chore: move helpers to own file, use native Node recursive remove when v > 14.14
1 parent 962d358 commit fcbb76e

3 files changed

Lines changed: 55 additions & 25 deletions

File tree

‎lib/helpers.js‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var fs = require('fs')
2+
var rmrf = require('rimraf')
3+
4+
/**
5+
* Type-checkers
6+
*/
7+
function isBoolean(b) {return typeof b === 'boolean'}
8+
function isNumber(n) {return typeof n === 'number' && !Number.isNaN(n)}
9+
function isObject(o) {return o !== null && typeof o === 'object'}
10+
function isString(s) {return typeof s === 'string'}
11+
12+
/**
13+
* Recursively remove a directory
14+
* @param {string} p
15+
* @param {import('fs').NoParamCallback} [callback]
16+
* @returns void
17+
*/
18+
function rm(p, callback) {
19+
if (Object.prototype.hasOwnProperty.call(fs, 'rm')) {
20+
fs.rm(p, {
21+
recursive: true,
22+
force: true
23+
}, callback)
24+
} else {
25+
// Node 14.14- compat
26+
rmrf(p, { glob: { dot: true } }, callback)
27+
}
28+
}
29+
30+
var helpers = {
31+
isBoolean,
32+
isNumber,
33+
isString,
34+
isObject,
35+
rm
36+
}
37+
38+
module.exports = helpers

‎lib/index.js‎

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var matter = require('gray-matter')
66
var Mode = require('stat-mode')
77
var path = require('path')
88
var readdir = require('recursive-readdir')
9-
var rm = require('rimraf')
9+
var { rm, isString, isBoolean, isObject, isNumber } = require('./helpers')
1010
var thunkify = require('thunkify')
1111
var unyield = require('unyield')
1212
var utf8 = require('is-utf8')
@@ -17,20 +17,6 @@ var Ware = require('ware')
1717
*/
1818

1919
readdir = thunkify(readdir)
20-
rm = thunkify(rm)
21-
22-
23-
/**
24-
* Helpers
25-
*/
26-
27-
var isBoolean = function(b) {return typeof b === 'boolean'}
28-
var isNumber = function(n) {return typeof n === 'number' && !Number.isNaN(n)}
29-
var isObject = function(o) {return o !== null && typeof o === 'object'}
30-
var isString = function(s) {return typeof s === 'string'}
31-
32-
33-
3420

3521
/**
3622
* Export `Metalsmith`.

‎test/index.js‎

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@ var Metalsmith = require('..')
66
var Mode = require('stat-mode')
77
var noop = function(){}
88
var path = require('path')
9-
var rm = require('rimraf').sync
9+
var rm = require('../lib/helpers').rm
1010
var fixture = path.resolve.bind(path, __dirname, 'fixtures')
1111

1212
describe('Metalsmith', function(){
1313
beforeEach(function(){
14-
rm('test/tmp')
14+
return new Promise((resolve, reject) => {
15+
rm('test/tmp', (err) => {
16+
if (err) reject(err)
17+
else resolve()
18+
})
19+
})
1520
})
1621

1722
it('should expose a constructor', function(){
@@ -639,16 +644,17 @@ describe('Metalsmith', function(){
639644
var cmd =
640645
'touch test/fixtures/build/build/empty.md' +
641646
' test/fixtures/build/build/.dotfile'
642-
rm(fixture('build/build'), { glob: { dot: true } })
643-
fs.mkdirSync(fixture('build/build'))
644-
exec(cmd, function (err) {
645-
if (err) return done(err)
646-
m.build(function(err){
647+
rm(fixture('build/build'), () => {
648+
fs.mkdirSync(fixture('build/build'))
649+
exec(cmd, function (err) {
647650
if (err) return done(err)
648-
equal(fixture('build/build'), fixture('build/expected'), {
649-
filter: function () { return true }
651+
m.build(function(err){
652+
if (err) return done(err)
653+
equal(fixture('build/build'), fixture('build/expected'), {
654+
filter: function () { return true }
655+
})
656+
done()
650657
})
651-
done()
652658
})
653659
})
654660
})

0 commit comments

Comments
 (0)