   [path]
   (-> path read-project-clj :clr some?))
 
-(defn ring-project-map?
-  [project]
-  (let [{:keys [ring main]} project]
+(defn ring-project?
+  [path]
+  (let [{:keys [ring main]} (read-project-clj path)]
     (and (some? ring) (nil? main))))
 
-(defn ring-project?
-  [path]
-  (-> path read-project-clj ring-project-map?))
-
 (defn valid-project?
   [path]
-  (not (and (sandbox/get-dir)
-            (android-project? path))))
+  (and (not (ios-project? path))
+       (or (not (android-project? path))
+           (not (sandbox/get-dir)))))
 
 ; start/stop thread/processes
 

  (or (.exists (io/file path "AndroidManifest.xml"))
      (.exists (io/file path "AndroidManifest.template.xml"))))

(defn java-project-map?
  [project]
  (or (:java-only project)
      (= (count (:source-paths project)) 0)
      (clojure.set/subset? (set (:source-paths project))
                           (set (:java-source-paths project)))))

(defn java-project?
  [path]
  (-> path read-project-clj java-project-map?))

(defn clojurescript-project?
  [path]

(defn clean-project-task
  [path project]
  (cond
    (clr-project? path)
    (leiningen.clr/clr project "clean")
    :else
    (leiningen.clean/clean project)))
