n8n/packages/cli/src/TranslationHelpers.ts

40 lines
1.1 KiB
TypeScript
Raw Normal View History

2021-11-15 02:19:43 -08:00
import { join, dirname } from 'path';
2021-11-19 03:22:01 -08:00
import { readdir } from 'fs/promises';
import { Dirent } from 'fs';
2021-11-15 02:19:43 -08:00
2021-11-19 03:22:01 -08:00
const ALLOWED_VERSIONED_DIRNAME_LENGTH = [2, 3]; // v1, v10
function isVersionedDirname(dirent: Dirent) {
if (!dirent.isDirectory()) return false;
return (
ALLOWED_VERSIONED_DIRNAME_LENGTH.includes(dirent.name.length) &&
dirent.name.toLowerCase().startsWith('v')
);
}
async function getMaxVersion(from: string) {
const entries = await readdir(from, { withFileTypes: true });
const dirnames = entries.reduce<string[]>((acc, cur) => {
if (isVersionedDirname(cur)) acc.push(cur.name);
return acc;
}, []);
if (!dirnames.length) return null;
return Math.max(...dirnames.map((d) => parseInt(d.charAt(1), 10)));
}
export async function getExpectedNodeTranslationPath(
nodeSourcePath: string,
language: string,
): Promise<string> {
const nodeDir = dirname(nodeSourcePath);
const maxVersion = await getMaxVersion(nodeDir);
return maxVersion
? join(nodeDir, `v${maxVersion}`, 'translations', `${language}.js`)
: join(nodeDir, 'translations', `${language}.js`);
2021-11-15 02:19:43 -08:00
}