mirror of https://github.com/mifi/lossless-cut
fix test
parent
6926df5f00
commit
e777aba0d1
@ -0,0 +1,49 @@
|
|||||||
|
import i18n from 'i18next';
|
||||||
|
|
||||||
|
import { isMac, isWindows, hasDuplicates } from '../util';
|
||||||
|
|
||||||
|
const { sep: pathSep, join: pathJoin, normalize: pathNormalize } = window.require('path');
|
||||||
|
const isDev = window.require('electron-is-dev');
|
||||||
|
|
||||||
|
// eslint-disable-next-line import/prefer-default-export
|
||||||
|
export function getOutSegError({ fileNames, filePath, outputDir }) {
|
||||||
|
if (hasDuplicates(fileNames)) return i18n.t('Template results in duplicate file names');
|
||||||
|
|
||||||
|
let error;
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
|
for (const fileName of fileNames) {
|
||||||
|
if (!filePath) {
|
||||||
|
error = 'No file path';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const invalidChars = [pathSep];
|
||||||
|
|
||||||
|
// Colon is invalid on windows https://github.com/mifi/lossless-cut/issues/631 and on MacOS, but not Linux https://github.com/mifi/lossless-cut/issues/830
|
||||||
|
if (isMac || isWindows) invalidChars.push(':');
|
||||||
|
|
||||||
|
const outPath = pathNormalize(pathJoin(outputDir, fileName));
|
||||||
|
const sameAsInputPath = outPath === pathNormalize(filePath);
|
||||||
|
const windowsMaxPathLength = 259;
|
||||||
|
const shouldCheckPathLength = isWindows || isDev;
|
||||||
|
|
||||||
|
if (fileName.length === 0) {
|
||||||
|
error = i18n.t('At least one resulting file name has no length');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (invalidChars.some((c) => fileName.includes(c))) {
|
||||||
|
error = i18n.t('At least one resulting file name contains invalid characters');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (sameAsInputPath) {
|
||||||
|
error = i18n.t('At least one resulting file name is the same as the input path');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (shouldCheckPathLength && outPath.length >= windowsMaxPathLength) {
|
||||||
|
error = i18n.t('At least one resulting file will have a too long path');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return error;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue