|
| 1 | +const fs = require('fs'); |
| 2 | +const path = require('path'); |
| 3 | + |
| 4 | +const sourceDir = './frontend/app/webapp'; |
| 5 | +const staticDir = './.github/app2bsp/static_files'; |
| 6 | +const targetDir = './src/02'; |
| 7 | +const prefix = 'z2ui5.wapa.'; |
| 8 | + |
| 9 | +function generateTargetFileName(sourcePath, baseDir) { |
| 10 | + const relativePath = path.relative(baseDir, sourcePath); |
| 11 | + const fileName = prefix + relativePath.replace(/\//g, '_-').replace(/\\/g, '_-').toLowerCase(); |
| 12 | + return fileName; |
| 13 | +} |
| 14 | + |
| 15 | +function copyFilesRecursively(source, target, baseDir, renameFiles = true) { |
| 16 | + fs.readdir(source, { withFileTypes: true }, (err, entries) => { |
| 17 | + if (err) { |
| 18 | + console.error('Fehler beim Lesen des Verzeichnisses:', err); |
| 19 | + return; |
| 20 | + } |
| 21 | + |
| 22 | + entries.forEach(entry => { |
| 23 | + const sourcePath = path.join(source, entry.name); |
| 24 | + const targetFileName = renameFiles ? generateTargetFileName(sourcePath, baseDir) : entry.name; |
| 25 | + const targetPath = path.join(target, targetFileName); |
| 26 | + |
| 27 | + if (entry.isDirectory()) { |
| 28 | + // Rekursiver Aufruf für Unterordner |
| 29 | + copyFilesRecursively(sourcePath, target, baseDir, renameFiles); |
| 30 | + } else if (entry.isFile()) { |
| 31 | + // Lese die Quelldatei |
| 32 | + fs.readFile(sourcePath, 'utf8', (err, data) => { |
| 33 | + if (err) { |
| 34 | + console.error(`Fehler beim Lesen der Quelldatei ${entry.name}:`, err); |
| 35 | + return; |
| 36 | + } |
| 37 | + |
| 38 | + // Erstelle den Zielordner, falls er nicht existiert |
| 39 | + fs.mkdir(path.dirname(targetPath), { recursive: true }, (err) => { |
| 40 | + if (err) { |
| 41 | + console.error('Fehler beim Erstellen des Zielordners:', err); |
| 42 | + return; |
| 43 | + } |
| 44 | + |
| 45 | + // Schreibe den Inhalt in die Zieldatei |
| 46 | + fs.writeFile(targetPath, data, 'utf8', (err) => { |
| 47 | + if (err) { |
| 48 | + console.error(`Fehler beim Schreiben der Zieldatei ${entry.name}:`, err); |
| 49 | + return; |
| 50 | + } |
| 51 | + console.log(`Datei ${entry.name} erfolgreich kopiert als ${targetFileName}.`); |
| 52 | + }); |
| 53 | + }); |
| 54 | + }); |
| 55 | + } |
| 56 | + }); |
| 57 | + }); |
| 58 | +} |
| 59 | + |
| 60 | +function deleteFilesRecursively(directory) { |
| 61 | + if (fs.existsSync(directory)) { |
| 62 | + fs.readdirSync(directory).forEach((file) => { |
| 63 | + const curPath = path.join(directory, file); |
| 64 | + if (fs.lstatSync(curPath).isDirectory()) { |
| 65 | + deleteFilesRecursively(curPath); |
| 66 | + } else { |
| 67 | + fs.unlinkSync(curPath); |
| 68 | + } |
| 69 | + }); |
| 70 | + fs.rmdirSync(directory); |
| 71 | + } |
| 72 | +} |
| 73 | + |
| 74 | +// Lösche alle Dateien im Zielverzeichnis |
| 75 | +deleteFilesRecursively(targetDir); |
| 76 | + |
| 77 | +// Erstelle das Zielverzeichnis, falls es nicht existiert |
| 78 | +fs.mkdir(targetDir, { recursive: true }, (err) => { |
| 79 | + if (err) { |
| 80 | + console.error('Fehler beim Erstellen des Zielverzeichnisses:', err); |
| 81 | + return; |
| 82 | + } |
| 83 | + |
| 84 | + // Starte den Kopiervorgang für den Quellordner |
| 85 | + copyFilesRecursively(sourceDir, targetDir, sourceDir); |
| 86 | + |
| 87 | + // Starte den Kopiervorgang für den statischen Ordner ohne Umbenennung |
| 88 | + copyFilesRecursively(staticDir, targetDir, staticDir, false); |
| 89 | +}); |
0 commit comments