Skip to content

Commit 5816d2c

Browse files
committed
Add version of Scala to the output of version command
1 parent ce46b5e commit 5816d2c

File tree

10 files changed

+50
-17
lines changed

10 files changed

+50
-17
lines changed

modules/cli-options/src/main/scala/scala/cli/commands/VersionOptions.scala

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ import caseapp._
66
@HelpMessage("Print `scala-cli` version")
77
final case class VersionOptions(
88
@Recurse
9-
verbosity: VerbosityOptions = VerbosityOptions()
9+
verbosity: VerbosityOptions = VerbosityOptions(),
10+
@HelpMessage("Show only plain scala-cli version")
11+
cliVersion: Boolean = false,
12+
@HelpMessage("Show only plain scala version")
13+
scalaVersion: Boolean = false
1014
)
1115
// format: on
1216

modules/cli/src/main/scala/scala/cli/ScalaCliCommands.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ScalaCliCommands(
1818
isSipScala: Boolean
1919
) extends CommandsEntryPoint {
2020

21-
lazy val actualDefaultCommand = new Default(help)
21+
lazy val actualDefaultCommand = new Default(help, isSipScala)
2222

2323
// for debugging purposes - allows to run the scala-cli-signing binary from the Scala CLI JVM launcher
2424
private lazy val pgpUseBinaryCommands =
@@ -64,7 +64,7 @@ class ScalaCliCommands(
6464
Uninstall,
6565
UninstallCompletions,
6666
Update,
67-
Version
67+
new Version(isSipScala = isSipScala)
6868
) ++ (if (pgpUseBinaryCommands) Nil else pgpCommands.allScalaCommands.toSeq) ++
6969
(if (pgpUseBinaryCommands) pgpBinaryCommands.allScalaCommands.toSeq else Nil)
7070

modules/cli/src/main/scala/scala/cli/commands/About.scala

+1-6
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@ class About(isSipScala: Boolean) extends ScalaCommand[AboutOptions] {
1111

1212
def run(options: AboutOptions, args: RemainingArgs): Unit = {
1313
CurrentParams.verbosity = options.verbosity.verbosity
14-
val version = Constants.version
15-
val detailedVersionOpt = Constants.detailedVersion.filter(_ != version)
16-
val appName =
17-
if (isSipScala) "Scala command"
18-
else "Scala CLI"
19-
println(s"$appName version $version" + detailedVersionOpt.fold("")(" (" + _ + ")"))
14+
println(Version.versionInfo(isSipScala))
2015
val newestScalaCliVersion = Update.newestScalaCliVersion(options.ghToken.map(_.get()))
2116
val isOutdated = CommandUtils.isOutOfDateVersion(
2217
newestScalaCliVersion,

modules/cli/src/main/scala/scala/cli/commands/Default.scala

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import scala.build.internal.Constants
77
import scala.cli.{CurrentParams, ScalaCliHelp}
88

99
class Default(
10-
actualHelp: => RuntimeCommandsHelp
10+
actualHelp: => RuntimeCommandsHelp,
11+
isSipScala: Boolean
1112
) extends ScalaCommand[DefaultOptions] {
1213

1314
private def defaultHelp: String = actualHelp.help(ScalaCliHelp.helpFormat)
@@ -30,7 +31,7 @@ class Default(
3031
def run(options: DefaultOptions, args: RemainingArgs): Unit = {
3132
CurrentParams.verbosity = options.runOptions.shared.logging.verbosity
3233
if (options.version)
33-
println(Constants.version)
34+
println(Version.versionInfo(isSipScala))
3435
else if (anyArgs)
3536
Run.run(
3637
options.runOptions,

modules/cli/src/main/scala/scala/cli/commands/InstallHome.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ object InstallHome extends ScalaCommand[InstallHomeOptions] {
5151
val newScalaCliBinPath = os.Path(options.scalaCliBinaryPath, os.pwd)
5252

5353
val newVersion: String =
54-
os.proc(newScalaCliBinPath, "version").call(cwd = os.pwd).out.text().trim
54+
os.proc(newScalaCliBinPath, "version", "--cli-version").call(cwd = os.pwd).out.text().trim
5555

5656
// Backward compatibility - previous versions not have the `--version` parameter
5757
val oldVersion: String =
5858
if (os.isFile(destBinPath)) {
59-
val res = os.proc(destBinPath, "version").call(cwd = os.pwd, check = false)
59+
val res = os.proc(destBinPath, "version", "--cli-version").call(cwd = os.pwd, check = false)
6060
if (res.exitCode == 0)
6161
res.out.text().trim
6262
else

modules/cli/src/main/scala/scala/cli/commands/Update.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ object Update extends ScalaCommand[UpdateOptions] {
9595
}
9696

9797
private def getCurrentVersion(scalaCliBinPath: os.Path): String = {
98-
val res = os.proc(scalaCliBinPath, "version").call(cwd = os.pwd, check = false)
98+
val res = os.proc(scalaCliBinPath, "version", "--cli-version").call(cwd = os.pwd, check = false)
9999
if (res.exitCode == 0)
100100
res.out.text().trim
101101
else

modules/cli/src/main/scala/scala/cli/commands/Version.scala

+18-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,26 @@ import caseapp._
55
import scala.build.internal.Constants
66
import scala.cli.CurrentParams
77

8-
object Version extends ScalaCommand[VersionOptions] {
8+
class Version(isSipScala: Boolean) extends ScalaCommand[VersionOptions] {
99
override def group = "Miscellaneous"
1010
def run(options: VersionOptions, args: RemainingArgs): Unit = {
1111
CurrentParams.verbosity = options.verbosity.verbosity
12-
println(Constants.version)
12+
if (options.cliVersion)
13+
println(Constants.version)
14+
else if (options.scalaVersion)
15+
println(Constants.defaultScalaVersion)
16+
else
17+
println(Version.versionInfo(isSipScala))
1318
}
1419
}
20+
21+
object Version {
22+
def versionInfo(isSipScala: Boolean) =
23+
val version = Constants.version
24+
val detailedVersionOpt = Constants.detailedVersion.filter(_ != version).fold("")(" (" + _ + ")")
25+
val appName =
26+
if (isSipScala) "Scala code runner"
27+
else "Scala CLI"
28+
s"""$appName version $version$detailedVersionOpt
29+
|Default Scala version: ${Constants.defaultScalaVersion}""".stripMargin
30+
}

modules/integration/src/test/scala/scala/cli/integration/UpdateTests.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class UpdateTests extends ScalaCliSuite {
9393
stdout = os.Inherit
9494
)
9595

96-
val nextVersion = os.proc(binDirPath / dummyScalaCliBinName, "version").call(
96+
val nextVersion = os.proc(binDirPath / dummyScalaCliBinName, "version", "--cli-version").call(
9797
cwd = root,
9898
stdin = os.Inherit
9999
).out.text().trim

website/docs/reference/cli-options.md

+16
Original file line numberDiff line numberDiff line change
@@ -1969,6 +1969,22 @@ Aliases: `-i`
19691969

19701970
Interactive mode
19711971

1972+
## Version options
1973+
1974+
Available in commands:
1975+
- [`version`](./commands.md#version)
1976+
1977+
1978+
<!-- Automatically generated, DO NOT EDIT MANUALLY -->
1979+
1980+
#### `--cli-version`
1981+
1982+
Show only plain scala-cli version
1983+
1984+
#### `--scala-version`
1985+
1986+
Show only plain scala version
1987+
19721988
## Watch options
19731989

19741990
Available in commands:

website/docs/reference/commands.md

+1
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ Print `scala-cli` version
475475
476476
Accepts options:
477477
- [verbosity](./cli-options.md#verbosity-options)
478+
- [version](./cli-options.md#version-options)
478479
479480
## Hidden commands
480481

0 commit comments

Comments
 (0)