enigma-bbs/core/misc_util.js

52 lines
1.5 KiB
JavaScript
Raw Normal View History

/* jslint node: true */
'use strict';
2014-10-17 02:21:06 +00:00
2017-07-23 19:03:47 +00:00
const paths = require('path');
2014-10-17 02:21:06 +00:00
2017-07-23 19:03:47 +00:00
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;
2014-10-17 02:21:06 +00:00
function isProduction() {
var env = process.env.NODE_ENV || 'dev';
return 'production' === env;
}
2014-10-17 02:21:06 +00:00
function isDevelopment() {
return (!(isProduction()));
}
2014-10-17 02:21:06 +00:00
function valueWithDefault(val, defVal) {
return (typeof val !== 'undefined' ? val : defVal);
}
2014-10-17 02:21:06 +00:00
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);
2017-07-23 19:03:47 +00:00
}
function getCleanEnigmaVersion() {
return packageJson.version
.replace(/-/g, '.')
.replace(/alpha/,'a')
.replace(/beta/,'b')
;
2017-07-23 19:03:47 +00:00
}
// 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
2017-07-23 19:03:47 +00:00
return `ENiGMA-BBS/${version} (${os.platform()}; ${os.arch()}; ${nodeVer})`;
}