feat: smistamento file non-CAD, rinomina cartelle speciali, guida utente
- Aggiunge cartella __SALTATI: i file non-CAD vengono ora copiati in __SALTATI invece di essere ignorati (folderProcessor, zipProcessor) - Rinomina cartella duplicati in __DUPLICATI per coerenza con le altre cartelle speciali (__NON_SMISTATI, __SALTATI) - Aggiunge pulsante "Anteprima saltati" in UI con anteprima e pulizia - Aggiunge guida utente HTML/CSS in renderer/docs/ con sidebar navigabile - Aggiunge menu Help > Documentazione che apre la guida in una finestra - Imposta DEFAULT_DESTINATION a X:\
This commit is contained in:
@@ -3,7 +3,7 @@ const path = require('path');
|
||||
const { getDestinationDecision, getCadInfo } = require('./router');
|
||||
const { buildDestinationIndex } = require('./destinationIndex');
|
||||
const { buildExistingCadKeyIndex, toCadKey } = require('./duplicateIndex');
|
||||
const { prepareUnroutedTarget, prepareDuplicateTarget } = require('./unrouted');
|
||||
const { prepareUnroutedTarget, prepareDuplicateTarget, getSkippedTarget } = require('./unrouted');
|
||||
|
||||
function parseNumericVersion(version) {
|
||||
const rawVersion = String(version || '').trim();
|
||||
@@ -86,7 +86,10 @@ async function processFolder(folder, config) {
|
||||
|
||||
const cadInfo = getCadInfo(file);
|
||||
if (!cadInfo) {
|
||||
const skippedTarget = await getSkippedTarget(file);
|
||||
await fs.copy(fullPath, skippedTarget.destinationPath);
|
||||
result.skipped += 1;
|
||||
result.copied += 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ const { getCadInfo } = require('./router');
|
||||
|
||||
const PRIMARY_UNROUTED_DIR = '/cadroute/__NON_SMISTATI';
|
||||
const HOME_UNROUTED_DIR = path.join(os.homedir(), '.cadroute', '__NON_SMISTATI');
|
||||
const PRIMARY_DUPLICATES_DIR = '/cadroute/duplicati';
|
||||
const HOME_DUPLICATES_DIR = path.join(os.homedir(), '.cadroute', 'duplicati');
|
||||
const PRIMARY_DUPLICATES_DIR = '/cadroute/__DUPLICATI';
|
||||
const HOME_DUPLICATES_DIR = path.join(os.homedir(), '.cadroute', '__DUPLICATI');
|
||||
const PRIMARY_SKIPPED_DIR = '/cadroute/__SALTATI';
|
||||
const HOME_SKIPPED_DIR = path.join(os.homedir(), '.cadroute', '__SALTATI');
|
||||
|
||||
const SPECIAL_TARGETS = {
|
||||
unrouted: {
|
||||
@@ -17,6 +19,10 @@ const SPECIAL_TARGETS = {
|
||||
primary: PRIMARY_DUPLICATES_DIR,
|
||||
fallback: HOME_DUPLICATES_DIR,
|
||||
},
|
||||
skipped: {
|
||||
primary: PRIMARY_SKIPPED_DIR,
|
||||
fallback: HOME_SKIPPED_DIR,
|
||||
},
|
||||
};
|
||||
|
||||
const resolvedDirs = new Map();
|
||||
@@ -178,6 +184,22 @@ async function prepareDuplicateTarget(fileName) {
|
||||
return prepareSpecialTarget('duplicates', fileName);
|
||||
}
|
||||
|
||||
async function resolveSkippedDir() {
|
||||
return resolveTargetDir('skipped');
|
||||
}
|
||||
|
||||
async function getSkippedTarget(fileName) {
|
||||
return getTarget('skipped', fileName);
|
||||
}
|
||||
|
||||
async function listSkippedFiles() {
|
||||
return listTargetFiles('skipped');
|
||||
}
|
||||
|
||||
async function clearSkippedFiles() {
|
||||
return clearTargetFiles('skipped');
|
||||
}
|
||||
|
||||
async function listFilesRecursively(rootDir) {
|
||||
const files = [];
|
||||
|
||||
@@ -251,16 +273,22 @@ async function clearDuplicateFiles() {
|
||||
module.exports = {
|
||||
getUnroutedTarget,
|
||||
getDuplicateTarget,
|
||||
getSkippedTarget,
|
||||
prepareUnroutedTarget,
|
||||
prepareDuplicateTarget,
|
||||
resolveUnroutedDir,
|
||||
resolveDuplicatesDir,
|
||||
resolveSkippedDir,
|
||||
listUnroutedFiles,
|
||||
listDuplicateFiles,
|
||||
listSkippedFiles,
|
||||
clearUnroutedFiles,
|
||||
clearDuplicateFiles,
|
||||
clearSkippedFiles,
|
||||
PRIMARY_UNROUTED_DIR,
|
||||
HOME_UNROUTED_DIR,
|
||||
PRIMARY_DUPLICATES_DIR,
|
||||
HOME_DUPLICATES_DIR,
|
||||
PRIMARY_SKIPPED_DIR,
|
||||
HOME_SKIPPED_DIR,
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@ const { pipeline } = require('stream/promises');
|
||||
const { getDestinationDecision, getCadInfo } = require('./router');
|
||||
const { buildDestinationIndex } = require('./destinationIndex');
|
||||
const { buildExistingCadKeyIndex, toCadKey } = require('./duplicateIndex');
|
||||
const { prepareUnroutedTarget, prepareDuplicateTarget } = require('./unrouted');
|
||||
const { prepareUnroutedTarget, prepareDuplicateTarget, getSkippedTarget } = require('./unrouted');
|
||||
|
||||
function parseNumericVersion(version) {
|
||||
const rawVersion = String(version || '').trim();
|
||||
@@ -82,8 +82,10 @@ async function processZip(zipPath, config) {
|
||||
|
||||
const cadInfo = getCadInfo(baseName);
|
||||
if (!cadInfo) {
|
||||
const skippedTarget = await getSkippedTarget(baseName);
|
||||
await pipeline(entry, fs.createWriteStream(skippedTarget.destinationPath));
|
||||
result.skipped += 1;
|
||||
entry.autodrain();
|
||||
result.copied += 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user