From f16afd8baa4022dbc29084d831434a53ef52aabb Mon Sep 17 00:00:00 2001 From: Pier-Paolo Mammi Date: Mon, 29 Jun 2026 16:36:13 +0200 Subject: [PATCH] add copy of JS files --- scripts/generate-http-docs.js | 73 +++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 3 deletions(-) diff --git a/scripts/generate-http-docs.js b/scripts/generate-http-docs.js index cc5d6d0..d1ece61 100644 --- a/scripts/generate-http-docs.js +++ b/scripts/generate-http-docs.js @@ -654,6 +654,72 @@ function writeEnvironmentTemplates(sourceDir, outputRoot) { return dotenvVariablesByTarget; } +function writeJsFiles(sourceDir, outputRoot) { + const targets = []; + // const dotenvVariablesByTarget = new Map(); + + const visit = (currentDir) => { + const entries = fs.readdirSync(currentDir, { withFileTypes: true }); + const hasJsFiles = entries.some((entry) => entry.isFile() && /\.js$/i.test(entry.name)); + + if (hasJsFiles) { + targets.push(currentDir); + } + + for (const entry of entries) { + if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === 'node_modules') { + continue; + } + visit(path.join(currentDir, entry.name)); + } + }; + + visit(sourceDir); + + for (const dir of targets) { + const relativeDir = path.relative(sourceDir, dir); + const targetDir = relativeDir && relativeDir !== '.' ? path.join(outputRoot, relativeDir) : outputRoot; + ensureDir(targetDir); + + const jsFileDir = dir; + if (!fs.existsSync(jsFileDir)) { + continue; + } + + const jsFiles = fs.readdirSync(jsFileDir, { withFileTypes: true }) + .filter((entry) => entry.isFile() && /\.js$/i.test(entry.name)) + .map((entry) => [ path.join(jsFileDir, entry.name), path.join(targetDir, entry.name) ]); + + // const variableNames = []; + // const seenNames = new Set(); + + // for (const jsFile of jsFiles) { + // const parsed = parseYaml(jsFile); + // const variables = Array.isArray(parsed.variables) ? parsed.variables : []; + // for (const variable of variables) { + // if (!variable || !variable.name) { + // continue; + // } + // const name = String(variable.name).trim(); + // if (!name || seenNames.has(name)) { + // continue; + // } + // seenNames.add(name); + // variableNames.push(name); + // } + // } + + // const templateContent = variableNames.length > 0 ? `${variableNames.map(v => `${v}=${DEFAULT_ENV_VAR_VALUE}`).join('\n')}\n` : ''; + // fs.writeFileSync(path.join(targetDir, '.env.template'), templateContent, 'utf8'); + // dotenvVariablesByTarget.set(targetDir, new Set(variableNames)); + for (const jsFile of jsFiles) { + fs.copyFileSync(jsFile[0], jsFile[1]); + } + } + + return targets; +} + function cleanFolder(dir) { if (!fs.existsSync(dir)) return; @@ -670,16 +736,15 @@ function cleanFolder(dir) { const remaining = fs.readdirSync(fullPath); if (remaining.length === 0) { fs.rmdirSync(fullPath); - //console.log(`🗑️ Cartella rimossa: ${fullPath}`); } } else if (entry.isFile()) { // File da eliminare if ( + entry.name.endsWith(".js") || entry.name.endsWith(".http") || entry.name.endsWith(".env.template") ) { fs.unlinkSync(fullPath); - console.log(`🗑️ File rimosso: ${fullPath}`); } } } @@ -712,6 +777,8 @@ function main() { const outputRoot = path.join(outputBaseRoot, collection.name); ensureDir(outputRoot); + const writtenJsFiles = writeJsFiles(sourceDir, outputRoot); + const dotenvVariablesByTarget = writeEnvironmentTemplates(sourceDir, outputRoot); const yamlFiles = walkYamlFiles(sourceDir); @@ -738,7 +805,7 @@ function main() { processed += 1; } - console.log(`Generated ${processed} .http file(s) for ${collection.name}`); + console.log(`${collection.name.padEnd(33)} => generated ${processed.toString().padStart(3)} .http file(s) and ${writtenJsFiles.length.toString().padStart(3)} .js file(s)`); } }