#!/bin/bash
set -eo pipefail
if [[ -z "$VERSION" || -z "$FROM_OPENVIDU_BROWSER_VERSION" || -z "$TO_OPENVIDU_BROWSER_VERSION" || -z "$FROM_OPENVIDU_NODE_CLIENT_VERSION" || -z "$TO_OPENVIDU_NODE_CLIENT_VERSION" || -z "$TO_OPENVIDU_JAVA_CLIENT_VERSION" ]]; then
echo
echo "Must declare:"
echo "- The new version of the projects with VERSION"
echo "- The previous and new version of openvidu-browser (and related libraries) with FROM_OPENVIDU_BROWSER_VERSION and TO_OPENVIDU_BROWSER_VERSION"
echo "- The previous and new version of openvidu-node-client with FROM_OPENVIDU_NODE_CLIENT_VERSION and TO_OPENVIDU_NODE_CLIENT_VERSION"
echo "- The new version of openvidu-java-client with TO_OPENVIDU_JAVA_CLIENT_VERSION"
echo
echo "Example of use:"
echo
echo "export VERSION=2.26.0"
echo "export FROM_OPENVIDU_BROWSER_VERSION=2.25.0"
echo "export TO_OPENVIDU_BROWSER_VERSION=2.26.0"
echo "export FROM_OPENVIDU_NODE_CLIENT_VERSION=2.25.0"
echo "export TO_OPENVIDU_NODE_CLIENT_VERSION=2.26.0"
echo "export TO_OPENVIDU_JAVA_CLIENT_VERSION=2.26.0"
echo "${0}"
echo
exit 1
fi
echo
echo "## Updating openvidu-tutorials to $VERSION"
echo "## - From openvidu-browser $FROM_OPENVIDU_BROWSER_VERSION to $TO_OPENVIDU_BROWSER_VERSION"
echo "## - From openvidu-node-client $FROM_OPENVIDU_NODE_CLIENT_VERSION to $TO_OPENVIDU_NODE_CLIENT_VERSION"
echo "## - To openvidu-java-client $TO_OPENVIDU_JAVA_CLIENT_VERSION"
echo
NPM_TUTORIALS="openvidu-angular
openvidu-react
openvidu-library-react
openvidu-ionic
openvidu-ionic/electron
openvidu-ionic-cordova
openvidu-roles-node
openvidu-recording-node
openvidu-react-native
openvidu-electron
openvidu-vue
openvidu-basic-node"
MAVEN_TUTORIALS="openvidu-roles-java
openvidu-recording-java
openvidu-ipcameras
openvidu-basic-java
openvidu-fault-tolerance"
# Delete all package-lock.json and node_modules
find -type f -name 'package-lock.json' -exec rm {} \;
find -type d -name 'node_modules' -prune -exec rm -rf {} \;
# Updating openvidu-browser dependencies in package.json files [openvidu-angular, openvidu-react, openvidu-ionic, openvidu-vue]
find . -type f -name 'package.json' -exec sed -i "s/\"openvidu-browser\": \"$FROM_OPENVIDU_BROWSER_VERSION\"/\"openvidu-browser\": \"$TO_OPENVIDU_BROWSER_VERSION\"/" {} \;
## TODO: change this when OpenVidu Components for React is released
# Updating openvidu-react dependencies in package.json files [openvidu-library-react]
# find . -type f -name 'package.json' -exec sed -i "s/\"openvidu-react\": \"$FROM_OPENVIDU_BROWSER_VERSION\"/\"openvidu-react\": \"$TO_OPENVIDU_BROWSER_VERSION\"/" {} \;
# Updating openvidu-angular dependencies in package.json files [openvidu-call, openvidu-components/*]
find . -type f -name 'package.json' -exec sed -i "s/\"openvidu-angular\": \"$FROM_OPENVIDU_BROWSER_VERSION\"/\"openvidu-angular\": \"$TO_OPENVIDU_BROWSER_VERSION\"/" {} \;
find . -type f -name 'package.json' -exec sed -i "s/file:openvidu-angular-$FROM_OPENVIDU_BROWSER_VERSION.tgz/file:openvidu-angular-$TO_OPENVIDU_BROWSER_VERSION.tgz/" {} \;
# Updating openvidu-react-native-adapter dependencies in package.json files [openvidu-react-native]
find . -type f -name 'package.json' -exec sed -i "s/file:openvidu-react-native-adapter-$FROM_OPENVIDU_BROWSER_VERSION.tgz/file:openvidu-react-native-adapter-$TO_OPENVIDU_BROWSER_VERSION.tgz/" {} \;
# Updating openvidu-node-client dependencies in package.json files [openvidu-roles-node, openvidu-recording-node, openvidu-basic-node]
find . -type f -name 'package.json' -exec sed -i "s/\"openvidu-node-client\": \"$FROM_OPENVIDU_NODE_CLIENT_VERSION\"/\"openvidu-node-client\": \"$TO_OPENVIDU_NODE_CLIENT_VERSION\"/" {} \;
# Updating openvidu-java-client dependencies in pom.xml files
for tutorial in ${MAVEN_TUTORIALS}; do
cd $tutorial
mvn --batch-mode versions:use-dep-version -Dincludes=io.openvidu:openvidu-java-client -DdepVersion=$TO_OPENVIDU_JAVA_CLIENT_VERSION -DforceVersion=true
cd ..
done
# Update every import in every *.html or *.ejs file (15 files changed)
for file in *.html *.ejs; do
echo
echo "###############################"
echo "Updating openvidu-browser