@@ -608,25 +608,30 @@ removed, LEIN-PLUGINS, LEIN-MIDDLEWARES and finally PARAMS."
608
608
" -- "
609
609
params))
610
610
611
+ (defun cider--dedupe-deps (deps )
612
+ (cl-delete-duplicates deps :test 'equal ))
613
+
611
614
(defun cider-clojure-cli-jack-in-dependencies (global-options _params dependencies )
612
615
" Create Clojure tools.deps jack-in dependencies.
613
616
Does so by concatenating DEPENDENCIES and GLOBAL-OPTIONS into a suitable
614
617
`clojure` invocation. The main is placed in an inline alias :cider/nrepl
615
618
so that if your aliases contain any mains, the cider/nrepl one will be the
616
619
one used."
617
- (let* ((deps-string (string-join
618
- (seq-map (lambda (dep )
619
- (format " %s {:mvn/version \" %s \" }" (car dep) (cadr dep)))
620
- (append (cider--jack-in-required-dependencies) dependencies))
621
- " " ))
620
+ (let* ((all-deps (thread-last dependencies
621
+ (append (cider--jack-in-required-dependencies))
622
+ ; ; Duplicates are never OK since they would result in
623
+ ; ; `java.lang.IllegalArgumentException: Duplicate key [...]`:
624
+ (cider--dedupe-deps)
625
+ (seq-map (lambda (dep )
626
+ (format " %s {:mvn/version \" %s \" }" (car dep) (cadr dep))))))
622
627
(middleware (mapconcat
623
628
(apply-partially #'format " %s" )
624
629
(cider-jack-in-normalized-nrepl-middlewares)
625
630
" ," ))
626
631
(main-opts (format " \" -m\" \" nrepl.cmdline\" \" --middleware\" \" [%s ]\" " middleware)))
627
632
(format " %s -Sdeps '{:deps {%s } :aliases {:cider/nrepl {:main-opts [%s ]}}}' -M%s :cider/nrepl"
628
633
(if global-options (format " %s " global-options) " " )
629
- deps- string
634
+ ( string-join all-deps " " )
630
635
main-opts
631
636
(if cider-clojure-cli-aliases
632
637
; ; remove exec-opts flags -A -M -T or -X from cider-clojure-cli-aliases
0 commit comments