From 38b449a370d7a260a8fe000a2681f9490167fd12 Mon Sep 17 00:00:00 2001 From: Ruben Berenguel Montoro Date: Sat, 7 Apr 2018 17:29:48 +0100 Subject: [PATCH 1/3] Better approach to the issue --- .../scala/bloop/cli/completion/Case.scala | 22 +++++++++++++++++++ .../main/scala/bloop/engine/Interpreter.scala | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 frontend/src/main/scala/bloop/cli/completion/Case.scala diff --git a/frontend/src/main/scala/bloop/cli/completion/Case.scala b/frontend/src/main/scala/bloop/cli/completion/Case.scala new file mode 100644 index 0000000000..72dc8d53da --- /dev/null +++ b/frontend/src/main/scala/bloop/cli/completion/Case.scala @@ -0,0 +1,22 @@ +package bloop.cli.completion + +import caseapp.core.{Arg} +import caseapp.Name + +object Case { + private val Kebab = "-([a-z])".r + private val Camel = "([A-Z])".r + + private def camelToKebab(camel: String): String = { + val m = Camel.pattern.matcher(camel) + val sb = new StringBuffer + while (m.find()) { + m.appendReplacement(sb, "-" + m.group().toLowerCase()) + } + m.appendTail(sb) + sb.toString + } + + def kebabizeArg(arg: Arg): Arg = arg.copy(extraNames = + arg.extraNames.map((n: Name) => Name(camelToKebab(n.name)))) +} diff --git a/frontend/src/main/scala/bloop/engine/Interpreter.scala b/frontend/src/main/scala/bloop/engine/Interpreter.scala index 445d78bc1f..daada31921 100644 --- a/frontend/src/main/scala/bloop/engine/Interpreter.scala +++ b/frontend/src/main/scala/bloop/engine/Interpreter.scala @@ -5,7 +5,7 @@ import bloop.bsp.BspServer import scala.annotation.tailrec import bloop.cli.{BspProtocol, CliOptions, Commands, ExitStatus, ReporterKind} import bloop.cli.CliParsers.CommandsMessages -import bloop.cli.completion.Mode +import bloop.cli.completion.{Case, Mode} import bloop.io.SourceWatcher import bloop.io.Timer.timed import bloop.reporter.ReporterConfig @@ -227,7 +227,7 @@ object Interpreter { command <- cmd.command message <- CommandsMessages.messages.toMap.get(command) arg <- message.args - completion <- cmd.format.showArg(command, arg) + completion <- cmd.format.showArg(command, Case.kebabizeArg(arg)) } state.logger.info(completion) case Mode.Reporters => for { From 6f4f32185e475f89473002a5efe2e7ce7dde04b7 Mon Sep 17 00:00:00 2001 From: Ruben Berenguel Montoro Date: Sat, 7 Apr 2018 17:31:20 +0100 Subject: [PATCH 2/3] Revert "Better approach to the issue" This reverts commit 38b449a370d7a260a8fe000a2681f9490167fd12. --- .../scala/bloop/cli/completion/Case.scala | 22 ------------------- .../main/scala/bloop/engine/Interpreter.scala | 4 ++-- 2 files changed, 2 insertions(+), 24 deletions(-) delete mode 100644 frontend/src/main/scala/bloop/cli/completion/Case.scala diff --git a/frontend/src/main/scala/bloop/cli/completion/Case.scala b/frontend/src/main/scala/bloop/cli/completion/Case.scala deleted file mode 100644 index 72dc8d53da..0000000000 --- a/frontend/src/main/scala/bloop/cli/completion/Case.scala +++ /dev/null @@ -1,22 +0,0 @@ -package bloop.cli.completion - -import caseapp.core.{Arg} -import caseapp.Name - -object Case { - private val Kebab = "-([a-z])".r - private val Camel = "([A-Z])".r - - private def camelToKebab(camel: String): String = { - val m = Camel.pattern.matcher(camel) - val sb = new StringBuffer - while (m.find()) { - m.appendReplacement(sb, "-" + m.group().toLowerCase()) - } - m.appendTail(sb) - sb.toString - } - - def kebabizeArg(arg: Arg): Arg = arg.copy(extraNames = - arg.extraNames.map((n: Name) => Name(camelToKebab(n.name)))) -} diff --git a/frontend/src/main/scala/bloop/engine/Interpreter.scala b/frontend/src/main/scala/bloop/engine/Interpreter.scala index daada31921..445d78bc1f 100644 --- a/frontend/src/main/scala/bloop/engine/Interpreter.scala +++ b/frontend/src/main/scala/bloop/engine/Interpreter.scala @@ -5,7 +5,7 @@ import bloop.bsp.BspServer import scala.annotation.tailrec import bloop.cli.{BspProtocol, CliOptions, Commands, ExitStatus, ReporterKind} import bloop.cli.CliParsers.CommandsMessages -import bloop.cli.completion.{Case, Mode} +import bloop.cli.completion.Mode import bloop.io.SourceWatcher import bloop.io.Timer.timed import bloop.reporter.ReporterConfig @@ -227,7 +227,7 @@ object Interpreter { command <- cmd.command message <- CommandsMessages.messages.toMap.get(command) arg <- message.args - completion <- cmd.format.showArg(command, Case.kebabizeArg(arg)) + completion <- cmd.format.showArg(command, arg) } state.logger.info(completion) case Mode.Reporters => for { From a23179d8f4ad4490bf29a3b20ca96208b249dc47 Mon Sep 17 00:00:00 2001 From: Ruben Berenguel Montoro Date: Sat, 7 Apr 2018 21:58:54 +0100 Subject: [PATCH 3/3] Log watching status --- frontend/src/main/scala/bloop/engine/Interpreter.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/main/scala/bloop/engine/Interpreter.scala b/frontend/src/main/scala/bloop/engine/Interpreter.scala index 445d78bc1f..750718f2bf 100644 --- a/frontend/src/main/scala/bloop/engine/Interpreter.scala +++ b/frontend/src/main/scala/bloop/engine/Interpreter.scala @@ -94,10 +94,14 @@ object Interpreter { } private[bloop] def watch(project: Project, state: State, f: State => Task[State]): Task[State] = { + import state.logger val reachable = Dag.dfs(state.build.getDagFor(project)) val allSourceDirs = reachable.iterator.flatMap(_.sourceDirectories.toList).map(_.underlying) val watcher = new SourceWatcher(project, allSourceDirs.toList, state.logger) - val fg = (state: State) => f(state).map(state => State.stateCache.updateBuild(state)) + val fg = (state: State) => f(state).map { state => + logger.info("Waiting for source changes... (press C-c to interrupt)") + State.stateCache.updateBuild(state) + } // Force the first execution before relying on the file watching task fg(state).flatMap(newState => watcher.watch(newState, fg))