Skip to content

Commit

Permalink
Fix completions (#2004)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gedochao committed Apr 6, 2023
1 parent d3fd3dc commit 82e6387
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 8 deletions.
12 changes: 4 additions & 8 deletions modules/cli/src/main/scala/scala/cli/commands/ScalaCommand.scala
Expand Up @@ -315,13 +315,9 @@ abstract class ScalaCommand[T <: HasGlobalOptions](implicit myParser: Parser[T],
sys.exit(1)
}

private val globalOptionsAtomic: AtomicReference[Option[GlobalOptions]] =
new AtomicReference(None)
private def globalOptions: GlobalOptions = globalOptionsAtomic.get() match
case Some(opts) => opts
case None => // should never happen
System.err.println("Failed to initialize the global options.")
sys.exit(1)
private val globalOptionsAtomic: AtomicReference[GlobalOptions] =
new AtomicReference(GlobalOptions.default)
private def globalOptions: GlobalOptions = globalOptionsAtomic.get()
override def shouldSuppressExperimentalFeatureWarnings: Boolean =
globalOptions.globalSuppress.suppressExperimentalFeatureWarning
.orElse {
Expand All @@ -333,7 +329,7 @@ abstract class ScalaCommand[T <: HasGlobalOptions](implicit myParser: Parser[T],
override def logger: Logger = globalOptions.logging.logger

final override def main(progName: String, args: Array[String]): Unit = {
globalOptionsAtomic.set(GlobalOptions.get(args.toList))
globalOptionsAtomic.set(GlobalOptions.get(args.toList).getOrElse(GlobalOptions.default))
super.main(progName, args)
}

Expand Down
Expand Up @@ -13,6 +13,8 @@ object GlobalOptions {
implicit lazy val parser: Parser[GlobalOptions] = Parser.derive
implicit lazy val help: Help[GlobalOptions] = Help.derive

lazy val default: GlobalOptions = GlobalOptions()

def get(args: List[String]): Option[GlobalOptions] =
parser
.detailedParse(args, stopAtFirstUnrecognized = false, ignoreUnrecognized = true)
Expand Down
@@ -0,0 +1,20 @@
package scala.cli.integration

import com.eed3si9n.expecty.Expecty.expect

import scala.util.Properties

class CompleteTests extends ScalaCliSuite {

test("simple") {
TestInputs.empty.fromRoot { root =>
val res = os.proc(TestUtil.cli, "complete", shellFormat, "2", "com").call(cwd = root)
expect(res.exitCode == 0)
expect(res.out.trim().nonEmpty)
}
}

def shellFormat: String =
if (Properties.isMac) "zsh-v1"
else "bash-v1"
}

0 comments on commit 82e6387

Please sign in to comment.