From c7583008ebd54ac4435a06b1d2502ebb698dfd60 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Sat, 19 Nov 2011 20:45:47 -0800 Subject: [PATCH] Remove interactive and test! tasks. --- src/leiningen/compile.clj | 5 +-- src/leiningen/interactive.clj | 80 ----------------------------------- src/leiningen/repl.clj | 7 ++- src/leiningen/test!.clj | 11 ----- 4 files changed, 5 insertions(+), 98 deletions(-) delete mode 100644 src/leiningen/interactive.clj delete mode 100644 src/leiningen/test!.clj diff --git a/src/leiningen/compile.clj b/src/leiningen/compile.clj index 15808bb4..0861e8f9 100644 --- a/src/leiningen/compile.clj +++ b/src/leiningen/compile.clj @@ -1,7 +1,7 @@ (ns leiningen.compile "Compile Clojure source into .class files." (:use [leiningen.deps :only [deps find-deps-files]] - [leiningen.core :only [defdeprecated user-settings *interactive?*]] + [leiningen.core :only [defdeprecated user-settings]] [leiningen.javac :only [javac]] [leiningen.classpath :only [get-classpath-string]] [clojure.java.io :only [file resource reader copy]] @@ -122,8 +122,7 @@ (finally (when (and ~(:shutdown-agents project false) (not= "1.5" (System/getProperty - "java.specification.version")) - ~(not *interactive?*)) + "java.specification.version"))) (shutdown-agents)))))] ;; work around java's command line handling on windows ;; http://bit.ly/9c6biv This isn't perfect, but works for what's diff --git a/src/leiningen/interactive.clj b/src/leiningen/interactive.clj deleted file mode 100644 index 7683000c..00000000 --- a/src/leiningen/interactive.clj +++ /dev/null @@ -1,80 +0,0 @@ -(ns leiningen.interactive - "Enter interactive task shell." - (:require [clojure.string :as string] - [clojure.java.io :as io]) - (:use [leiningen.core :only [apply-task exit *interactive?*]] - [leiningen.test :only [*exit-after-tests*]] - [leiningen.repl :only [repl-server repl-socket-on - copy-out-loop poll-repl-connection]] - [leiningen.compile :only [eval-in-project]])) - -(def welcome "Welcome to Leiningen. Type help for a list of commands.") - -(def prompt "lein> ") - -(defn not-found [& _] - (println "That's not a task. Use help to list all tasks.")) - -(defn- eval-client-loop [reader buffer socket] - (let [len (.read reader buffer)] - (when-not (neg? len) - (.write *out* buffer 0 len) - (.flush *out*) - (when-not (.isClosed socket) - (Thread/sleep 100) - (recur reader buffer socket))))) - -(defn eval-in-repl [connect project form & [_ _ init]] - (let [[reader writer socket] (connect)] - (.write writer (str "(do " (pr-str init) - (pr-str form) "\n" ' - (.close *in*) ")\n")) - (.flush writer) - (try (eval-client-loop reader (make-array Character/TYPE 1000) socket) - 0 - (catch Exception e - (.printStackTrace e) 1) - (finally - (.close reader) - (.close writer))))) - -(defn print-prompt [] - (print prompt) - (flush)) - -(defn task-repl [project] - (print-prompt) - (loop [input (.readLine *in*)] - (when (and input (not= input "exit")) - (let [[task-name & args] (string/split input #"\s")] - ;; TODO: don't start a second repl server for repl task - (try (apply-task task-name project args not-found) - ;; TODO: not sure why, but repl seems to put an extra EOF on *in* - (when (= "repl" task-name) - (.read *in*)) - (catch Exception e - (println (.getMessage e)))) - (print-prompt) - (recur (.readLine *in*)))))) - -(defn interactive - "Enter an interactive task shell. Aliased to \"int\"." - [project] - (.delete (io/file "/tmp/bugger-all")) - (let [[port host] (repl-socket-on project)] - (println welcome) - (future - (binding [*interactive?* true] - (eval-in-project project (repl-server project host port - :prompt '(fn []) - :caught '(fn [t] - (println (.getMessage t)) - (.printStackTrace t) - (.close *in*)))))) - (let [connect #(poll-repl-connection port 0 vector)] - (binding [eval-in-project (partial eval-in-repl connect) - *exit-after-tests* false - *interactive?* true - exit (fn exit [& _] (prn))] - (task-repl project))) - (exit))) diff --git a/src/leiningen/repl.clj b/src/leiningen/repl.clj index fc90d2e0..62c88767 100644 --- a/src/leiningen/repl.clj +++ b/src/leiningen/repl.clj @@ -1,7 +1,7 @@ (ns leiningen.repl "Start a repl session either with the current project or standalone." (:require [clojure.main]) - (:use [leiningen.core :only [exit user-settings *interactive?*]] + (:use [leiningen.core :only [exit user-settings]] [leiningen.compile :only [eval-in-project]] [leiningen.deps :only [find-deps-files deps]] [leiningen.trampoline :only [*trampoline?*]] @@ -76,9 +76,8 @@ .start) (if ~*trampoline?* (clojure.main/repl ~@options) - (do (when-not ~*interactive?* - (println "REPL started; server listening on" - ~host "port" ~port)) + (do (println "REPL started; server listening on" + ~host "port" ~port) ;; block to avoid shutdown-agents @(promise)))))) diff --git a/src/leiningen/test!.clj b/src/leiningen/test!.clj deleted file mode 100644 index 6947d278..00000000 --- a/src/leiningen/test!.clj +++ /dev/null @@ -1,11 +0,0 @@ -(ns leiningen.test! - "Run the project's tests after cleaning and fetching dependencies." - (:refer-clojure :exclude [test]) - (:use [leiningen.clean :only [clean]] - [leiningen.deps :only [deps]] - [leiningen.test :only [test]])) - -(defn test! - "Run a project's tests after cleaning and fetching dependencies." - [project & nses] - (apply test (doto project clean deps) nses))