blob: 08a8215a3d81c53f23056a71944a4ffbc4ad516e [file] [log] [blame] [edit]
#!/bin/bash
if [ -z "$1" ]; then
echo "Please provide a language argument: java, dotnet, ruby, python, javascript, or all."
exit 1
fi
LANGUAGE="$1"
FULL_VERSION=$(curl -s https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json | jq -r '.channels.Stable.version')
MAJOR_VERSION=$(echo "$FULL_VERSION" | cut -d'.' -f1)
PREVIOUS_VERSION=$((MAJOR_VERSION - 1))
REMOVING_VERSION=$((MAJOR_VERSION - 3))
# Update pdl files if target directory does not exist
TARGET_DIR="common/devtools/chromium/v${MAJOR_VERSION}"
if [ ! -d "$TARGET_DIR" ]; then
REMOVING_DIR="common/devtools/chromium/v${REMOVING_VERSION}"
if [ -d "$REMOVING_DIR" ]; then
rm -r "$REMOVING_DIR"
echo "Removed directory: $REMOVING_DIR"
fi
DEPS_CONTENT=$(curl -s "https://raw.githubusercontent.com/chromium/chromium/${FULL_VERSION}/DEPS")
curl -O "https://raw.githubusercontent.com/chromium/chromium/${FULL_VERSION}/third_party/blink/public/devtools_protocol/browser_protocol.pdl"
V8_REVISION=$(echo "$DEPS_CONTENT" | grep 'v8_revision' | awk -F': ' '{print $2}' | tr -d "',")
curl -O "https://raw.githubusercontent.com/v8/v8/${V8_REVISION}/include/js_protocol.pdl"
SOURCE_DIR="common/devtools/chromium/v${PREVIOUS_VERSION}"
mkdir -p "$TARGET_DIR"
if [ -d "$SOURCE_DIR" ]; then
cp -r "$SOURCE_DIR/"* "$TARGET_DIR/"
fi
mv js_protocol.pdl "$TARGET_DIR"
mv browser_protocol.pdl "$TARGET_DIR"
echo "Contents from $SOURCE_DIR have been copied to $TARGET_DIR!"
# Fix known syntax issue with downloaded pdl
sed -i '' 's/`<script>`/`script`/g' "$TARGET_DIR/browser_protocol.pdl"
git add "$TARGET_DIR/*"
fi
create_new_version_files() {
SRC_BASE=$1
SRC="$SRC_BASE/v${PREVIOUS_VERSION}"
TARGET="$SRC_BASE/v${MAJOR_VERSION}"
if [ ! -d "$TARGET" ]; then
REMOVING="$SRC_BASE/v${REMOVING_VERSION}"
if [ -d "$REMOVING" ]; then
rm -r "$REMOVING"
echo "Removed directory: $REMOVING"
fi
if [ -d "$SRC" ] && [ "$(ls -A $SRC)" ]; then
mkdir -p "$TARGET"
cp -v "$SRC"/* "$TARGET"
for file in "$TARGET"/*; do
filename=$(basename -- "$file")
sed -i '' "s/$PREVIOUS_VERSION/$MAJOR_VERSION/g" "$file"
new_filename="${filename//$PREVIOUS_VERSION/$MAJOR_VERSION}"
mv "$file" "$TARGET/$new_filename"
done
else
echo "$SRC does not exist or is empty."
fi
git add "$TARGET/*"
fi
}
update_java() {
create_new_version_files "java/src/org/openqa/selenium/devtools"
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "java/src/org/openqa/selenium/devtools/versions.bzl"
sed -i '' "s/v${REMOVING_VERSION}/v${MAJOR_VERSION}/g" "Rakefile"
}
update_dotnet() {
create_new_version_files "dotnet/src/webdriver/DevTools"
sed -i '' "s/v${REMOVING_VERSION}/v${MAJOR_VERSION}/g" "dotnet/selenium-dotnet-version.bzl"
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "dotnet/src/webdriver/WebDriver.csproj.prebuild.cmd"
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "dotnet/src/webdriver/WebDriver.csproj.prebuild.sh"
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "dotnet/src/webdriver/DevTools/DevToolsDomains.cs"
for file in dotnet/test/common/DevTools/*; do
sed -i '' "s/V${PREVIOUS_VERSION}/V${MAJOR_VERSION}/g" "$file"
done
sed -i '' "s/${PREVIOUS_VERSION}/${MAJOR_VERSION}/g" "dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs"
}
update_ruby() {
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "rb/lib/selenium/devtools/BUILD.bazel"
sed -i '' "s/${PREVIOUS_VERSION}\.[0-9]*/${MAJOR_VERSION}.0/g" "rb/lib/selenium/devtools/version.rb"
}
update_python() {
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "py/BUILD.bazel"
}
update_javascript() {
sed -i '' "s/${REMOVING_VERSION}/${MAJOR_VERSION}/g" "javascript/node/selenium-webdriver/BUILD.bazel"
}
case $LANGUAGE in
"java")
update_java
;;
"dotnet")
update_dotnet
;;
"ruby")
update_ruby
;;
"python")
update_python
;;
"javascript")
update_javascript
;;
"all")
update_java
update_dotnet
update_ruby
update_python
update_javascript
;;
esac