1
0
Fork 0
mirror of synced 2024-09-19 10:48:30 +12:00
budibase/packages/pro/node_modules/umask/index.js~
Rory Powell 578b599428 Lint
2023-05-17 14:10:22 +01:00

68 lines
No EOL
1.6 KiB
JavaScript

// commands for handling umask
var util = require("util")
var log = require("npmlog")
var defaultUmask = 0022
var defaultUmaskString = toString(defaultUmask)
exports.toString = toString
exports.fromString = fromString
exports.validate = validate
function toString(val) {
val = val.toString(8)
while (val.length < 4) val = "0" + val
return val
}
function validate (data, k, val) {
// must be either an integer or an octal string.
if (typeof val === "number") {
data[k] = val
return true
}
if (typeof val === "string") {
if (val.charAt(0) !== "0" || isNaN(val)) return false
data[k] = parseInt(val, 8)
return true
}
return false
}
function fromString(val, cb) {
// synchronous callback, no zalgo
_fromString(val, cb || function (err, result) {
if (err) log.warn("invalid umask", err.message)
val = result
})
return val
}
function _fromString(val, cb) {
if(typeof val === "string") {
if (!/^[0-7]+$/.test(val)) {
return cb(new Error(util.format("Expected octal string, got %j, defaulting to %j",
val, defaultUmaskString)),
defaultUmask)
}
val = parseInt(val, 8)
} else if(typeof val !== "number") {
return cb(new Error(util.format("Expected number or octal string, got %j, defaulting to %j",
val, defaultUmaskString)),
defaultUmask)
}
if ((val < 0) || (val > 511)) {
return cb(new Error(util.format("Must be in range 0..511 (0000..0777), got %j", val)),
defaultUmask)
}
cb(null, val)
}