2016-02-26 2 views
2

Как вы можете помочь для пользовательских команд в sbt?SBT предоставляет помощь для пользовательских команд

Я хочу, чтобы отобразить указанную помощь в случае арг я набор неправильны (например, положить строку в число арг)

Я также хочу, чтобы отобразить справку, если help <myCommand> набирается.

Любые подсказки? В документации ничего не говорится об этом: http://www.scala-sbt.org/0.12.4/docs/Extending/Commands.html

И google тоже не помогает.

Спасибо.

ответ

4

Согласно the documentation, help должен работать на Command с. Но вам необходимо правильно определить ваш Command, используя один из методов в Command.scala, например.

commands += Command.command("foo", "bar", "baz")(...) 

затем

> foo<TAB> 
    bar 
> help foo 
    baz 

На благо всех, кто хочет сделать то же самое для Task, вот ответ ...

Задача help вход, что вы хотите, чтобы пользователи типа, например

> help compile 
Compiles sources. 

и предоставить строку документации, вы предоставляете, когда вы определяете ключ к вашему Task. например

val compile = TaskKey[CompileAnalysis]("compile", "Compiles sources.", APlusTask) 

Позже вы назначьте ключ к реализации Task, как так

compile <<= compileTask 

или с помощью API нового макроса на основе (который я ненавижу)

compile := { println("hello world") ; compile.value } 

Много примеры в

+1

FYI Я поднял билет на это [на ensime-SBT] (https://github.com/ensime/ensime-sbt/issues/176), потому что кажется, что мы делаем это неправильно. – fommil

+0

Привет! Спасибо за ответ. Я определяю свою команду следующим образом: «Command.args (« myRun »,« display », sbt.Help (briefHelp = (« foo »,« bar »)))) (...)' При вызове help myRun говорится: 'Нет совпадений для регулярного выражения 'runFull''. Что я делаю не так? –

Смежные вопросы