.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / browserslist / cli.js
1 #!/usr/bin/env node
2
3 var browserslist = require('./')
4 var pkg = require('./package.json')
5 var args = process.argv.slice(2)
6
7 var USAGE = 'Usage:\n' +
8             '  ' + pkg.name + '\n' +
9             '  ' + pkg.name + ' "QUERIES"\n' +
10             '  ' + pkg.name + ' --config="path/to/browserlist/file"\n' +
11             '  ' + pkg.name + ' --coverage "QUERIES"\n' +
12             '  ' + pkg.name + ' --coverage=US "QUERIES"\n' +
13             '  ' + pkg.name + ' --env="environment name defined in config"\n' +
14             '  ' + pkg.name + ' --stats="path/to/browserlist/stats/file"'
15
16 function isArg (arg) {
17   return args.some(function (str) {
18     return str === arg || str.indexOf(arg + '=') === 0
19   })
20 }
21
22 function error (msg) {
23   process.stderr.write(pkg.name + ': ' + msg + '\n')
24   process.exit(1)
25 }
26
27 if (isArg('--help') || isArg('-h')) {
28   process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n')
29 } else if (isArg('--version') || isArg('-v')) {
30   process.stdout.write(pkg.name + ' ' + pkg.version + '\n')
31 } else {
32   var mode = 'browsers'
33   var opts = { }
34   var queries
35   var country
36
37   for (var i = 0; i < args.length; i++) {
38     if (args[i][0] !== '-') {
39       queries = args[i].replace(/^['"]|['"]$/g, '')
40       continue
41     }
42
43     var arg = args[i].split('=')
44     var name = arg[0]
45     var value = arg[1]
46
47     if (value) value = value.replace(/^['"]|['"]$/g, '')
48
49     if (name === '--config' || name === '-b') {
50       opts.config = value
51     } else if (name === '--env' || name === '-e') {
52       opts.env = value
53     } else if (name === '--stats' || name === '-s') {
54       opts.stats = value
55     } else if (name === '--coverage' || name === '-c') {
56       mode = 'coverage'
57       if (value) country = value
58     } else {
59       error('Unknown arguments ' + args[i] + '.\n\n' + USAGE)
60     }
61   }
62
63   if (!queries && !opts.config) {
64     if (browserslist.findConfig(process.cwd())) {
65       opts.path = process.cwd()
66     } else {
67       error(
68         'Browserslist config did not found. ' +
69         'Define queries or config path.' +
70         '\n\n' + USAGE
71       )
72     }
73   }
74
75   var browsers
76   try {
77     browsers = browserslist(queries, opts)
78   } catch (e) {
79     if (e.name === 'BrowserslistError') {
80       error(e.message)
81     } else {
82       throw e
83     }
84   }
85
86   if (mode === 'browsers') {
87     browsers.forEach(function (browser) {
88       process.stdout.write(browser + '\n')
89     })
90   } else {
91     var result = browserslist.coverage(browsers, country)
92     var round = Math.round(result * 100) / 100.0
93
94     var end = 'globally'
95     if (country && country !== 'global') {
96       end = 'in the ' + country.toUpperCase()
97     }
98
99     process.stdout.write(
100       'These browsers account for ' + round + '% of all users ' +
101             end + '\n')
102   }
103 }