UNPKG

ninjs-lodash

Version:
459 lines (386 loc) 10.8 kB
/** * Settings -> merge(os, env, globals, .folders, .files, config) */ 'use strict' const path = require('path') const os = require('os') const _ = require('lodash') const clc = require('cli-color') const fs = require('fs-extra') const libs = require('../libs') const core = require('../core') const CWD = process.cwd() const ARGV = process.argv const JARGV = _.minimist(ARGV) const PKG = _.pkgup() const PKG_ROOT = PKG ? _.get(PKG, '_root') || CWD : CWD const PKG_PATH = PKG ? _.get(PKG, '_path') : '' const ENV_CLEAN = _.omit(process.env, ['Path']) const ENV_PATH = process.env['Path'] const ENV_PATHS = ENV_PATH ? ENV_PATH.split(path.delimiter) : [] const NODE_ENV = _.trim(getNodeEnv()) const DEBUG_ENV = _.trim(getDebugEnv()) const SYS_DRIVE = get('SystemDrive') const SYS_ROOT = get('SystemRoot') const PUBLIC_ROOT = get('PUBLIC') const USER_NAME = get('USERNAME') const USER_HOME = get('HOME') const USER_LOCAL = get('LOCALAPPDATA') const USER_ROAMING = get('APPDATA') const USER_TEMP = get('TEMP') || get('TMP') const GIT_ROOT = get('GIT_INSTALL_ROOT') const NODE_MODULES_PATH = get('NODE_PATH') const FFMPEG_PATH = get('FFMPEG_PATH') const FFPROBE_PATH = get('FFPROBE_PATH') const LODASH_TEMPLATE_SETTINGS = /<%=([\s\S]+?)%>/g const PROG_FILES = get('ProgramFiles') const PROG_DATA = get('ProgramData') const OPENSSL = get('OPENSSL_CONF') let SVN_SSH = get('SVN_SSH') SVN_SSH = SVN_SSH ? _.path.resolve(SVN_SSH) : '' let CACHE = {} function get(key) { return _.get(process.env, key) || '' } function set(key, v) { _.set(process.env, key, v); return get(key) } function getNodeEnv() { return _.get(JARGV, 'env') || get('NODE_ENV') || 'development' } function getDebugEnv() { return _.get(JARGV, 'debug') || get('DEBUG') || (getNodeEnv() === 'production' ? '' : '*') } // update process.env variables // -> could be different if passed in via command line args set('NODE_ENV', NODE_ENV) set('DEBUG', DEBUG_ENV) const EXE_ARG = _.get(JARGV, '_.[0]') || '' const CMD_ARG = _.get(JARGV, '_.[1]') || '' const MAIN_FILE = _.get(require, 'main.filename') || '' exports = module.exports = { // NODE "node": { // 'development' || 'production' "env": NODE_ENV, // 'C:\\Users\\Stuart\\AppData\\Roaming\\npm\\node_modules' "root": NODE_MODULES_PATH }, // DEBUG "debug": { // 'development' || 'production' "env": DEBUG_ENV }, // PROC "proc": {}, // OS "os": { "eol": os.EOL }, // ENV // "env": { // //"paths": ENV_PATHS // }, "argv": ARGV, "jargv": JARGV, // PATHS "paths": { "sysdrive": SYS_DRIVE, "sysroot": SYS_ROOT, "public": PUBLIC_ROOT, "home": USER_HOME, "local": USER_LOCAL, "roaming": USER_ROAMING, "modules": NODE_MODULES_PATH, "temp": USER_TEMP, "progdata": PROG_DATA, "progfiles": PROG_FILES, "exe": EXE_ARG, "git": GIT_ROOT, "svn": SVN_SSH, "openssl": OPENSSL, "ffmpeg": FFMPEG_PATH, "ffprobe": FFPROBE_PATH, "cwd": CWD, "root": PKG_ROOT, "arg": CMD_ARG, "main": MAIN_FILE, "pkg": PKG_PATH }, // ACCOUNT "account": { "name": USER_NAME, "email": "" }, // USER "user": { // 'Stuart' "name": USER_NAME, // 'STUPC' "domain": get('USERDOMAIN'), // 'STUPC' "roaming": get('USERDOMAIN_ROAMINGPROFILE'), // '\\Users\\Stuart' "homepath": get('HOMEPATH'), // 'C:' "drive": get('HOMEDRIVE'), // 'C:\\Users\\Stuart' "profile": get('USERPROFILE'), // 'C:\\Users\\Stuart' "home": USER_HOME, // 'C:\\Users\\Public' "public": PUBLIC_ROOT, // 'C:\\Users\\Stuart\\AppData\\Roaming' "data": USER_ROAMING, // 'C:\\Users\\Stuart\\AppData\\Local' "local": USER_LOCAL, // 'C:\\Users\\Stuart\\AppData\\Local\\Temp' "temp": USER_TEMP }, // RUNTIME PACKAGE.JSON "pkg": PKG, // JAV - JSON ARG VARS "jav": _.jav(), // GIT "git": { // 'C:\\Program Files\\Git' "root": GIT_ROOT }, // LODASH "lodash": { "template": { "settings": { "interpolate": LODASH_TEMPLATE_SETTINGS } } }, // REQUIRE "require": { "extensions": { ".md": (mod, filepath) => { mod.exports = CACHE[filepath] || fs.readFileSync(filepath, "utf8") CACHE[filepath] = mod.exports return mod }, ".module": (mod, filepath) => { mod.exports = filepath return mod } } }, // FFMPEG "ffmpeg": { // 'C:\\FFMPEG\\bin\\ffmpeg.exe' "root": FFMPEG_PATH, // 'C:\\FFMPEG\\bin\\ffprobe.exe' "probe": FFPROBE_PATH }, // TERMINAL "terminal": { // 'cygwin' "term": get('TERM'), // 'C\bL\bI\bN\bK\b \b$P$G' "prompt": get('PROMPT'), // '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.RB;.RBW' "ext": get('PATHEXT') }, // CLI "cli": { "is_local": CMD_ARG === MAIN_FILE, "margin": " ", "switch": { "delimiter": "--", "delimiters": ["--", "-", "/"] } }, // CMD "cmd": { "defaults": { "cmd": "", // <String> Current working directory of the child process "cwd": CWD, "type": "exec", "args": [], "switches": {}, // <Object> Environment key-value pairs (must be process.env and not null, otherwise errors may occur) // env: _.assign({}, process.env), "shell": "cmd.exe", //shell: path.join('C:', 'Users', 'Stuart', 'Desktop', 'cmder', 'Cmder.exe'), "timeout": 0, // <String> (Default: 'SIGTERM') "killSignal": "SIGTERM", // <Number> largest amount of data (in bytes) allowed on stdout or stderr "maxBuffer": 1024*1024, "encoding": "utf8" } }, // CMDER "cmder": { // '0' "verbose": get('verbose-output'), // 'C:\\Users\\Stuart\\Desktop\\cmder\\config\\user-aliases.cmd' "aliases": get('aliases'), // 'C:\\Users\\Stuart\\Desktop\\cmder\\config\\user-aliases.cmd' "user_aliases": get('user-aliases') }, // SYSTEM // __COMPAT_LAYER:'Installer' "system": { // 'C:' "drive": SYS_DRIVE, // 'C:\\WINDOWS' "root": SYS_ROOT, // 'C:\\WINDOWS' "windir": get('windir') }, // PROGRAMS // 'ProgramFiles(x86)': 'C:\\Program Files (x86)', // ProgramW6432: 'C:\\Program Files' "programs": { // 'C:\\Program Files' "root": PROG_FILES, // 'C:\\Program Files\\Common Files' "common": get('CommonProgramFiles'), // 'C:\\ProgramData' "data": PROG_DATA, // 'C:\\ProgramData' "allusers": get('ALLUSERSPROFILE') }, // PLATFORM "platform": { // 'STUPC' "name": get('COMPUTERNAME'), // 'Windows_NT' "os": get('OS'), // '\\\\STUPC' "server": get('LOGONSERVER'), // PROCESSORS "cpu": { // 'Intel64 Family 6 Model 60 Stepping 3, GenuineIntel' "id": get('PROCESSOR_IDENTIFIER'), // 'AMD64' "arch": get('PROCESSOR_ARCHITECTURE'), // '8' "num": get('NUMBER_OF_PROCESSORS'), // '6' "level": get('PROCESSOR_LEVEL'), // '3c03' "rev": get('PROCESSOR_REVISION') } }, // OPENSSL "openssl": { // 'C:\\OpenSSL-Win64\\openssl.cnf' "root": OPENSSL }, // PLINK "plink": { // 'ssh' "protocol": get('PLINK_PROTOCOL') }, // SVN "svn": { // 'C:\\\\ProgramFiles\\\\Git\\\\bin\\\\ssh.exe' "root": SVN_SSH }, // VISUAL STUDIO "vs": { // 'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio11.0\\Common7\\Tools\\' "VS110": get('VS110COMNTOOLS'), // 'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio12.0\\Common7\\Tools\\' "VS120": get('VS120COMNTOOLS'), // 'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio14.0\\Common7\\Tools\\' "VS140": get('VS140COMNTOOLS'), // 'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio12.0\\VSSDK\\' "VSSDK120": get('VSSDK120Install'), // 'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio14.0\\VSSDK\\' "VSSDK140": get('VSSDK140Install') }, // LAUNCH "launch": { "sdf": false }, // JS "js": { "indent": _.repeat(' ', fs.spaces), "wrap": 120, "sort": false, "align": true, "decimals": 3, "arrayPadding": 1, "objectPadding": 1, "afterComma": 1, "beforeComma": 0, "afterColon": 1, "beforeColon": 1 }, // JSON "json": { "indent": _.repeat(' ', fs.spaces), "wrap": -1, "sort": false, "align": true, "decimals": undefined, "arrayPadding": 1, "objectPadding": 1, "afterComma": 1, "beforeComma": 0, "afterColon": 1, "beforeColon": 1 }, // XML "xml": { explicitCharkey: false, trim: false, normalize: false, normalizeTags: false, attrkey: "$", charkey: "_", explicitArray: true, ignoreAttrs: false, mergeAttrs: false, explicitRoot: true, validator: null, xmlns: false, explicitChildren: false, preserveChildrenOrder: false, childkey: '$$', charsAsChildren: false, includeWhiteChars: false, async: false, strict: true, attrNameProcessors: null, attrValueProcessors: null, tagNameProcessors: null, valueProcessors: null, rootName: 'root', xmldec: { 'version': '1.0', 'encoding': 'UTF-8', 'standalone': true }, doctype: null, renderOpts: { 'pretty': true, 'indent': ' ', 'newline': '\n' }, headless: false, chunkSize: 10000, emptyTag: '', cdata: false } // Eyes - JSON obj inspection + color // "eyes": { // styles: { // Styles applied to stdout // all: 'cyan', // Overall style applied to everything // label: 'underline', // Inspection labels, like 'array' in `array: [1, 2, 3]` // other: 'inverted', // Objects which don't have a literal representation, such as functions // key: 'magenta', // The keys in object literals, like 'a' in `{a: 1}` // special: 'grey', // null, undefined... // string: 'boldgreen', // number: 'magenta', // bool: 'blue', // true false // regexp: 'green' // /\d+/ // }, // pretty: true, // Indent object literals // indent: 2, // hideFunctions: false, // showHidden: true, // sortKeys: false, // stream: process.stdout, // maxLength: false // Truncate output if longer // } }