refactor: usa decisione di destinazione unificata per folder e zip
This commit is contained in:
@@ -2,10 +2,12 @@ const unzipper = require('unzipper');
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const { pipeline } = require('stream/promises');
|
||||
const { findDestination, isCadFile } = require('./router');
|
||||
const { getDestinationDecision, isCadFile } = require('./router');
|
||||
const { buildDestinationIndex } = require('./destinationIndex');
|
||||
|
||||
async function processZip(zipPath, config) {
|
||||
const stream = fs.createReadStream(zipPath).pipe(unzipper.Parse({ forceStream: true }));
|
||||
const destinationIndex = await buildDestinationIndex(config?.destination);
|
||||
const result = {
|
||||
scanned: 0,
|
||||
copied: 0,
|
||||
@@ -29,16 +31,16 @@ async function processZip(zipPath, config) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const destDir = findDestination(baseName, config);
|
||||
const decision = getDestinationDecision(baseName, config, destinationIndex);
|
||||
const destDir = decision.destination;
|
||||
|
||||
if (!destDir) {
|
||||
result.skipped += 1;
|
||||
result.details.push({ file: baseName, reason: 'Nessuna regola trovata' });
|
||||
result.details.push({ file: baseName, reason: decision.reason || 'Nessuna regola trovata' });
|
||||
entry.autodrain();
|
||||
continue;
|
||||
}
|
||||
|
||||
await fs.ensureDir(destDir);
|
||||
const dest = path.join(destDir, baseName);
|
||||
await pipeline(entry, fs.createWriteStream(dest));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user