diff --git a/formulus-formplayer/package.json b/formulus-formplayer/package.json index 7e112ce6e..b0e5b09ac 100644 --- a/formulus-formplayer/package.json +++ b/formulus-formplayer/package.json @@ -36,9 +36,10 @@ "start": "react-scripts start", "sync-interface": "node scripts/sync-interface.js", "build": "npm run sync-interface && react-scripts build", + "upload:android": "npm run build && node scripts/clean-rn-assets.js && node scripts/copy-to-rn.js", "build:rn": "npm run build && npm run copy-to-rn", - "clean-rn-assets": "powershell -NoProfile -Command \"Remove-Item -Path '../formulus/android/app/src/main/assets/formplayer_dist' -Recurse -Force -ErrorAction SilentlyContinue; mkdir -Force -Path '../formulus/android/app/src/main/assets/formplayer_dist'\"", - "copy-to-rn": "npm run clean-rn-assets && powershell -NoProfile -Command \"Copy-Item -Path './build/*' -Destination '../formulus/android/app/src/main/assets/formplayer_dist' -Recurse -Force\"", + "clean-rn-assets": "node scripts/clean-rn-assets.js", + "copy-to-rn": "node scripts/copy-to-rn.js", "test": "react-scripts test", "eject": "react-scripts eject", "lint": "eslint src --ext js,jsx,ts,tsx --max-warnings 9999", diff --git a/formulus-formplayer/scripts/clean-rn-assets.js b/formulus-formplayer/scripts/clean-rn-assets.js new file mode 100644 index 000000000..88107a923 --- /dev/null +++ b/formulus-formplayer/scripts/clean-rn-assets.js @@ -0,0 +1,21 @@ +const fs = require('fs'); +const path = require('path'); + +const targetDir = path.join(__dirname, '..', '..', 'formulus', 'android', 'app', 'src', 'main', 'assets', 'formplayer_dist'); + +if (fs.existsSync(targetDir)) { + const files = fs.readdirSync(targetDir); + for (const file of files) { + const filePath = path.join(targetDir, file); + const stat = fs.statSync(filePath); + if (stat.isDirectory()) { + fs.rmSync(filePath, { recursive: true, force: true }); + } else { + fs.unlinkSync(filePath); + } + } + console.log('✓ Cleaned formplayer_dist directory'); +} else { + fs.mkdirSync(targetDir, { recursive: true }); + console.log('✓ Created formplayer_dist directory'); +} diff --git a/formulus-formplayer/scripts/copy-to-rn.js b/formulus-formplayer/scripts/copy-to-rn.js new file mode 100644 index 000000000..cd3cd0e3b --- /dev/null +++ b/formulus-formplayer/scripts/copy-to-rn.js @@ -0,0 +1,47 @@ +const fs = require('fs'); +const path = require('path'); + +const buildDir = path.join(__dirname, '..', 'build'); +const targetDir = path.join(__dirname, '..', '..', 'formulus', 'android', 'app', 'src', 'main', 'assets', 'formplayer_dist'); + +if (!fs.existsSync(targetDir)) { + fs.mkdirSync(targetDir, { recursive: true }); + console.log('✓ Created formplayer_dist directory'); +} + +if (fs.existsSync(targetDir)) { + const files = fs.readdirSync(targetDir); + for (const file of files) { + const filePath = path.join(targetDir, file); + const stat = fs.statSync(filePath); + if (stat.isDirectory()) { + fs.rmSync(filePath, { recursive: true, force: true }); + } else { + fs.unlinkSync(filePath); + } + } +} + +function copyRecursive(src, dest) { + const stat = fs.statSync(src); + if (stat.isDirectory()) { + if (!fs.existsSync(dest)) { + fs.mkdirSync(dest, { recursive: true }); + } + const files = fs.readdirSync(src); + for (const file of files) { + copyRecursive(path.join(src, file), path.join(dest, file)); + } + } else { + fs.copyFileSync(src, dest); + } +} + +if (!fs.existsSync(buildDir)) { + console.error('❌ Build directory does not exist. Run "npm run build" first.'); + process.exit(1); +} + +console.log('📦 Copying formplayer build to React Native assets...'); +copyRecursive(buildDir, targetDir); +console.log('✓ Successfully copied to', targetDir);