62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
/* jslint node: true */
|
|
'use strict';
|
|
|
|
// deps
|
|
const paths = require('path');
|
|
const os = require('os');
|
|
|
|
const packageJson = require('../package.json');
|
|
|
|
exports.isProduction = isProduction;
|
|
exports.isDevelopment = isDevelopment;
|
|
exports.valueWithDefault = valueWithDefault;
|
|
exports.resolvePath = resolvePath;
|
|
exports.getCleanEnigmaVersion = getCleanEnigmaVersion;
|
|
exports.getEnigmaUserAgent = getEnigmaUserAgent;
|
|
exports.valueAsArray = valueAsArray;
|
|
|
|
function isProduction() {
|
|
var env = process.env.NODE_ENV || 'dev';
|
|
return 'production' === env;
|
|
}
|
|
|
|
function isDevelopment() {
|
|
return (!(isProduction()));
|
|
}
|
|
|
|
function valueWithDefault(val, defVal) {
|
|
return (typeof val !== 'undefined' ? val : defVal);
|
|
}
|
|
|
|
function resolvePath(path) {
|
|
if(path.substr(0, 2) === '~/') {
|
|
var mswCombined = process.env.HOMEDRIVE + process.env.HOMEPATH;
|
|
path = (process.env.HOME || mswCombined || process.env.HOMEPATH || process.env.HOMEDIR || process.cwd()) + path.substr(1);
|
|
}
|
|
return paths.resolve(path);
|
|
}
|
|
|
|
function getCleanEnigmaVersion() {
|
|
return packageJson.version
|
|
.replace(/-/g, '.')
|
|
.replace(/alpha/,'a')
|
|
.replace(/beta/,'b')
|
|
;
|
|
}
|
|
|
|
// See also ftn_util.js getTearLine() & getProductIdentifier()
|
|
function getEnigmaUserAgent() {
|
|
// can't have 1/2 or ½ in User-Agent according to RFC 1945 :(
|
|
const version = getCleanEnigmaVersion();
|
|
const nodeVer = process.version.substr(1); // remove 'v' prefix
|
|
|
|
return `ENiGMA-BBS/${version} (${os.platform()}; ${os.arch()}; ${nodeVer})`;
|
|
}
|
|
|
|
function valueAsArray(value) {
|
|
if(!value) {
|
|
return [];
|
|
}
|
|
return Array.isArray(value) ? value : [ value ];
|
|
}
|