1 | #!/usr/bin/env node
|
2 | import arg from 'arg'
|
3 | import {magenta, bold} from 'kleur/colors'
|
4 | import action from './index.js'
|
5 |
|
6 | const usage = `
|
7 | @erickmerchant/css
|
8 |
|
9 | ${bold('Usage:')}
|
10 |
|
11 | $ ${magenta('css')} [options] <input> <output>
|
12 |
|
13 | ${bold('Options:')}
|
14 |
|
15 | -w, --watch watch for changes
|
16 | -d, --dev don't minify. throw on missing
|
17 | -h, --help display this message
|
18 |
|
19 | `
|
20 |
|
21 | const program = async () => {
|
22 | try {
|
23 | const args = arg({
|
24 | '--watch': Boolean,
|
25 | '--dev': Boolean,
|
26 | '--help': Boolean,
|
27 | '-w': '--watch',
|
28 | '-d': '--dev',
|
29 | '-h': '--help'
|
30 | })
|
31 |
|
32 | if (args['--help']) {
|
33 | process.stdout.write(usage)
|
34 |
|
35 | process.exit(2)
|
36 | }
|
37 |
|
38 | if (args._.length < 2) {
|
39 | throw RangeError('too few arguments')
|
40 | }
|
41 |
|
42 | if (args._.length > 2) {
|
43 | throw RangeError('too many arguments')
|
44 | }
|
45 |
|
46 | const [input, output] = args._
|
47 |
|
48 | Object.assign(args, {input, output})
|
49 |
|
50 | await action(args)
|
51 | } catch (error) {
|
52 | process.stderr.write(`${error}\n`)
|
53 |
|
54 | process.exit(1)
|
55 | }
|
56 | }
|
57 |
|
58 | program()
|