Skip to content

Commit f35ef58

Browse files
Hide some commands when called as 'scala'
1 parent 05f127a commit f35ef58

File tree

15 files changed

+88
-18
lines changed

15 files changed

+88
-18
lines changed

modules/cli/src/main/scala/scala/cli/ScalaCli.scala

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package scala.cli
22

33
import sun.misc.{Signal, SignalHandler}
44

5-
import java.io.{ByteArrayOutputStream, PrintStream}
5+
import java.io.{ByteArrayOutputStream, File, PrintStream}
66
import java.nio.charset.StandardCharsets
77

88
import scala.build.internal.Constants
@@ -14,6 +14,11 @@ object ScalaCli {
1414

1515
val progName = (new Argv0).get("scala-cli")
1616

17+
private var isSipScala =
18+
progName == "scala" ||
19+
progName.endsWith("/scala") ||
20+
progName.endsWith(File.separator + "scala")
21+
1722
private def isGraalvmNativeImage: Boolean =
1823
sys.props.contains("org.graalvm.nativeimage.imagecode")
1924

@@ -109,8 +114,15 @@ object ScalaCli {
109114
case Right((launcherOpts, args0)) =>
110115
launcherOpts.cliVersion.map(_.trim).filter(_.nonEmpty) match {
111116
case Some(ver) =>
112-
LauncherCli.runAndExit(ver, launcherOpts, args0)
113-
case None => args0.toArray
117+
val powerArgs =
118+
if (launcherOpts.power) Seq("--power")
119+
else Nil
120+
val newArgs = powerArgs ++ args0
121+
LauncherCli.runAndExit(ver, launcherOpts, newArgs)
122+
case None =>
123+
if (launcherOpts.power)
124+
isSipScala = false
125+
args0.toArray
114126
}
115127
}
116128
val (systemProps, scalaCliArgs) = partitionArgs(remainingArgs)
@@ -132,7 +144,7 @@ object ScalaCli {
132144
// Enable ANSI output in Windows terminal
133145
coursier.jniutils.WindowsAnsiTerminal.enableAnsiOutput()
134146

135-
new ScalaCliCommands(progName)
147+
new ScalaCliCommands(progName, isSipScala)
136148
.main(scalaCliArgs)
137149
}
138150
}

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ import java.nio.file.InvalidPathException
77

88
import scala.cli.commands._
99

10-
class ScalaCliCommands(val progName: String) extends CommandsEntryPoint {
10+
class ScalaCliCommands(
11+
val progName: String,
12+
isSipScala: Boolean
13+
) extends CommandsEntryPoint {
1114

1215
lazy val actualDefaultCommand: DefaultBase = new Default(help)
1316

14-
def commands = Seq[ScalaCommand[_]](
15-
About,
17+
private def allCommands = Seq[ScalaCommand[_]](
18+
new About(isSipScala = isSipScala),
1619
AddPath,
1720
BloopExit,
1821
BloopStart,
@@ -36,6 +39,8 @@ class ScalaCliCommands(val progName: String) extends CommandsEntryPoint {
3639
Version
3740
)
3841

42+
def commands = allCommands.filter(c => !isSipScala || c.inSipScala)
43+
3944
override def description =
4045
"Scala CLI is a command-line tool to interact with the Scala language. It lets you compile, run, test, and package your Scala code."
4146
override def summaryDesc =

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ import caseapp._
55
import scala.build.internal.Constants
66
import scala.cli.CurrentParams
77

8-
object About extends ScalaCommand[AboutOptions] {
8+
class About(isSipScala: Boolean) extends ScalaCommand[AboutOptions] {
99
override def group = "Miscellaneous"
1010
def run(options: AboutOptions, args: RemainingArgs): Unit = {
1111
CurrentParams.verbosity = options.verbosity.verbosity
1212
val version = Constants.version
1313
val detailedVersionOpt = Some(Constants.detailedVersion).filter(_ != version)
14-
println(s"Scala CLI version $version" + detailedVersionOpt.fold("")(" (" + _ + ")"))
14+
val appName =
15+
if (isSipScala) "Scala command"
16+
else "Scala CLI"
17+
println(s"$appName version $version" + detailedVersionOpt.fold("")(" (" + _ + ")"))
1518
}
1619
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import scala.cli.CurrentParams
99
import scala.util.Properties
1010

1111
object AddPath extends ScalaCommand[AddPathOptions] {
12-
override def hidden = true
12+
override def hidden = true
13+
override def inSipScala = false
1314
def run(options: AddPathOptions, args: RemainingArgs): Unit = {
1415
CurrentParams.verbosity = options.verbosity
1516

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import scala.build.blooprifle.BloopRifle
77
import scala.cli.CurrentParams
88

99
object BloopExit extends ScalaCommand[BloopExitOptions] {
10-
override def hidden = true
10+
override def hidden = true
11+
override def inSipScala = false
1112
override def names: List[List[String]] = List(
1213
List("bloop", "exit")
1314
)

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import scala.concurrent.Await
1111
import scala.concurrent.duration.Duration
1212

1313
object BloopStart extends ScalaCommand[BloopStartOptions] {
14-
override def hidden = true
14+
override def hidden = true
15+
override def inSipScala = false
1516
override def names: List[List[String]] = List(
1617
List("bloop", "start")
1718
)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import scala.cli.CurrentParams
66

77
object Directories extends ScalaCommand[DirectoriesOptions] {
88
override def hidden: Boolean = true
9+
override def inSipScala = false
910

1011
def run(options: DirectoriesOptions, args: RemainingArgs): Unit = {
1112
CurrentParams.verbosity = options.verbosity.verbosity

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import scala.util.Properties
99

1010
object InstallHome extends ScalaCommand[InstallHomeOptions] {
1111
override def hidden: Boolean = true
12+
override def inSipScala = false
1213

1314
private def logEqual(version: String) = {
1415
System.err.println(

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ import scala.cli.CurrentParams
1111
import scala.cli.internal.FetchExternalBinary
1212

1313
object Metabrowse extends ScalaCommand[MetabrowseOptions] {
14-
override def hidden = true
15-
override def group = "Miscellaneous"
14+
override def hidden = true
15+
override def inSipScala = false
16+
override def group = "Miscellaneous"
1617
override def names = List(
1718
List("browse"),
1819
List("metabrowse")

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ abstract class ScalaCommand[T](implicit parser: Parser[T], help: Help[T])
1717
def sharedOptions(t: T): Option[SharedOptions] = None
1818
override def hasFullHelp = true
1919

20+
def inSipScala: Boolean = true
21+
2022
protected var argvOpt = Option.empty[Array[String]]
2123
override def setArgv(argv: Array[String]): Unit = {
2224
argvOpt = Some(argv)

0 commit comments

Comments
 (0)