From 989eacebc74437a1d38d50cfd5a5fcc2b08c9ad6 Mon Sep 17 00:00:00 2001
From: Alex Oloo <alex@achielit.com>
Date: Sat, 26 Dec 2015 02:51:20 +0200
Subject: [PATCH 1/6] Bugs fixed, invalid input exception handling

-Added support to query "/"
-Inexplicable behaviour when dust doc * is called
-specific namespaces can be searched for
---
 run.pxi | 48 +++++++++++++++++++++++++++++++-----------------
 1 file changed, 31 insertions(+), 17 deletions(-)

diff --git a/run.pxi b/run.pxi
index 75abbf2..2bc0b46 100644
--- a/run.pxi
+++ b/run.pxi
@@ -34,17 +34,16 @@
 
 
 (defn showdoc [ns function]
-  (let [name (str (if (not= ns "pixie.stdlib") (str ns "/") (str ns "/")))]
+  (let [name (str (if (= function "/") (str  ns) (str ns "/")))]
   ;loads other possible namespaces in case function is in other namespace
     (if (= @show-all true) (eval   (read-string (str "(require " ns ")"))))
       
-    (let [data (meta (eval (read-string (str name function))))]
-      (print (str "\n  " name function "\n\n\t"))
-      (let [func-name (if (not= (str/index-of function "/") nil) (str function) (str name function))]
-        (loop [sigs (lazy-seq (:signatures data))]
-          (when (not= sigs '()) 
-            (print (str/replace (str (lazy-seq (first sigs)) "  ") "(" (str "(" func-name " ")))
-            (recur (rest sigs)))))
+    (let [data (meta (eval (read-string (str name function)))) func-name (if (and (not= (str/index-of function "/") nil) (not= (str function) "/")) (str function) (str name function))]
+      (print (str "\n  " func-name "\n\n\t"))
+      (loop [sigs (lazy-seq (:signatures data))]
+        (when (not= sigs '()) 
+          (print (str/replace (str (lazy-seq (first sigs)) "  ") "(" (str "(" func-name " ")))
+          (recur (rest sigs))))
 
       (if (nil? data)
         (do 
@@ -69,15 +68,30 @@
 
 (defcmd doc
   "Show function documentation. Broaden search using -all"
-  [function-name & search-all]
-  (if (= (str (first search-all)) "-all") (reset! show-all true))
-  (loop [_ 0]
-    (when (not= @namespaces '()) 
-      (try (showdoc (str (first @namespaces)) (str function-name))
-        (catch e
-         nil)) 
-         (recur (reset! namespaces (rest @namespaces)))))
-  (if (= @unknown-command true) (println (str "\n  " function-name "\n\n\t Function not found. " (if (not= (str (first search-all)) "-all") (str "Broaden search using -all flag.\n") (str "\n"))))))
+ [ & args]
+   (if (empty? args)
+    (help-cmd "doc")
+    (let [function-name (first args) search-all (first (rest args))]
+      (if (and (not= (str/index-of (str function-name) "/") nil) (not= (str function-name) "/") )
+          ;test for division operator as function to be documented
+          (do
+            (try 
+              (eval (read-string (str "(require " (str/substring function-name 0 (str/index-of function-name "/")) ")")))
+              ;load the required namespaces
+
+              (showdoc (str (first @namespaces)) (str function-name))
+              (catch e
+               (reset! unknown-command true)))
+              (reset! namespaces '())))
+      (if (= (str search-all) "-all") (reset! show-all true))
+      (loop [_ 0]
+        (when (not= @namespaces '()) 
+          (try (showdoc (str (first @namespaces)) (if (= function-name "deps") (str "*") (str function-name)))
+            ; $ dust doc * -> dust doc deps ???
+            (catch e
+             nil)) 
+             (recur (reset! namespaces (rest @namespaces)))))
+      (if (= @unknown-command true) (println (str "\n  " function-name "\n\n\t Function not found. " (if (not= (str search-all) "-all") (str "Broaden search using -all flag.\n") (str "\n"))))))))
 
 (defcmd deps
   "List the dependencies and their versions of the current project."

From 31ed0ed6b4fce78359f728a729e92856e7f3dbff Mon Sep 17 00:00:00 2001
From: alekcz <alekcz@gmail.com>
Date: Mon, 25 Jan 2016 17:37:35 +0200
Subject: [PATCH 2/6] `dust doc` works outside of project directories

---
 run.pxi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/run.pxi b/run.pxi
index 2bc0b46..e0b2e1b 100644
--- a/run.pxi
+++ b/run.pxi
@@ -66,7 +66,7 @@
 
 
 
-(defcmd doc
+(defcmd ^:no-project doc
   "Show function documentation. Broaden search using -all"
  [ & args]
    (if (empty? args)

From 20c7c709e5541af52fa8e0ba65c1c8917d920a0a Mon Sep 17 00:00:00 2001
From: Alexander Oloo <alekcz@gmail.com>
Date: Fri, 24 Jun 2016 22:08:50 +0200
Subject: [PATCH 3/6] change to use pixie instead of pixie-vm

---
 dust | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dust b/dust
index ffced9b..65b7cf2 100755
--- a/dust
+++ b/dust
@@ -6,9 +6,9 @@ if [ -L "$base_path" ]; then
 fi
 base_path=`dirname $base_path`
 
-pixie_path=`which pixie-vm`
+pixie_path=`which pixie`
 if [ -z "$pixie_path" ]; then
-    echo "Error: 'pixie-vm' must be on your PATH"
+    echo "Error: 'pixie' must be on your PATH"
     exit 1
 fi
 

From ebcef0ae6f2e4612a5f182f9c93406e477b4edd2 Mon Sep 17 00:00:00 2001
From: Alexander Oloo <alekcz@gmail.com>
Date: Fri, 24 Jun 2016 22:13:28 +0200
Subject: [PATCH 4/6] Update help to display pixie instead of pixie-vm

---
 dust | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dust b/dust
index 65b7cf2..a0199f6 100755
--- a/dust
+++ b/dust
@@ -22,7 +22,7 @@ function set_load_path() {
 if [ ! -f "project.edn" ] && [ -f "project.pxi" ]; then
 	echo "Warning: 'project.pxi' is deprecated, please use 'project.edn'."
 	echo "To start you can run the following command:"
-	echo "  pixie-vm -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'"
+	echo "  pixie -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'"
 	echo
 fi
 

From a5998b94a90e1e6e9775e7a19f4dcce1902621ca Mon Sep 17 00:00:00 2001
From: Alexander Oloo <alekcz@gmail.com>
Date: Sat, 25 Jun 2016 08:56:35 +0200
Subject: [PATCH 5/6] remove project.pxi (breaks global dust when present)

---
 project.pxi | 3 ---
 1 file changed, 3 deletions(-)
 delete mode 100644 project.pxi

diff --git a/project.pxi b/project.pxi
deleted file mode 100644
index 94e2f26..0000000
--- a/project.pxi
+++ /dev/null
@@ -1,3 +0,0 @@
-(defproject dust "0.1.0-alpha"
-  :description "Magic fairy dust for Pixie"
-  :dependencies [])

From c58ef65188a13d8caefe33d742e985deaa628253 Mon Sep 17 00:00:00 2001
From: Alexander Oloo <alekcz@gmail.com>
Date: Sat, 25 Jun 2016 09:31:37 +0200
Subject: [PATCH 6/6] allow pixie-vm, pixie and pxi till we decide

---
 dust | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/dust b/dust
index a0199f6..297c76d 100755
--- a/dust
+++ b/dust
@@ -8,8 +8,18 @@ base_path=`dirname $base_path`
 
 pixie_path=`which pixie`
 if [ -z "$pixie_path" ]; then
-    echo "Error: 'pixie' must be on your PATH"
-    exit 1
+    pixie_path=`which pixie-vm`
+    if [ -z "$pixie_path" ]; then
+        pixie_path=`which pxi`
+        if [ -z "$pixie_path" ]; then
+            echo "Error: 'pixie' must be on your PATH"
+            exit 1
+        #else
+        #    echo "Warning: Using 'pxi' on path is deprecated. 'pixie' is preferred."
+        fi    
+    #else
+    #    echo "Warning: Using 'pixie-vm' on path is deprecated. 'pixie' is preferred."
+    fi
 fi
 
 function set_load_path() {
@@ -22,7 +32,7 @@ function set_load_path() {
 if [ ! -f "project.edn" ] && [ -f "project.pxi" ]; then
 	echo "Warning: 'project.pxi' is deprecated, please use 'project.edn'."
 	echo "To start you can run the following command:"
-	echo "  pixie -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'"
+	echo "  $pixie_path     -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'"
 	echo
 fi