1234567891011121314151617181920212223242526272829303132 |
- const fs = require('../fs.js')
- const getOptions = require('../common/get-options.js')
- const node = require('../common/node.js')
- const owner = require('../common/owner.js')
- const polyfill = require('./polyfill.js')
- // node 10.12.0 added the options parameter, which allows recursive and mode
- // properties to be passed
- const useNative = node.satisfies('>=10.12.0')
- // extends mkdir with the ability to specify an owner of the new dir
- const mkdir = async (path, opts) => {
- const options = getOptions(opts, {
- copy: ['mode', 'recursive', 'owner'],
- wrap: 'mode',
- })
- const { uid, gid } = await owner.validate(path, options.owner)
- // the polyfill is tested separately from this module, no need to hack
- // process.version to try to trigger it just for coverage
- // istanbul ignore next
- const result = useNative
- ? await fs.mkdir(path, options)
- : await polyfill(path, options)
- await owner.update(path, uid, gid)
- return result
- }
- module.exports = mkdir
|