Printing Text before REPL prompt

I am trying to print a logo as I start the scala REPL, and the behaviour seems to have changed between version 2.11.8 and 2.11.11. I am loading a file containing a single println statement using “scala -i file.scala”. In version 2.11.8, I see the message before I get the prompt for further input. In 2.11.11 however, I get the prompt first, and then the message.

Is there a way to force 2.11.11 to give me the message first?

[EDIT]
I just tested the behaviour on 2.12.3 and 2.13.0-M1. They both behave like 2.11.11.

For the use case of a custom message, you can supply a format string which can pick up the version strings:

$ scala -Dscala.repl.welcome="Hello, %s %s %s"
Hello, version 2.12.3 1.8.0_111 Java HotSpot(TM) 64-Bit Server VM

scala> :quit
$ scala -Dscala.repl.welcome="Hello, %#s %s %s"
Hello, 2.12.3 1.8.0_111 Java HotSpot(TM) 64-Bit Server VM

I don’t know if anything like that will be supported in 2.13.

Thank you very much. This is exactly what I was looking for. I tested the -Dscala.repl.welcome flag works on 2.11.8, 2.11.11, 2.12.3 and 2.13.0-M1, and it does what I need in all these versions.

I have a follow-up question. The message that I am trying to show is ASCII art, which I don’t really want to pass in on the command line. I also want to avoid bash-tricks (like using cat), as this almost surely will break on some platforms. Is there a way to pass the welcome message in a file?

[EDIT]
I don’t seem to be able to pass newlines as part of the message in the command line either.

You can use %n from java.util.Formatter for newlines.

There are many perils in shell quoting.

$ scala -Dscala.repl.welcome='Gruezi!%nYou'"'"'re using Java %2$s.%nThis is Scala %1$#s'
Gruezi!
You're using Java 1.8.0_111.
This is Scala 2.12.3

scala> :quit
$ scala -Dscala.repl.welcome='Gruezi!%nYou'"'re using Java %2\$s.%nThis is Scala %1\$#s"
Gruezi!
You're using Java 1.8.0_111.
This is Scala 2.12.3

scala> 

You can also set “shell.welcome” in compiler.properties, normally packaged in scala-compiler.jar.

TIL properties strips leading whitespace. And don’t neglect to escape backslashes.

shell.welcome=\
%n     ________ ___   / /  ___  \
%n    / __/ __// _ | / /  / _ | \
%n  __\\ \\/ /__/ __ |/ /__/ __ | \
%n /____/\\___/_/ |_/____/_/ | | \
%n                          |/  %s

results in

$ scala

     ________ ___   / /  ___  
    / __/ __// _ | / /  / _ | 
  __\ \/ /__/ __ |/ /__/ __ | 
 /____/\___/_/ |_/____/_/ | | 
                          |/  version 2.12.3

scala> :quit

The other trick, not implemented, was to let the “splash” loop that accepts the first line in the REPL take a custom prompt, which would include the logo. Normally, you customize a “splash” image to display at startup; that would decouple the scala notice from the custom banner.

Thank you the %n works for me.