2015-02-03 5 views
5

C'è qualche funzionalità incorporata o plugin per lein per ottenere una console lein, così per esempio si può testare senza attendere ogni volta che JVM si avvia.Lein console (come sbt)

$ lein console 
>>> test 
... 
>>> test 
... 
>>> jar 

Nota: vorrei innescare prova me stesso viene eseguito, non per esempio guardando i file sorgente. Ecco perché mi piacerebbe avere una console lein.

Precisazione: sto non in cerca di lein repl. Mi piacerebbe avere una console in cui potrei eseguire i comandi di task lein.

+0

stai cercando 'lein repl'? – cfrick

+0

@cfrick no, lein repl inizia * clojure repl *. Mi piacerebbe una console in cui potrei eseguire i comandi di task lein. – phadej

+1

lein è un programma clojure e le sue attività possono essere eseguite in un repl se si caricano le librerie lein – noisesmith

risposta

1

Si potrebbe desiderare di dare un'occhiata a grenchman. Sebbene non sia una console Leiningen, consente almeno il riutilizzo di una sessione REPL esistente. Da quanto ho capito, l'utilizzo è la seguente:

  1. Sposta da qualche parte che non è all'interno di un progetto e chiamare:

    $ lein repl :headless 
    
  2. All'interno della vostra directory del progetto, uso:

    $ grench lein <task> <options> 
    

Le attività verranno eseguite all'interno della JVM di Leiningen già avviata e l'overhead di avvio dovrebbe scomparire.

grenchman edificio sembra essere noioso, però, e si consiglia di utilizzare uno dei precompiled binaries (MA sono attualmente not available).

E, infine, la pagina afferma anche:

Grenchman è ancora molto nuovo e non può essere completamente affidabile.

Quindi, buona fortuna, immagino?

+0

Purtroppo i download di file binari di Grenchman sono scomparsi :(Ho ricevuto il permesso negato per tutti loro. – Ilkka

+0

Oh no. Sembra essere un [problema noto] (https://github.com/technomancy/grenchman/issues/30) ... – xsc

0

Un'opzione è eseguire un repl del file jar di leiningen.

$ java -cp ~/.lein/self-installs/leiningen-2.5.0-standalone.jar clojure.main 
Clojure 1.6.0 
user=> (require '[leiningen.core.project :as project] '[leiningen.test :as test]) 
nil 
user=> (def prj (project/read)) 
#'user/prj 
user=> (test/test prj) 

lein test org.noisesmith.orsos.load-test 

Ran 3 tests containing 3 assertions. 
0 failures, 0 errors. 
nil 
user=> (require '[leiningen.jar :as jar]) 
nil 
user=> (jar/jar prj 'org.noisesmith.orsos) 
Compiling org.noisesmith.orsos 
Created /media/justin/806084F16084EEEA/clojure/orsos/target/orsos-0.1.0-SNAPSHOT.jar 
{[:extension "jar"] "/media/justin/806084F16084EEEA/clojure/orsos/target/orsos-0.1.0-SNAPSHOT.jar"} 
user=> 

Come linea di base, questo può eseguire le attività lein senza dover riavviare lein ogni volta. Se usi anche rlwrap o usi nrepl diventa un po 'più utilizzabile. Per quanto ne so, non ci sono strumenti user friendly attorno a questo (anche se potrebbe esserci facilmente).

Se si desidera utilizzare le attività dai plugin lein, è possibile aggiungerle all'argomento -cp arg.

1

Le vecchie versioni di Leiningen utilizzati per includere lein interactive, che si comportava proprio come la funzione che stai chiedendo: ha aperto un guscio in cui è possibile digitare test e farlo funzionare lein test dalla già in esecuzione JVM Lein, e così via . Questa caratteristica è stata rimossa nella transizione a lein 2.0, penso, e anche se non so perché sospetto ci fosse una buona ragione. Forse provate a chiedere in #leiningen su freenode?