71 lines
1.6 KiB
JavaScript
71 lines
1.6 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
|
||
|
/**
|
||
|
* Script that runs as part of `npm version`. It updates any files that have a
|
||
|
* reference to the current package version:
|
||
|
*
|
||
|
* - android/gradle.properties
|
||
|
* x react-native-maps.podspec // <-- this is now dynamic
|
||
|
* x react-native-google-maps.podspec // <-- this is now dynamic
|
||
|
*
|
||
|
* And `git add`s them.
|
||
|
*/
|
||
|
|
||
|
const { exec } = require('child_process');
|
||
|
const pkg = require('../package.json');
|
||
|
|
||
|
const filesToUpdate = [
|
||
|
'android/gradle.properties',
|
||
|
];
|
||
|
|
||
|
function doExec(cmdString) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
exec(cmdString, (err, stdout) => {
|
||
|
if (err) {
|
||
|
reject(err);
|
||
|
return;
|
||
|
}
|
||
|
resolve(stdout);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function updateVersionInFile(currentVersion, nextVersion, relativePath) {
|
||
|
process.stdout.write(`• ${relativePath}\n`);
|
||
|
return doExec(`sed -i '' 's/${
|
||
|
escapeDots(currentVersion)
|
||
|
}/${
|
||
|
escapeDots(nextVersion)
|
||
|
}/g' ./${relativePath}`);
|
||
|
}
|
||
|
|
||
|
function escapeDots(version) {
|
||
|
return version.replace(/\./g, '\\.');
|
||
|
}
|
||
|
|
||
|
function run() {
|
||
|
const currentVersion = pkg.version;
|
||
|
const nextVersion = process.env.npm_package_version;
|
||
|
|
||
|
Promise.resolve()
|
||
|
.then(() => updateFiles(currentVersion, nextVersion))
|
||
|
.then(() => gitAdd());
|
||
|
}
|
||
|
|
||
|
// Tasks
|
||
|
|
||
|
function updateFiles(currentVersion, nextVersion) {
|
||
|
process.stdout.write(`Updating ${currentVersion} ➞ ${nextVersion}:\n`);
|
||
|
return Promise.all(filesToUpdate.map(relativePath =>
|
||
|
updateVersionInFile(currentVersion, nextVersion, relativePath)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
function gitAdd() {
|
||
|
return doExec(`git add ${filesToUpdate.join(' ')}`);
|
||
|
}
|
||
|
|
||
|
// Do it.
|
||
|
|
||
|
run();
|