scripts/bin/has-copy.ts

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)
})();