react-native-code-sync
Version:
React-native plugin for the code-sync functionality on live via OTA (Over-the-air)
67 lines (64 loc) • 2.56 kB
JavaScript
const fs = require('fs');
const axios = require('axios')
const FormData = require('form-data');
const uploadBundleFile = () => {
try {
const args = process.argv.slice(2);
let fileName = '', platform = '', completeApiUrl = ''
const formData = new FormData()
args.forEach(arg => {
const [key, value] = arg.split("=");
if (key && value) {
if (key == 'platform' && (value == 'android' || value == 'ios')) {
platform = value
}
else if (key == 'apiurl') {
completeApiUrl = value
}
else formData.append(key, value);
}
});
const projectDirectory = process.cwd()
if (!platform) {
console.error('Please specify value of platform in script, it can be either "android" or "ios"')
return
}
if (platform == 'android') { fileName = 'index.android.bundle.zip' }
if (platform == 'ios') { fileName = 'main.jsbundle.zip' }
const bundlePath = `${projectDirectory}/${platform}/${fileName}`
console.log("bundlePath==>", bundlePath)
if (!projectDirectory) return
if (!fs.existsSync(bundlePath)) {
console.error('Bundle file does not exist at', bundlePath);
return
}
if (!completeApiUrl?.trim()) {
console.error('BaseURL/endpoint is not provided, please provide api baseURL/endpoint to upload bundle')
return
}
formData.append('upload_type', 'app_apk')
formData.append('images', fs.createReadStream(bundlePath), {
filename: fileName,
contentType: 'application/zip'
})
console.log("formData===>", formData)
axios.post(
completeApiUrl,
formData,
)
.then(response => {
console.log("response==>", response)
if (response.data && response.data.status && response.data.status === 200) {
console.log("Bundle file uploaded", JSON.stringify(response.data))
} else {
console.log("Bundle file upload failed", JSON.stringify(response.data))
}
})
.catch(err => {
console.log("Bundle file uploaded failed in catch", err)
})
} catch (error) {
console.log('api error=> Error in upload bundle file', JSON.stringify(error))
}
};
uploadBundleFile()