All checks were successful
Build & Deploy KLZ Cables / build-and-deploy (push) Successful in 3m59s
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
/**
|
|
* Finds the datasheet PDF path for a given product slug and locale.
|
|
* Checks public/datasheets for matching files.
|
|
*/
|
|
export function getDatasheetPath(slug: string, locale: string): string | null {
|
|
const datasheetsDir = path.join(process.cwd(), 'public', 'datasheets');
|
|
|
|
if (!fs.existsSync(datasheetsDir)) {
|
|
return null;
|
|
}
|
|
|
|
// Normalize slug: remove common suffixes that might not be in the PDF filename
|
|
const normalizedSlug = slug.replace(/-hv$|-mv$/, '');
|
|
|
|
// Subdirectories to search in
|
|
const subdirs = ['', 'low-voltage', 'medium-voltage', 'high-voltage', 'solar'];
|
|
|
|
// List of patterns to try for the current locale
|
|
const patterns = [
|
|
`${slug}-${locale}.pdf`,
|
|
`${slug}-2-${locale}.pdf`,
|
|
`${slug}-3-${locale}.pdf`,
|
|
`${normalizedSlug}-${locale}.pdf`,
|
|
`${normalizedSlug}-2-${locale}.pdf`,
|
|
`${normalizedSlug}-3-${locale}.pdf`,
|
|
];
|
|
|
|
for (const subdir of subdirs) {
|
|
for (const pattern of patterns) {
|
|
const relativePath = path.join(subdir, pattern);
|
|
const filePath = path.join(datasheetsDir, relativePath);
|
|
if (fs.existsSync(filePath)) {
|
|
return `/datasheets/${relativePath}`;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Fallback to English if locale is not 'en'
|
|
if (locale !== 'en') {
|
|
const enPatterns = [
|
|
`${slug}-en.pdf`,
|
|
`${slug}-2-en.pdf`,
|
|
`${slug}-3-en.pdf`,
|
|
`${normalizedSlug}-en.pdf`,
|
|
`${normalizedSlug}-2-en.pdf`,
|
|
`${normalizedSlug}-3-en.pdf`,
|
|
];
|
|
for (const subdir of subdirs) {
|
|
for (const pattern of enPatterns) {
|
|
const relativePath = path.join(subdir, pattern);
|
|
const filePath = path.join(datasheetsDir, relativePath);
|
|
if (fs.existsSync(filePath)) {
|
|
return `/datasheets/${relativePath}`;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|