diff --git a/.gitignore b/.gitignore index d8f95d5dc886ab51ffcd88cf6d5cb1b90fcf8351..5dd7294d0db410a2f35b748517599800562afaa6 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ target/checksum.txt /resources/frontend_client/app/locales *.iml .idea/ +/local/src diff --git a/dev/src/dev.clj b/dev/src/dev.clj new file mode 100644 index 0000000000000000000000000000000000000000..646b379f7ef4a3d9550db101b65980372d72e45d --- /dev/null +++ b/dev/src/dev.clj @@ -0,0 +1,49 @@ +(ns dev + "Put everything needed for REPL development within easy reach" + (:require [metabase + [core :as mbc] + [db :as mdb] + [handler :as handler] + [plugins :as pluguns] + [server :as server] + [util :as u]] + [metabase.api.common :as api-common] + [metabase.models.interface :as mi] + [toucan.db :as tdb])) + + +(defn init! + [] + (mbc/init!)) + +(defn start! + [] + (metabase.server/start-web-server! #'metabase.handler/app) + (metabase.db/setup-db!) + (metabase.plugins/load-plugins!) + (metabase.core.initialization-status/set-complete!)) + +(defn stop! + [] + (metabase.server/stop-web-server!)) + +(defn restart! + [] + (stop!) + (start!)) + +(defn run-tests + [& ns-names] + (doseq [ns-name ns-names] + (require ns-name :reload)) + (expectations/run-tests ns-names)) + +(defmacro require-model + "Rather than requiring all models inn the ns declaration, make it easy to require the ones you need for your current session" + [model-sym] + `(require [(symbol (str "metabase.models." (quote ~model-sym))) :as (quote ~model-sym)])) + +(defmacro with-permissions + [permissions & body] + `(binding [api-common/*current-user-permissions-set* (delay ~permissions)] + ~@body)) diff --git a/dev/src/user.clj b/dev/src/user.clj new file mode 100644 index 0000000000000000000000000000000000000000..9cf3c0c4e9eb9df29ff7dcf17d49e480c3ce2518 --- /dev/null +++ b/dev/src/user.clj @@ -0,0 +1,8 @@ +(ns user) + +(defn dev + "Load and switch to the 'dev' namespace." + [] + (require 'dev) + (in-ns 'dev) + :loaded) diff --git a/dev/user.clj b/dev/user.clj deleted file mode 100644 index 7a96237a767d7c0fc03e9a287e969b7199113c3b..0000000000000000000000000000000000000000 --- a/dev/user.clj +++ /dev/null @@ -1 +0,0 @@ -(ns user) diff --git a/project.clj b/project.clj index 12a32eaf775b19bedd373e8f89f1d1197b2508da..9d96179368e0116227966f227f502fdfe72021a0 100644 --- a/project.clj +++ b/project.clj @@ -151,7 +151,9 @@ :profiles {:dev - {:dependencies + {:source-paths ["dev/src" "local/src"] + + :dependencies [[clj-http-fake "1.0.3" :exclusions [slingshot]] ; Library to mock clj-http responses [expectations "2.1.10"] ; unit tests [ring/ring-mock "0.3.2"]] @@ -247,7 +249,7 @@ [[jonase/eastwood "0.3.1" :exclusions [org.clojure/clojure]]] :eastwood - {:exclude-namespaces [:test-paths] + {:exclude-namespaces [:test-paths dev] :config-files ["./test_resources/eastwood-config.clj"] :add-linters [:unused-private-vars :unused-namespaces @@ -283,7 +285,7 @@ :check-namespace-decls [:include-all-drivers {:plugins [[lein-check-namespace-decls "1.0.2"]] - :source-paths ["test"] + :source-paths ^:replace ["src" "test"] :check-namespace-decls {:prefix-rewriting true}}] ;; build the uberjar with `lein uberjar`