#!/bin/bash
set -eo pipefail
if [[ -z "$FROM_VERSION" || -z "$TO_VERSION" ]]; then
echo
echo "Examples of use: "
echo " export FROM_VERSION=2.12.0; export TO_VERSION=2.13.0; ${0}"
echo " export FROM_VERSION=2.12.0; export TO_VERSION=2.13.0; export FROM_VERSION_SDK=2.12.0; export TO_VERSION_SDK=2.13.0; ${0}"
echo
exit 1
fi
if [[ -z "$FROM_VERSION_SDK" || -z "$TO_VERSION_SDK" ]]; then
echo
echo "No FROM_VERSION_SDK and TO_VERSION_SDK properties provided. Server SDKs depdendencies won't be updated."
echo "To update also server SDKs dependencies, run the script like this:"
echo " export FROM_VERSION=2.12.0; export TO_VERSION=2.13.0; export FROM_VERSION_SDK=2.12.0; export TO_VERSION_SDK=2.13.0; ${0}"
echo
read -p "Do you still want to continue? [Y/N]" -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then :
else
echo "Aborted"
exit 1
fi
fi
echo "## Updating openvidu-tutorials"
echo
NPM_TUTORIALS="openvidu-insecure-angular
openvidu-insecure-react
openvidu-library-angular
openvidu-library-react
openvidu-ionic
openvidu-js-node
openvidu-mvc-node
openvidu-recording-node
openvidu-react-native
openvidu-electron
openvidu-insecure-vue"
MAVEN_TUTORIALS="openvidu-js-java
openvidu-mvc-java
openvidu-recording-java
openvidu-ipcameras"
# Delete all package-lock.json and node_modules
find -type f -name 'package-lock.json' -exec rm {} \;
find -type d -name 'node_modules' -exec rm -rf {} \;
# Updating openvidu-browser dependencies in package.json files [openvidu-insecure-angular, openvidu-insecure-react, openvidu-ionic, openvidu-react-native, openvidu-insecure-vue]
find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*/package-lock.json' \) -exec sed -i "s/\"openvidu-browser\": \"$FROM_VERSION\"/\"openvidu-browser\": \"$TO_VERSION\"/" {} \;
# Updating openvidu-react dependencies in package.json files [openvidu-library-react]
find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*/package-lock.json' \) -exec sed -i "s/\"openvidu-react\": \"$FROM_VERSION\"/\"openvidu-react\": \"$TO_VERSION\"/" {} \;
# Updating openvidu-angular dependencies in package.json files [openvidu-library-angular]
find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*/package-lock.json' \) -exec sed -i "s/\"openvidu-angular\": \"$FROM_VERSION\"/\"openvidu-angular\": \"$TO_VERSION\"/" {} \;
# If server SDKs must be udpated
if [[ -n "$FROM_VERSION_SDK" && -n "$TO_VERSION_SDK" ]]; then
# Updating openvidu-node-client dependencies in package.json files [openvidu-js-node, openvidu-mvc-node, openvidu-recording-node]
find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*/package-lock.json' \) -exec sed -i "s/\"openvidu-node-client\": \"$FROM_VERSION_SDK\"/\"openvidu-node-client\": \"$TO_VERSION_SDK\"/" {} \;
# 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_VERSION_SDK -DforceVersion=true && cd ..
done
fi
# Run "npm install" in every NPM project
for tutorial in ${NPM_TUTORIALS}
do
echo
echo "###############################"
echo "Compiling NPM project $tutorial"
echo "###############################"
echo
cd $tutorial
npm install || true
cd ..
done
# Run "mvn clean compile package" in every Maven project
for tutorial in ${MAVEN_TUTORIALS}
do
echo
echo "###############################"
echo "Compiling Maven project $tutorial"
echo "###############################"
echo
cd $tutorial
mvn clean compile package
cd ..
done
# Update every import in every *.html or *.ejs file (14 files changed)
for file in *.html *.ejs; do
echo
echo "###############################"
echo "Updating openvidu-browser