Skip to content

Instantly share code, notes, and snippets.

@igmar
Last active June 15, 2016 06:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igmar/4f3b6e86da6b1994168167e135908f5f to your computer and use it in GitHub Desktop.
Save igmar/4f3b6e86da6b1994168167e135908f5f to your computer and use it in GitHub Desktop.
Some sed magic to migrate Play 2.4 code to 2.5
#!/bin/bash
# Bump the Play ! version
gsed -ri 's/2\.4(\.[0-9])+/2\.5\.4/g' project/plugins.sbt
# Pick the right SBT version
gsed -ri 's/sbt\.version=0\.13\.[0-9]/sbt\.version=0\.13\.11/g' project/build.properties
# Check ebean
grep sbt-play-ebean project/plugins.sbt
if [ $? -eq 0 ]; then
gsed -ri 's/"sbt-play-ebean" % "[0-9]\.[0-9]\.[0-9]/"sbt-play-ebean" % "3.0.0"/g' project/plugins.sbt
fi
# Upgrade Scala
gsed -ri 's/scalaVersion :=\s+ "2\.11\.[0-9]"/scalaVersion := "2.11.7"/g' build.sbt
# Do logback changes
for f in conf/*.xml; do
gsed -ri 's/play.api.Logger$ColoredLevel/play.api.libs.logback.ColoredLevel/g' $f
done
# Check for Global stuff
MATCHES=$(ggrep -rl 'play.GlobalSettings' * | grep \.java)
if [ -n "$MATCHES" ]; then
echo "Found usage of GlobalSettings, needs removal"
fi
# Deprecated Play.* methods
MATCHES=$(ggrep -rl 'Play.application\(\)' * | grep \.java)
if [ -n "$MATCHES" ]; then
echo "Found usage of Play.application(), needs removal"
fi
MATCHES=$(ggrep -rl 'Play.mode\(\)' * | grep \.java)
if [ -n "$MATCHES" ]; then
echo "Found usage of Play.mode()"
fi
MATCHES=$(ggrep -rl 'Play.isDev\(\)' * | grep \.java)
if [ -n "$MATCHES" ]; then
echo "Found usage of Play.isDev()"
fi
MATCHES=$(ggrep -rl 'Play.isProd\(\)' * | grep \.java)
if [ -n "$MATCHES" ]; then
echo "Found usage of Play.isProd()"
fi
MATCHES=$(ggrep -rl 'Play.isTest\(\)' * | grep \.java)
if [ -n "$MATCHES" ]; then
echo "Found usage of Play.isTest()"
fi
find . -name '*.java' | while read javacode; do
gsed -ri 's/F\.Promise</CompletionStage</g' $javacode
gsed -ri 's/F\.Callback/Runnable/g' $javacode
gsed -ri 's/F\.Callback0/Consumer/g' $javacode
gsed -ri 's/F\.Callback2/BiConsumer/g' $javacode
gsed -ri 's/F\.Callback3/Function3/g' $javacode
gsed -ri 's/F\.Predicate/Predicate/g' $javacode
gsed -ri 's/F\.Function0/Supplier/g' $javacode
gsed -ri 's/F\.Function1/Function/g' $javacode
gsed -ri 's/F\.Function2/BiFunction/g' $javacode
gsed -ri 's/F\.Promise\.sequence/Futures\.sequence/g' $javacode
gsed -ri 's/F\.Promise\.timeout/Futures\.timeout/g' $javacode
gsed -ri 's/F\.Promise\.promise/CompletableFuture\.supplyAsync/g' $javacode
gsed -ri 's/onRedeem\(/thenAcceptAsync\(/g' $javacode
gsed -ri '/stream\(\)/! s/map\(/thenApplyAsync\(/g' $javacode
gsed -ri 's/recover\(/exceptionally\(/g' $javacode
gsed -ri 's/onFailure\(/whenCompleteAsync\(/g' $javacode
gsed -ri 's/flatMap\(/thenComposeAsync\(/g' $javacode
gsed -ri 's/F.Option/Optional/g' $javacode
gsed -ri 's/F.Promise.pure/CompletableFuture.completedFuture/g' $javacode
gsed -ri 's/import play\.libs\.F;/import java.util.concurrent.CompletableFuture;\nimport java.util.concurrent.CompletionStage;\n/g' $javacode
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment