import { promises as fs } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const RELEASE_DIR = 'release'; const FILES_TO_INCLUDE = [ 'main.js', 'manifest.json', 'styles.css' ]; async function packageRelease() { try { console.log('šŸ“¦ Packaging release files...\n'); // Create release directory if it doesn't exist try { await fs.access(RELEASE_DIR); console.log(`āœ“ Release directory exists: ${RELEASE_DIR}`); } catch { await fs.mkdir(RELEASE_DIR); console.log(`āœ“ Created release directory: ${RELEASE_DIR}`); } // Copy each file for (const file of FILES_TO_INCLUDE) { const sourcePath = path.join(__dirname, file); const destPath = path.join(__dirname, RELEASE_DIR, file); try { await fs.copyFile(sourcePath, destPath); console.log(`āœ“ Copied ${file}`); } catch (error) { console.error(`āœ— Failed to copy ${file}:`, error.message); process.exit(1); } } // Read manifest to get version const manifestPath = path.join(__dirname, 'manifest.json'); const manifestContent = await fs.readFile(manifestPath, 'utf8'); const manifest = JSON.parse(manifestContent); console.log(`\nāœ… Release package created successfully!`); console.log(`šŸ“ Location: ./${RELEASE_DIR}/`); console.log(`šŸ“Œ Version: ${manifest.version}`); console.log(`\nFiles included:`); FILES_TO_INCLUDE.forEach(file => console.log(` - ${file}`)); console.log(`\nšŸ’” Tip: You can now upload these files from the '${RELEASE_DIR}' directory to your Gitea release.`); console.log(`šŸ’” Tip: To create a zip, run: cd ${RELEASE_DIR} && zip -r ../immerse-${manifest.version}.zip *`); } catch (error) { console.error('āŒ Error packaging release:', error); process.exit(1); } } packageRelease();