unity-find-fault
Version:
A tool to find fault in unity project.
53 lines • 2.49 kB
JavaScript
import fg from "fast-glob";
import fs from "fs-extra";
import path from "path";
import { SVNClient } from "@taiyosen/easy-svn";
import moment from "moment";
import { toolchain } from "../toolchain.js";
export class LegacyFinder {
async lookUp() {
if (!toolchain.opts.input) {
throw 'use -i to specify the base date';
}
const baseDate = moment(toolchain.opts.input);
const svn = new SVNClient();
svn.setConfig({ silent: true });
const legacies = [];
const reserves = [];
const legacyOut = [];
const reservedOut = [];
const dir = path.join(toolchain.opts.projectRoot, 'Assets/AssetSources/ui/atlas/specialize/new');
const moveTo = 'Assets/AssetSources/ui/atlas/specialize/new2';
const files = await fg(['**/*.png', '**/*.jpg', '**/*.tga'], { cwd: dir });
for (const f of files) {
const file = path.join(dir, f);
const info = await svn.info([file], { revision: 'BASE' });
const authorMch = info.match(/Last Changed Author: (\S+)/);
const dateMch = info.match(/Last Changed Date: (\S+)/);
if (authorMch != null && dateMch != null) {
const resolvedFile = path.relative(toolchain.opts.projectRoot, file).replaceAll('\\', '/');
const author = authorMch[1];
const date = dateMch[1];
if (moment(date).diff(baseDate, 'd') < 0) {
legacies.push(author + ', ' + date + ', ' + file);
legacyOut.push(resolvedFile, resolvedFile + '.meta');
}
else {
reserves.push(author + ', ' + date + ', ' + file);
reservedOut.push('svn mv ' + resolvedFile + ' ' + moveTo, 'svn mv ' + resolvedFile + '.meta ' + moveTo);
}
}
}
console.log(`----------------legacy: ${legacies.length}----------------`);
for (const l of legacies) {
console.log(l);
}
console.log(`----------------reserved: ${reserves.length}----------------`);
for (const r of reserves) {
console.log(r);
}
await fs.writeFile(toolchain.opts.output?.replace('$', 'legacy') || 'legacy.txt', legacyOut.join('\n'));
await fs.writeFile(toolchain.opts.output?.replace('$', 'reserved') || 'reserved.txt', reservedOut.join('\n') + '\n');
}
}
//# sourceMappingURL=LegacyFinder.js.map