| 'use strict' |
| |
| const fs = require('@npmcli/fs') |
| |
| const fixOwner = require('./fix-owner') |
| const path = require('path') |
| |
| module.exports.mkdir = mktmpdir |
| |
| function mktmpdir (cache, opts = {}) { |
| const { tmpPrefix } = opts |
| const tmpDir = path.join(cache, 'tmp') |
| return fs.mkdir(tmpDir, { recursive: true, owner: 'inherit' }) |
| .then(() => { |
| // do not use path.join(), it drops the trailing / if tmpPrefix is unset |
| const target = `${tmpDir}${path.sep}${tmpPrefix || ''}` |
| return fs.mkdtemp(target, { owner: 'inherit' }) |
| }) |
| } |
| |
| module.exports.withTmp = withTmp |
| |
| function withTmp (cache, opts, cb) { |
| if (!cb) { |
| cb = opts |
| opts = {} |
| } |
| return fs.withTempDir(path.join(cache, 'tmp'), cb, opts) |
| } |
| |
| module.exports.fix = fixtmpdir |
| |
| function fixtmpdir (cache) { |
| return fixOwner(cache, path.join(cache, 'tmp')) |
| } |