34 lines
1.0 KiB
JavaScript
Executable File
34 lines
1.0 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
import {unlink} from 'fs/promises';
|
|
import {DirScanner} from '../lib/dir-scanner.ts';
|
|
import chalk from 'chalk';
|
|
|
|
const {red, green} = chalk;
|
|
|
|
const [node, script, target, param] = process.argv;
|
|
if (!target) {
|
|
console.error(`Usage ${node} ${script} DIRECTORY`)
|
|
process.exit(1)
|
|
}
|
|
|
|
(async function () {
|
|
const localDir = new DirScanner();
|
|
const targetDir = new DirScanner();
|
|
console.log('Scanning directories...')
|
|
let local = process.cwd();
|
|
await localDir.addDirectory(local);
|
|
await targetDir.addDirectory(target)
|
|
console.log('Comparing...');
|
|
const {duplicated, unique} = await localDir.compareTo(targetDir);
|
|
|
|
for (let [name, copy] of duplicated)
|
|
console.log(`${green('DUPLICATES:')} ${name.slice(local.length)} == ${copy.slice(target.length)}`);
|
|
for (let name of unique)
|
|
console.log(`${red('UNIQUE:')} ${name.slice(local.length)}`);
|
|
console.log(`Duplicated ${duplicated.size}, unique ${unique.length}`)
|
|
|
|
if (param === 'delete')
|
|
for (let [name] of duplicated)
|
|
await unlink(name)
|
|
})();
|