Newer
Older
;; -*- comment-column: 80; -*-
{:deps
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !! PLEASE KEEP THESE ORGANIZED ALPHABETICALLY !!
;; !! AND ADD A COMMENT EXPLAINING THEIR PURPOSE !!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{amalloy/ring-buffer {:mvn/version "1.3.1" ; fixed length queue implementation, used in log buffering
:exclusions [org.clojure/clojure
org.clojure/clojurescript]}
amalloy/ring-gzip-middleware {:mvn/version "0.1.4"} ; Ring middleware to GZIP responses if client can handle it
bigml/histogram {:mvn/version "4.1.4"} ; Histogram data structure
buddy/buddy-core {:mvn/version "1.10.413" ; various cryptographic functions
:exclusions [commons-codec/commons-codec
org.bouncycastle/bcpkix-jdk15on
org.bouncycastle/bcprov-jdk15on]}
buddy/buddy-sign {:mvn/version "3.4.333"} ; JSON Web Tokens; High-Level message signing library
camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"} ; util functions for converting between camel, snake, and kebob case
cheshire/cheshire {:mvn/version "5.10.2"} ; fast JSON encoding (used by Ring JSON middleware)
clj-commons/iapetos {:mvn/version "0.1.12"} ; prometheus metrics
clj-http/clj-http {:mvn/version "3.12.3" ; HTTP client
:exclusions [commons-codec/commons-codec
commons-io/commons-io
slingshot/slingshot]}
clojurewerkz/quartzite {:mvn/version "2.1.0" ; scheduling library
Cam Saul
committed
:exclusions [c3p0/c3p0
org.quartz-scheduler/quartz]}
colorize/colorize {:mvn/version "0.1.1" ; string output with ANSI color codes (for logging)
com.clearspring.analytics/stream {:mvn/version "2.9.8" ; Various sketching algorithms
:exclusions [it.unimi.dsi/fastutil
org.slf4j/slf4j-api]}
com.draines/postal {:mvn/version "2.0.5"} ; SMTP library
com.google.guava/guava {:mvn/version "31.0.1-jre"} ; dep for BigQuery, Spark, and GA. Require here rather than letting different dep versions stomp on each other — see comments on #9697
com.fasterxml.jackson.core/jackson-databind
{:mvn/version "2.13.4.2"} ; JSON processor used by snowplow-java-tracker
com.fasterxml.woodstox/woodstox-core {:mvn/version "6.4.0"} ; trans dep of commons-codec (pinned version due to CVE-2022-40151)
com.h2database/h2 {:mvn/version "2.1.212"} ; embedded SQL database
com.snowplowanalytics/snowplow-java-tracker
{:mvn/version "0.12.0" ; Snowplow analytics
:exclusions [com.fasterxml.jackson.core/jackson-databind]}
com.taoensso/nippy {:mvn/version "3.1.1"} ; Fast serialization (i.e., GZIP) library for Clojure
com.vladsch.flexmark/flexmark {:mvn/version "0.64.0"} ; Markdown parsing
Noah Moss
committed
com.vladsch.flexmark/flexmark-ext-autolink
{:mvn/version "0.64.0"} ; Flexmark extension for auto-linking bare URLs
commons-codec/commons-codec {:mvn/version "1.15"} ; Apache Commons -- useful codec util fns
commons-io/commons-io {:mvn/version "2.11.0"} ; Apache Commons -- useful IO util fns
commons-validator/commons-validator {:mvn/version "1.7" ; Apache Commons -- useful validation util fns
:exclusions [commons-beanutils/commons-beanutils
commons-digester/commons-digester
commons-logging/commons-logging]}
compojure/compojure {:mvn/version "1.6.2" ; HTTP Routing library built on Ring
crypto-random/crypto-random {:mvn/version "1.2.1"} ; library for generating cryptographically secure random bytes and strings
dk.ative/docjure {:mvn/version "1.19.0" ; excel export
:exclusions [org.apache.poi/poi
org.apache.poi/poi-ooxml]}
environ/environ {:mvn/version "1.2.0"} ; env vars/Java properties abstraction
hiccup/hiccup {:mvn/version "1.0.5"} ; HTML templating
honeysql/honeysql {:mvn/version "1.0.461" ; Transform Clojure data structures to SQL
:exclusions [org.clojure/clojurescript]}
instaparse/instaparse {:mvn/version "1.4.12"} ; Make your own parser
io.forward/yaml {:mvn/version "1.0.11" ; Clojure wrapper for YAML library SnakeYAML. Don't upgrade yet, new version doesn't support Java 8 (see https://github.com/owainlewis/yaml/issues/37)
:exclusions [org.clojure/clojure
org.flatland/ordered
org.yaml/snakeyaml]}
io.github.resilience4j/resilience4j-retry {:mvn/version "1.7.1"} ; Support for retrying operations
io.prometheus/simpleclient_hotspot {:mvn/version "0.16.0"} ; prometheus jvm collector
io.prometheus/simpleclient_jetty {:mvn/version "0.16.0"} ; prometheus jetty collector
joda-time/joda-time {:mvn/version "2.10.13"}
kixi/stats {:mvn/version "0.4.4" ; Various statistic measures implemented as transducers
:exclusions [org.clojure/data.avl]}
me.raynes/fs {:mvn/version "1.4.6" ; Filesystem tools
:exclusions [org.apache.commons/commons-compress]}
medley/medley {:mvn/version "1.4.0"} ; lightweight lib of useful functions
metabase/connection-pool {:mvn/version "1.2.0"} ; simple wrapper around C3P0. JDBC connection pools
metabase/saml20-clj {:mvn/version "2.0.2"} ; EE SAML integration
metabase/throttle {:mvn/version "1.0.2"} ; Tools for throttling access to API endpoints and other code pathways
metosin/malli {:mvn/version "0.9.2"} ; Data-driven Schemas for Clojure/Script and babashka
Braden Shepherdson
committed
nano-id/nano-id {:mvn/version "1.0.0"} ; NanoID generator for generating entity_ids
net.cgrand/macrovich {:mvn/version "0.2.1"} ; utils for writing macros for both Clojure & ClojureScript
net.i2p.crypto/eddsa {:mvn/version "0.3.0"} ; ED25519 key support (optional dependency for org.apache.sshd/sshd-core)
net.redhogs.cronparser/cron-parser-core {:mvn/version "3.5" ; describe Cron schedule in human-readable language
:exclusions [joda-time/joda-time ; exclude joda time 2.3 which has outdated timezone information
org.slf4j/slf4j-api]}
net.sf.cssbox/cssbox {:mvn/version "5.0.0" ; HTML / CSS rendering
net.thisptr/jackson-jq {:mvn/version "1.0.0-preview.20210928"} ; Java implementation of the JQ json query language
org.apache.commons/commons-compress {:mvn/version "1.21"} ; compression utils
org.apache.commons/commons-lang3 {:mvn/version "3.12.0"} ; helper methods for working with java.lang stuff
org.apache.logging.log4j/log4j-1.2-api {:mvn/version "2.18.0"} ; apache logging framework
org.apache.logging.log4j/log4j-api {:mvn/version "2.18.0"} ; add compatibility with log4j 1.2
org.apache.logging.log4j/log4j-core {:mvn/version "2.18.0"} ; apache logging framework
org.apache.logging.log4j/log4j-jcl {:mvn/version "2.18.0"} ; allows the commons-logging API to work with log4j 2
org.apache.logging.log4j/log4j-jul {:mvn/version "2.18.0"} ; java.util.logging (JUL) -> Log4j2 adapter
org.apache.logging.log4j/log4j-slf4j-impl {:mvn/version "2.18.0"} ; allows the slf4j API to work with log4j 2
org.apache.poi/poi {:mvn/version "5.2.3"} ; Work with Office documents (e.g. Excel spreadsheets) -- newer version than one specified by Docjure
org.apache.poi/poi-ooxml {:mvn/version "5.2.3"
:exclusions [org.bouncycastle/bcpkix-jdk15on
org.bouncycastle/bcprov-jdk15on]}
org.apache.sshd/sshd-core {:mvn/version "2.9.2"} ; ssh tunneling and test server
org.apache.xmlgraphics/batik-all {:mvn/version "1.16"} ; SVG -> image
org.clojars.pntblnk/clj-ldap {:mvn/version "0.0.17"} ; LDAP client
org.bouncycastle/bcpkix-jdk15on {:mvn/version "1.70"} ; Bouncy Castle crypto library -- explicit version of BC specified to resolve illegal reflective access errors
org.bouncycastle/bcprov-jdk15on {:mvn/version "1.70"}
org.clojure/clojure {:mvn/version "1.11.1"}
org.clojure/core.async {:mvn/version "1.5.648"
org.clojure/core.logic {:mvn/version "1.0.1"} ; optimized pattern matching library for Clojure
org.clojure/core.match {:mvn/version "1.0.0"}
org.clojure/core.memoize {:mvn/version "1.0.257"} ; useful FIFO, LRU, etc. caching mechanisms
org.clojure/data.csv {:mvn/version "1.0.1"} ; CSV parsing / generation
org.clojure/data.xml {:mvn/version "0.0.8"} ; XML parsing / generation
org.clojure/java.classpath {:mvn/version "1.0.0"} ; examine the Java classpath from Clojure programs
org.clojure/java.jdbc {:mvn/version "0.7.12"} ; basic JDBC access from Clojure
org.clojure/java.jmx {:mvn/version "1.0.0"} ; JMX bean library, for exporting diagnostic info
org.clojure/math.combinatorics {:mvn/version "0.1.6"} ; combinatorics functions
org.clojure/math.numeric-tower {:mvn/version "0.0.5"} ; math functions like `ceil`
org.clojure/tools.logging {:mvn/version "1.2.4"} ; logging framework
org.clojure/tools.macro {:mvn/version "0.1.5"} ; local macros
org.clojure/tools.namespace {:mvn/version "1.3.0"}
org.clojure/tools.reader {:mvn/version "1.3.6"}
org.clojure/tools.trace {:mvn/version "0.7.11"} ; function tracing
org.eclipse.jetty/jetty-server {:mvn/version "9.4.48.v20220622"} ; web server
org.flatland/ordered {:mvn/version "1.15.10"} ; ordered maps & sets
org.graalvm.js/js {:mvn/version "22.1.0"} ; JavaScript engine
org.liquibase/liquibase-core {:mvn/version "4.10.0" ; migration management (Java lib)
org.mariadb.jdbc/mariadb-java-client {:mvn/version "2.7.6"} ; MySQL/MariaDB driver
org.mindrot/jbcrypt {:mvn/version "0.4"} ; Crypto library
org.postgresql/postgresql {:mvn/version "42.5.0"} ; Postgres driver
Cam Saul
committed
org.quartz-scheduler/quartz {:mvn/version "2.3.2"} ; Quartz job scheduler, provided by quartzite but this is a newer version.
org.slf4j/slf4j-api {:mvn/version "1.7.36"} ; abstraction for logging frameworks -- allows end user to plug in desired logging framework at deployment time
org.tcrawley/dynapath {:mvn/version "1.1.0"} ; Dynamically add Jars (e.g. Oracle or Vertica) to classpath
org.threeten/threeten-extra {:mvn/version "1.7.0"} ; extra Java 8 java.time classes like DayOfMonth and Quarter
org.yaml/snakeyaml {:mvn/version "1.33"} ; YAML parser
potemkin/potemkin {:mvn/version "0.4.5" ; utility macros & fns
:exclusions [riddley/riddley]}
pretty/pretty {:mvn/version "1.0.5"} ; protocol for defining how custom types should be pretty printed
prismatic/schema {:mvn/version "1.2.1"} ; Data schema declaration and validation library
redux/redux {:mvn/version "0.1.4"} ; Utility functions for building and composing transducers
riddley/riddley {:mvn/version "0.2.0"} ; code walking lib -- used interally by Potemkin, manifold, etc.
ring/ring-core {:mvn/version "1.9.5"} ; web server (Jetty wrapper)
ring/ring-jetty-adapter {:mvn/version "1.9.5"} ; Ring adapter using Jetty webserver
ring/ring-json {:mvn/version "0.5.1"} ; Ring middleware for reading/writing JSON automatically
robdaemon/clojure.java-time {:mvn/version "0.3.3-SNAPSHOT"} ; Java 8 java.time wrapper. Use this fork until https://github.com/dm3/clojure.java-time/issues/77 is fixed upstream
slingshot/slingshot {:mvn/version "0.12.2"} ; enhanced throw/catch, used by other deps
stencil/stencil {:mvn/version "0.5.0"} ; Mustache templates for Clojure
toucan/toucan {:mvn/version "1.18.0" ; Model layer, hydration, and DB utilities
:exclusions [honeysql/honeysql
org.clojure/java.jdbc
org.clojure/tools.logging
org.clojure/tools.namespace]}
user-agent/user-agent {:mvn/version "0.1.0"} ; User-Agent string parser, for Login History page & elsewhere
Noah Moss
committed
weavejester/dependency {:mvn/version "0.2.1"}} ; Dependency graphs and topological sorting
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !! PLEASE KEEP NEW DEPENDENCIES ABOVE ALPHABETICALLY ORGANIZED AND ADD COMMENTS EXPLAINING THEM. !!
;; !! *PLEASE DO NOT* ADD NEW ONES TO THE BOTTOM OF THE LIST. !!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:paths
["src" "shared/src" "resources"]
;; These are needed for the Athena and Redshift drivers if you are developing against them locally. If those drivers'
;; dependencies are not included (i.e., if we don't have the `:drivers` profile), these repos are effectively
;; ignored.
;;
;; 1. Maven repos from subprojects do not get copied over -- see
;; https://ask.clojure.org/index.php/10726/deps-manifest-dependencies-respect-repos-dependent-project
;;
;; 2. You cannot include `:mvn/repos` inside of an alias -- see
;; https://ask.clojure.org/index.php/12367/support-mvn-repos-inside-an-alias -- if we could, this could go in the
;; `:drivers` alias instead.
:mvn/repos
{"athena" {:url "https://s3.amazonaws.com/maven-athena"}
"redshift" {:url "https://s3.amazonaws.com/redshift-maven-repository/release"}}
:aliases
{
;;; Local Dev & test profiles
;; for local development: start a REPL with
;;
;; clojure -A:dev (basic dev REPL that includes test namespaces)
;; clojure -A:dev:drivers:drivers-dev (dev REPL w/ drivers + tests)
;; clojure -A:dev:ee:ee-dev (dev REPL w/ EE code including tests)
;;
;; You can start a web server from this REPL with
;;
;; (require 'dev)
;; (dev/start!)
:dev
{:extra-deps
{clj-http-fake/clj-http-fake {:mvn/version "1.0.3"
:exclusions [slingshot/slingshot]}
clj-kondo/clj-kondo {:mvn/version "2022.08.03"} ; this is not for RUNNING kondo, but so we can hack on custom hooks code from the REPL.
cloverage/cloverage {:mvn/version "1.2.2"}
com.gfredericks/test.chuck {:mvn/version "0.2.13"} ; generating strings from regexes (useful with malli)
djblue/portal {:mvn/version "0.30.0"} ; ui for inspecting values
eftest/eftest {:mvn/version "0.5.9"}
io.github.camsaul/humane-are {:mvn/version "1.0.2"}
jonase/eastwood {:mvn/version "1.2.2"} ; inspects namespaces and reports possible problems using tools.analyzer
lambdaisland/deep-diff2 {:mvn/version "2.3.127"} ; way better diffs
methodical/methodical {:mvn/version "0.15.0.1"} ; drop-in replacements for Clojure multimethods and adds several advanced features
org.clojure/algo.generic {:mvn/version "0.1.3"}
pjstadig/humane-test-output {:mvn/version "0.11.0"}
reifyhealth/specmonstah {:mvn/version "2.0.0"
:exclusions [org.clojure/clojure
org.clojure/clojurescript]} ; lets you write test fixtures that are clear, concise, and easy to maintain (clojure.spec)
ring/ring-mock {:mvn/version "0.4.0"} ; creating Ring request maps for testing purposes
talltale/talltale {:mvn/version "0.5.8"}} ; generates fake data, useful for prototyping or load testing
:extra-paths ["dev/src" "local/src" "test" "shared/test" "test_resources"]
:jvm-opts ["-Dmb.run.mode=dev"
"-Dmb.field.filter.operators.enabled=true"
"-Dmb.test.env.setting=ABCDEFG"
"-Duser.timezone=UTC"
"-Dfile.encoding=UTF-8"
;; set the logging properties set in metabase.bootstrap. calling (dev) will load it but putting here to be sure
"-Dlog4j2.contextSelector=org.apache.logging.log4j.core.selector.BasicContextSelector"
"-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory"
;; If Clojure fails to start (e.g. because of a compilation error somewhere) print the error
;; report/stacktrace to stderr rather than to a random EDN file in /tmp/
"-Dclojure.main.report=stderr"
;; Exceptions that get thrown repeatedly are created without stacktraces as a performance
;; optimization in newer Java versions. This makes debugging pretty hard when working on stuff
;; locally -- prefer debuggability over performance for local dev work.
"-XX:-OmitStackTraceInFastThrow"
;; prevent Java icon from randomly popping up in macOS dock
"-Djava.awt.headless=true"]}
;; includes test code as source paths. Run tests with clojure -X:dev:test
:test
{:extra-paths ["test_config"]
:exec-fn metabase.test-runner/run-tests
:jvm-opts ["-Dmb.run.mode=test"
"-Dmb.db.in.memory=true"
"-Dmb.jetty.join=false"
"-Dmb.field.filter.operators.enabled=true"
"-Dmb.api.key=test-api-key"
;; Different port from normal `:dev` so you can run tests on a different server.
;; TODO -- figure out how to do a random port like in the old project.clj?
"-Dmb.jetty.port=3001"]}
;; run the dev server with
;; clojure -M:run
;; clojure -M:run:drivers (include all drivers)
;; clojure -M:run:ee (include EE code)
:run
{:main-opts ["-m" "metabase.bootstrap"]
:jvm-opts ["-Dmb.run.mode=dev"
"-Djava.awt.headless=true" ; prevent Java icon from randomly popping up in macOS dock
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
"-Dmb.jetty.port=3000"]}
;; alias for CI-specific options.
:ci
{:jvm-opts ["-Xmx2g"
;; normally CircleCI sets `CI` as an env var, so this is mostly to replicate that locally.
"-Dci=TRUE"]}
;; include EE source code.
:ee
{:extra-paths ["enterprise/backend/src"]}
;; Include EE tests.
;; for ee dev: :dev:ee:ee-dev
;; for ee tests: clojure -X:dev:ee:ee-dev:test
:ee-dev
{:extra-paths ["enterprise/backend/test"]}
;; these aliases exist for symmetry with the ee aliases. Empty for now.
:oss
{}
:oss-dev
{}
;; for local dev -- include the drivers locally with :dev:drivers
:drivers
{:extra-deps
{metabase/driver-modules {:local/root "modules/drivers"}}}
;; for local dev: include drivers as well as their tests.
;;
;; clojure -X:dev:drivers:drivers-dev:test
;;
;; or
;;
;; clojure -X:dev:ee:ee-dev:drivers:drivers-dev:test (for EE)
:drivers-dev
{:extra-paths
"modules/drivers/druid/test"
"modules/drivers/googleanalytics/test"
"modules/drivers/mongo/test"
"modules/drivers/oracle/test"
"modules/drivers/presto/test"
"modules/drivers/presto-common/test"
"modules/drivers/presto-jdbc/test"
"modules/drivers/redshift/test"
"modules/drivers/snowflake/test"
"modules/drivers/sparksql/test"
"modules/drivers/sqlite/test"
"modules/drivers/sqlserver/test"
"modules/drivers/vertica/test"]}
;;; Linters
;; clojure -M:ee:drivers:check
;;
;; checks that all the namespaces we actually ship can be compiled, without any dependencies that we don't
;; ship (such as `:dev` dependencies). See #27009 for more context.
:check
{:extra-deps {athos/clj-check {:git/url "https://github.com/athos/clj-check.git"
:sha "518d5a1cbfcd7c952f548e6dbfcb9a4a5faf9062"}}
:main-opts ["-m" "clj-check.check"
"src"
"shared/src"
"enterprise/backend/src"
"modules/drivers/athena/src"
"modules/drivers/bigquery-cloud-sdk/src"
"modules/drivers/druid/src"
"modules/drivers/googleanalytics/src"
"modules/drivers/mongo/src"
"modules/drivers/oracle/src"
"modules/drivers/presto/src"
"modules/drivers/presto-common/src"
"modules/drivers/presto-jdbc/src"
"modules/drivers/redshift/src"
"modules/drivers/snowflake/src"
"modules/drivers/sparksql/src"
"modules/drivers/sqlite/src"
"modules/drivers/sqlserver/src"
"modules/drivers/vertica/src"]
:jvm-opts ["-Dclojure.main.report=stderr"]}
Cam Saul
committed
;; clojure -X:dev:ee:ee-dev:drivers:drivers-dev:test:eastwood
:eastwood
{:exec-fn metabase.linters.eastwood/eastwood
:exec-args {;; manually specify the source paths for the time being (exclude test paths) until we fix Eastwood
;; errors in the test paths (once PR #17193 is merged)
:source-paths ["src"
"shared/src"
"enterprise/backend/src"
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
"modules/drivers/druid/src"
"modules/drivers/googleanalytics/src"
"modules/drivers/mongo/src"
"modules/drivers/oracle/src"
"modules/drivers/presto/src"
"modules/drivers/presto-common/src"
"modules/drivers/presto-jdbc/src"
"modules/drivers/redshift/src"
"modules/drivers/snowflake/src"
"modules/drivers/sparksql/src"
"modules/drivers/sqlite/src"
"modules/drivers/sqlserver/src"
"modules/drivers/vertica/src"]
:add-linters [:unused-private-vars
;; These linters are pretty useful but give a few false
;; positives and can't be selectively disabled (yet)
;;
;; For example see https://github.com/jonase/eastwood/issues/193
;;
;; It's still useful to re-enable them and run them every once
;; in a while because they catch a lot of actual errors too.
;; Keep an eye on the issue above and re-enable them if we can
;; get them to work
#_:unused-fn-args
#_:unused-locals]
:exclude-linters [ ;; Turn this off temporarily until we finish removing
;; self-deprecated functions & macros
:deprecations
;; this has a fit in libs that use Potemkin `import-vars` such
;; as `java-time`
:implicit-dependencies
;; too many false positives for now
:unused-ret-vals]}}
;; clojure -T:whitespace-linter
:whitespace-linter
{:deps {com.github.camsaul/whitespace-linter {:sha "912644a2b9cc91edcce31a6fa997c46479341a1d"}}
:exec-fn whitespace-linter/lint
:exec-args {:paths ["./.dir-locals.el"
"./deps.edn"
"./package.json"
"./shadow-cljs.edn"
".circleci"
".github"
"bin"
"enterprise"
"frontend"
"resources"
"shared"
"src"
"test"]
:include-patterns ["\\.clj.?$"
"\\.edn$"
"\\.el$"
"\\.html$"
"\\.json$"
"\\.jsx?$"
"\\.sh$"
"\\.yaml$"
"\\.yml$"]
:exclude-patterns ["resources/i18n/.*\\.edn$"
"resources/frontend_client"
"resources/frontend_shared"
"resources/html-entities.edn"
"frontend/src/cljs"
"frontend/test/metabase/lib/urls\\.unit\\.spec\\.js$"
"frontend/test/metabase/lib/formatting\\.unit\\.spec\\.js$"
"shared/src/metabase/shared/util/currency\\.cljc$"
"#.+#$"
"\\.transit\\.json$"]}}
;; clojure -X:dev:ee:ee-dev:test:cloverage
:cloverage
{:exec-fn metabase.cloverage-runner/run-project
:exec-args {:fail-threshold 69
:codecov? true
;; don't instrument logging forms, since they won't get executed as part of tests anyway
;; log calls expand to these
:exclude-call
[clojure.tools.logging/logf
clojure.tools.logging/logp]
["src" "enterprise/backend/src" "shared/src"]
:test-ns-path
["test" "enterprise/backend/test" "shared/test"]
:ns-regex
["^metabase.*" "^metabase-enterprise.*"]
;; don't instrument Postgres/MySQL driver namespaces, because we don't current run tests for them
;; as part of recording test coverage, which means they can give us false positives.
;;
;; regex literals aren't allowed in EDN. We parse them in `./test/cloverage.clj`
:ns-exclude-regex
["metabase\\.driver\\.mysql" "metabase\\.driver\\.postgres"]}
;; different port from `:test` so you can run it at the same time as `:test`.
:jvm-opts ["-Dmb.jetty.port=3002"]}
;;; building Uberjar
;; clojure -T:build uberjar
;; clojure -T:build uberjar :edition :ee
:build
{:deps {io.github.clojure/tools.build {:git/tag "v0.7.5" :git/sha "2526f58"}
com.github.seancorfield/depstar {:mvn/version "2.1.303"}
metabase/build.common {:local/root "bin/common"}
metabase/buid-mb {:local/root "bin/build-mb"}}
:ns-default build}
;;; Other misc convenience aliases
;; Profile Metabase start time with clojure -M:profile
:profile
{:main-opts ["-m" "metabase.core" "profile"]
:jvm-opts ["-XX:+CITime" ; print time spent in JIT compiler
"-XX:+PrintGC"]}
;; get the H2 shell with clojure -X:h2
{:extra-paths ["dev/src"]
:exec-fn dev.h2-shell/shell
:java-opts ["-Dfile.encoding=UTF-8"]}
;; clojure -M:generate-automagic-dashboards-pot
:generate-automagic-dashboards-pot
{:main-opts ["-m" "metabase.automagic-dashboards.rules"]}
;; Start a Network REPL (nrepl) that you can connect your editor to.
;;
;; clojure -M:dev:nrepl (etc.)
:nrepl
{:extra-deps {nrepl/nrepl {:mvn/version "0.9.0"}}
;; Liquibase CLI:
;;
;; clojure -M:liquibase <command>
;;
;; e.g.
;;
;; clojure -M:liquibase dbDoc target/liquibase
:liquibase
{:extra-deps {ch.qos.logback/logback-classic {:mvn/version "1.2.10"}}
:extra-paths ["dev/src"]
:main-opts ["-m" "dev.liquibase"]}}}
;; TODO -- consider creating an alias that includes the `./bin` build-drivers & release code as well so we can work
;; on them all from a single REPL process.