diff --git a/scripts/update_readme.sh b/scripts/update_readme.sh index 11e670191..b941607a5 100755 --- a/scripts/update_readme.sh +++ b/scripts/update_readme.sh @@ -15,3 +15,6 @@ mvn install --no-transfer-progress -D skipTests echo "Updating browser versions in README.md" mvn compile exec:java --f ./tools/update-docs-version -D exec.mainClass=com.microsoft.playwright.tools.UpdateBrowserVersions + +echo "Updating Playwright dependency version in README.md" +mvn compile exec:java --f ./tools/update-docs-version -D exec.mainClass=com.microsoft.playwright.tools.UpdatePlaywrightVersion diff --git a/tools/update-docs-version/src/main/java/com/microsoft/playwright/tools/UpdatePlaywrightVersion.java b/tools/update-docs-version/src/main/java/com/microsoft/playwright/tools/UpdatePlaywrightVersion.java new file mode 100644 index 000000000..79f733f2b --- /dev/null +++ b/tools/update-docs-version/src/main/java/com/microsoft/playwright/tools/UpdatePlaywrightVersion.java @@ -0,0 +1,53 @@ +package com.microsoft.playwright.tools; + +import java.io.FileWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.NoSuchElementException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static java.nio.charset.StandardCharsets.UTF_8; + +public class UpdatePlaywrightVersion { + private static final Pattern VERSION_PATTERN = Pattern.compile( + "com.microsoft.playwright\\s*parent-pom\\s*(\\d+\\.\\d+\\.\\d+)(?:-SNAPSHOT)?" + ); + private static final Pattern MAVEN_PATTERN = Pattern.compile( + "(\\s*com.microsoft.playwright\\s*playwright\\s*)\\d+\\.\\d+\\.\\d+(\\s*)" + ); + private static final Pattern GRADLE_PATTERN = Pattern.compile( + "(implementation group: 'com.microsoft.playwright', name: 'playwright', version: )'\\d+\\.\\d+\\.\\d+'" + ); + + public static void main(String[] args) throws Exception { + Path pomPath = Paths.get("pom.xml"); + String pomContent = Files.readString(pomPath, UTF_8); + + Matcher versionMatcher = VERSION_PATTERN.matcher(pomContent); + if (!versionMatcher.find()) { + throw new NoSuchElementException("Project version was not found"); + } + String version = versionMatcher.group(1); + + Path readmePath = Paths.get("README.md"); + String readme = Files.readString(readmePath, UTF_8); + + String updatedReadme = updateDependencies(readme, version); + + try (FileWriter writer = new FileWriter(readmePath.toFile(), UTF_8)) { + writer.write(updatedReadme); + } + } + + private static String updateDependencies(String readme, String version) { + readme = MAVEN_PATTERN.matcher(readme) + .replaceAll("$1" + version + "$2"); + + readme = GRADLE_PATTERN.matcher(readme) + .replaceAll("$1'" + version + "'"); + + return readme; + } +}