| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- const fs = require('fs');
- const path = require('path');
- // Konfiguracja ścieżek
- const TARGET_DIR = path.join(__dirname, 'BoatDelivery');
- const OUTPUT_FILE = path.join(__dirname, 'boatdelivery_all_code.txt');
- // Filtry - czego NIE dołączać do zrzutu
- const IGNORE_DIRS = new Set(['node_modules', 'vendor', 'dist', 'build', '.git', '.idea', '.vscode', 'public']);
- const IGNORE_FILES = new Set(['package-lock.json', 'composer.lock', 'yarn.lock', 'pnpm-lock.yaml']);
- const IGNORE_EXTENSIONS = new Set([
- '.jpg', '.jpeg', '.png', '.gif', '.svg', '.ico', '.webp',
- '.mp4', '.webm', '.pdf', '.zip', '.tar', '.gz',
- '.woff', '.woff2', '.ttf', '.eot'
- ]);
- function isBinary(content) {
- // Prosta heurystyka sprawdzająca obecność znaków null (typowych dla binarek) w pierwszych bajtach
- for (let i = 0; i < Math.min(content.length, 512); i++) {
- if (content[i] === 0) return true;
- }
- return false;
- }
- function processDirectory(directory, writeStream) {
- let entries;
- try {
- entries = fs.readdirSync(directory, { withFileTypes: true });
- } catch (err) {
- console.error(`Błąd odczytu katalogu ${directory}:`, err.message);
- return;
- }
- for (const entry of entries) {
- const fullPath = path.join(directory, entry.name);
- if (entry.isDirectory()) {
- if (!IGNORE_DIRS.has(entry.name)) {
- processDirectory(fullPath, writeStream);
- }
- } else if (entry.isFile()) {
- const ext = path.extname(entry.name).toLowerCase();
- if (IGNORE_FILES.has(entry.name) || IGNORE_EXTENSIONS.has(ext)) {
- continue;
- }
- try {
- const buffer = fs.readFileSync(fullPath);
- // Ochrona przed zrzutem niezidentyfikowanych plików binarnych
- if (isBinary(buffer)) {
- continue;
- }
- const content = buffer.toString('utf-8');
- // Separator z wyraźną ścieżką relatywną
- const relativePath = path.relative(__dirname, fullPath);
- writeStream.write(`\n\n${'='.repeat(80)}\n`);
- writeStream.write(`FILE: ${relativePath}\n`);
- writeStream.write(`${'='.repeat(80)}\n\n`);
- writeStream.write(content);
- } catch (err) {
- console.error(`Błąd odczytu pliku ${fullPath}:`, err.message);
- }
- }
- }
- }
- function main() {
- if (!fs.existsSync(TARGET_DIR)) {
- console.error(`Katalog źródłowy nie istnieje: ${TARGET_DIR}`);
- process.exit(1);
- }
- // Czyszczenie poprzedniego pliku wynikowego
- if (fs.existsSync(OUTPUT_FILE)) {
- fs.unlinkSync(OUTPUT_FILE);
- }
- const writeStream = fs.createWriteStream(OUTPUT_FILE, { flags: 'a' });
- console.log('Rozpoczęto ekstrakcję kodu...');
- processDirectory(TARGET_DIR, writeStream);
- writeStream.end();
- writeStream.on('finish', () => {
- const stats = fs.statSync(OUTPUT_FILE);
- const fileSizeInMegabytes = (stats.size / (1024 * 1024)).toFixed(2);
- console.log(`Zakończono. Plik wyjściowy: ${OUTPUT_FILE} (${fileSizeInMegabytes} MB)`);
- });
- }
- main();
|