@puzzlearena/audio
Version:
Lightweight native sound module for React Native
52 lines (51 loc) • 2.23 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const readline_1 = __importDefault(require("readline"));
const SUPPORTED_EXTENSIONS = [".mp3", ".wav", ".ogg"];
const rl = readline_1.default.createInterface({
input: process.stdin,
output: process.stdout,
});
function askQuestion(query) {
return new Promise((resolve) => rl.question(query, resolve));
}
async function run() {
const projectRoot = process.cwd();
const defaultAudioPath = path_1.default.join(projectRoot, "src/assets/sounds");
const androidDest = path_1.default.join(projectRoot, "android/app/src/main/res/raw");
console.log(`\nProject root detected: ${projectRoot}\n`);
const audioSrc = await askQuestion(`Enter audio source path [default: ${defaultAudioPath}]: `);
const resolvedAudioSrc = audioSrc.trim() || defaultAudioPath;
if (!fs_1.default.existsSync(resolvedAudioSrc)) {
console.error(`❌ Source folder not found: ${resolvedAudioSrc}`);
process.exit(1);
}
if (!fs_1.default.existsSync(androidDest)) {
fs_1.default.mkdirSync(androidDest, { recursive: true });
}
const files = fs_1.default
.readdirSync(resolvedAudioSrc)
.filter((f) => SUPPORTED_EXTENSIONS.some((ext) => f.toLowerCase().endsWith(ext)));
if (files.length === 0) {
console.warn(`⚠️ No audio files (.mp3, .wav, .ogg) found in source directory.`);
}
files.forEach((file) => {
const src = path_1.default.join(resolvedAudioSrc, file);
const dest = path_1.default.join(androidDest, file.toLowerCase());
fs_1.default.copyFileSync(src, dest);
console.log(`✅ Copied: ${file}`);
});
console.log("🎵 Audio files synced with Android (res/raw).");
console.log("For iOS, add these files to Xcode -> Build Phases -> Copy Bundle Resources.");
rl.close();
}
run().catch((err) => {
console.error("❌ Error copying audio files:", err);
rl.close();
});