Repository navigation
Expand file tree
/
Copy pathcli.js
More file actions
68 lines (53 loc) · 2.27 KB
/
Copy pathcli.js
File metadata and controls
68 lines (53 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env node
import fs from 'node:fs';
import process from 'node:process';
import path from 'node:path';
import { program } from 'commander';
import picocolors from 'picocolors';
import fusv from './index.js';
const { version } = JSON.parse(fs.readFileSync(new URL('package.json', import.meta.url)));
program
.arguments('[folders]')
.version(version, '-v, --version')
.option('-i, --ignore <ignoredVars>', 'ignore variables, comma separated', '')
.option('-e, --extension [fileTypes...]', 'file extension to search', ['scss'])
.parse();
async function main() {
const directories = program.args;
const programOptions = program.opts();
const options = {
ignore: programOptions.ignore.split(','),
fileExtensions: programOptions.extension
};
console.log('Looking for unused variables');
const executions = await Promise.allSettled(directories.map(path => executeForPath(path, options)));
let status = 0;
for (const result of executions) {
if (result.status === 'rejected') {
console.log(picocolors.red(result.reason));
status = 1;
}
}
process.exit(status);
}
const executeForPath = async(arg, options) => {
const dir = path.resolve(arg);
const unusedVars = await fusv.findAsync(dir, options);
console.log(`\nSearching for unused variables in "${picocolors.cyan(dir)}" folder, ${picocolors.cyan(options.fileExtensions.join(', '))} files...`);
console.log(`${picocolors.cyan(unusedVars.total)} total variables.`);
const unusedVarsNumber = unusedVars.unused.length;
if (unusedVarsNumber > 0) {
console.log(`${picocolors.yellow(unusedVarsNumber)} ${unusedVarsNumber > 1 ? 'are' : 'is'} not used!`);
for (const { name, file, line } of unusedVars.unused) {
console.log(`Variable ${picocolors.red(name)} is not being used! ${picocolors.gray(file)}:${picocolors.yellow(line)}`);
}
throw new Error(`Found ${unusedVarsNumber} unused variable${unusedVarsNumber > 1 ? 's' : ''} in "${picocolors.cyan(dir)}" folder`);
}
console.log(picocolors.green(`No unused variables found in "${dir}"!`));
};
const args = program.args.filter(arg => typeof arg === 'string');
if (args.length > 0) {
main();
} else {
program.help();
}