aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js
diff options
context:
space:
mode:
authorKat Marchán <kzm@sykosomatic.org>2017-07-14 10:52:48 -0700
committerJames M Snell <jasnell@gmail.com>2017-07-17 08:49:02 -0700
commit24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b (patch)
tree9c32bd08c43de8721e54cd846d816fbe6cdf056e /deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js
parentfa73087fcf4bd14db7791120e688a0a508885b64 (diff)
downloadandroid-node-v8-24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b.tar.gz
android-node-v8-24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b.tar.bz2
android-node-v8-24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b.zip
deps: upgrade npm to 5.3.0
PR-URL: https://github.com/nodejs/node/pull/14235 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js')
-rw-r--r--deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js b/deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js
new file mode 100644
index 0000000000..1ada7a4949
--- /dev/null
+++ b/deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/os-locale/index.js
@@ -0,0 +1,101 @@
+'use strict';
+const execa = require('execa');
+const lcid = require('lcid');
+const mem = require('mem');
+
+const defaultOpts = {spawn: true};
+const defaultLocale = 'en_US';
+
+function getEnvLocale(env) {
+ env = env || process.env;
+ return env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;
+}
+
+function parseLocale(x) {
+ const env = x.split('\n').reduce((env, def) => {
+ def = def.split('=');
+ env[def[0]] = def[1].replace(/^"|"$/g, '');
+ return env;
+ }, {});
+ return getEnvLocale(env);
+}
+
+function getLocale(str) {
+ return (str && str.replace(/[.:].*/, ''));
+}
+
+function getAppleLocale() {
+ return execa.stdout('defaults', ['read', '-g', 'AppleLocale']);
+}
+
+function getAppleLocaleSync() {
+ return execa.sync('defaults', ['read', '-g', 'AppleLocale']).stdout;
+}
+
+function getUnixLocale() {
+ if (process.platform === 'darwin') {
+ return getAppleLocale();
+ }
+
+ return execa.stdout('locale')
+ .then(stdout => getLocale(parseLocale(stdout)));
+}
+
+function getUnixLocaleSync() {
+ if (process.platform === 'darwin') {
+ return getAppleLocaleSync();
+ }
+
+ return getLocale(parseLocale(execa.sync('locale').stdout));
+}
+
+function getWinLocale() {
+ return execa.stdout('wmic', ['os', 'get', 'locale'])
+ .then(stdout => {
+ const lcidCode = parseInt(stdout.replace('Locale', ''), 16);
+ return lcid.from(lcidCode);
+ });
+}
+
+function getWinLocaleSync() {
+ const stdout = execa.sync('wmic', ['os', 'get', 'locale']).stdout;
+ const lcidCode = parseInt(stdout.replace('Locale', ''), 16);
+ return lcid.from(lcidCode);
+}
+
+module.exports = mem(opts => {
+ opts = opts || defaultOpts;
+ const envLocale = getEnvLocale();
+ let thenable;
+
+ if (envLocale || opts.spawn === false) {
+ thenable = Promise.resolve(getLocale(envLocale));
+ } else if (process.platform === 'win32') {
+ thenable = getWinLocale();
+ } else {
+ thenable = getUnixLocale();
+ }
+
+ return thenable.then(locale => locale || defaultLocale)
+ .catch(() => defaultLocale);
+});
+
+module.exports.sync = mem(opts => {
+ opts = opts || defaultOpts;
+ const envLocale = getEnvLocale();
+ let res;
+
+ if (envLocale || opts.spawn === false) {
+ res = getLocale(envLocale);
+ } else {
+ try {
+ if (process.platform === 'win32') {
+ res = getWinLocaleSync();
+ } else {
+ res = getUnixLocaleSync();
+ }
+ } catch (err) {}
+ }
+
+ return res || defaultLocale;
+});