2 /* eslint-disable import/unambiguous */
5 const fs = require('fs');
6 const updateNotifier = require('update-notifier');
7 const meow = require('meow');
8 const globby = require('globby');
9 const getStdin = require('get-stdin');
10 const pify = require('pify');
11 const { arrify, ignore } = require('./utils');
12 const { format } = require('./index');
17 $ prettier-stylelint [<file|glob> ...]
20 --ignore Additional paths to ignore [Can be set multiple times]
21 --extension Additional extension to lint [Can be set multiple times]
22 --cwd=<dir> Working directory for files
23 --stdin Validate/fix code from stdin ('prettier-stylelint -' also works)
24 --write Edit files in place (DRAGONS AHEAD !!)
25 --quiet -q Only log std.err
29 $ prettier-stylelint index.js
30 $ prettier-stylelint *.js !foo.js
31 $ echo 'a[id="foo"] { content: "x"; }' | prettier-stylelint --stdin
33 Default pattern when no arguments:
34 **/*.{css,scss,less,sss}
37 string: ['_', 'ignore', 'extension', 'cwd'],
38 boolean: ['stdin', 'write'],
48 updateNotifier({ pkg: cli.pkg }).notify();
50 let input = cli.input;
51 const opts = cli.flags;
52 const DEFAULT_EXTENSION = ['css', 'scss', 'less', 'sss'];
53 const DEFAULT_PATTERN = `**/*.{${DEFAULT_EXTENSION.join(',')}}`;
54 const DEFAULT_IGNORE = [
56 '**/bower_components/**',
60 '**/*.min.{css,scss,less,sss}',
61 '**/bundle.{css,scss,less,sss}',
62 'fixture{-*,}.{css,scss,less,sss}',
64 '{test,tests,spec,__tests__}/fixture{s,}/**',
70 ignore: DEFAULT_IGNORE.concat(arrify(opts.ignore)),
71 extensions: DEFAULT_EXTENSION.concat(arrify(opts.extension)),
77 if (input[0] === '-') {
87 }).then(source => process.stdout.write(source))
90 console.error(err.stack || err);
94 const isEmptyPatterns = input.length === 0;
96 input = isEmptyPatterns ? [DEFAULT_PATTERN] : arrify(input);
99 ignore: options.ignore,
104 paths = ignore(paths, options);
109 text: fs.readFileSync(path, 'utf8'),
113 .then((formatted) => {
114 if (!options.quiet) {
115 console.log(formatted);
118 return pify(fs.writeFile)(path, formatted);
125 `prettier-stylelint [ERROR]: There was an error formatting "${path}"\n`
127 console.error(err.stack || err);
129 process.exitCode = 1;
135 console.error(err.stack || err);
136 process.exitCode = 1;