feat: review all remote HolodoriDB changes before collection
This commit is contained in:
@@ -1,16 +1,14 @@
|
||||
import { createHash } from 'node:crypto';
|
||||
import { execFileSync } from 'node:child_process';
|
||||
import { prepareHolodoriDbSource, readHolodoriDbText } from './holodoridb-source.mjs';
|
||||
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
import process from 'node:process';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const rawRoot = path.join(projectRoot, 'data', 'raw', 'holodoridb');
|
||||
const outputRoot = path.join(projectRoot, 'data', 'holodoridb');
|
||||
const appDataRoot = path.join(projectRoot, 'src', 'lib', 'data');
|
||||
const cardOverridesPath = path.join(projectRoot, 'data', 'card-overrides.csv');
|
||||
const offline = process.argv.includes('--offline');
|
||||
|
||||
function parseCsvLine(line) {
|
||||
const values = [];
|
||||
@@ -136,52 +134,12 @@ const localizationTableNames = [
|
||||
'SkillTreePoint'
|
||||
];
|
||||
|
||||
function runGit(args, options = {}) {
|
||||
return execFileSync('git', args, {
|
||||
cwd: projectRoot,
|
||||
encoding: 'utf8',
|
||||
stdio: ['ignore', 'pipe', 'inherit'],
|
||||
...options
|
||||
}).trim();
|
||||
}
|
||||
|
||||
function gitAt(repositoryPath, args) {
|
||||
const normalizedPath = repositoryPath.replaceAll('\\', '/');
|
||||
return runGit(['-c', `safe.directory=${normalizedPath}`, '-C', repositoryPath, ...args]);
|
||||
}
|
||||
|
||||
async function prepareSource(locale, source) {
|
||||
const repositoryPath = path.join(rawRoot, locale);
|
||||
|
||||
try {
|
||||
gitAt(repositoryPath, ['rev-parse', '--git-dir']);
|
||||
if (offline) {
|
||||
process.stdout.write(`Using cached ${locale} source...\n`);
|
||||
} else {
|
||||
process.stdout.write(`Updating ${locale} source...\n`);
|
||||
gitAt(repositoryPath, ['fetch', '--depth', '1', 'origin', 'main']);
|
||||
}
|
||||
} catch {
|
||||
process.stdout.write(`Cloning ${locale} source...\n`);
|
||||
await mkdir(path.dirname(repositoryPath), { recursive: true });
|
||||
runGit(['clone', '--depth', '1', source.repository, repositoryPath]);
|
||||
}
|
||||
|
||||
const commit = gitAt(repositoryPath, ['rev-parse', 'origin/main']);
|
||||
const commitDate = gitAt(repositoryPath, ['show', '-s', '--format=%cI', commit]);
|
||||
const commitMessage = gitAt(repositoryPath, ['show', '-s', '--format=%s', commit]);
|
||||
|
||||
return {
|
||||
...source,
|
||||
repositoryPath,
|
||||
commit,
|
||||
commitDate,
|
||||
commitMessage
|
||||
};
|
||||
function prepareSource(locale, source) {
|
||||
return { ...source, ...prepareHolodoriDbSource(locale) };
|
||||
}
|
||||
|
||||
function readSourceFile(source, filename) {
|
||||
return gitAt(source.repositoryPath, ['show', `${source.commit}:${filename}`]);
|
||||
return readHolodoriDbText(source, filename);
|
||||
}
|
||||
|
||||
function parseSourceTable(source, filename) {
|
||||
|
||||
Reference in New Issue
Block a user