Coder Social home page Coder Social logo

antq's Introduction

antq's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

antq's Issues

When installed as a "tool", could the SLF4J annoyance be taken care of automatically?

https://github.com/liquidz/antq/blob/main/doc/avoid-slf4j-warnings.adoc

Clojure describes tools as:

The Clojure CLI supports the idea of running tools, which are programs that don’t use the project classpath, with the -T exec option. Tools are often (but not exclusively) external, defined with their own dependencies.

So could the antq "tool" be changed to automatically have the org.slf4j/slf4j-nop dependency, without affecting the user's projects?

Consider supporting blacklisting a specific dependency version

Still loving antq, thanks @liquidz!

Scenario: I am using antq to check for outdated dependencies. I reports that there is a new version v of dependency d. I discover though that there is a serious enough bug in dependency d version v that'd I do not want to upgrade.

Ideally I'd like to tell antq to no longer tell me about dependency d version v being available. I'm just not interested.
I am, though, interested in learning about the next version v of dependency d when it becomes available.

Not sure what form this exclusion config would take, thought I'd first check if the idea might be of interest.

Link to changelogs when available

Hi again,

I liked this feature:

Available diffs:
- https://github.com/clojure/clojure/compare/clojure-1.10.1...1.10.3

Additionally, one could try printing https://github.com/clojure/clojure/blob/clojure-1.10.3/changes.md if that file exists (as of that tag). A few filenames could be atttempted to be fetched:

  • changes.md
  • CHANGELOG.md
  • CHANGELOG.adoc

and so on. I checked that one can query those files via HEAD so as not to spam much github's servers.

WDYT? I could give it a shot.

failed to fetch on `local/root` project coordinate

Hi,

I pull in several other custom libraries by specifying the :local/root directive in my deps.edn.

For example, in my deps.edn:

:base {:extra-deps {local-base/local-base {:local/root "/home/david/.clojure/libs/local.base" :deps/manifest :deps}}}
:rebel {:extra-deps {local-nrepl/local-nrepl {:local/root "/home/david/.clojure/libs/local.nrepl" :deps/manifest :deps}
                     local-rebel/local-rebel {:local/root "/home/david/.clojure/libs/local.rebel" :deps/manifest :deps}}
        :main-opts ["-m" "local.rebel.main"]}

When antq is run against the deps.edn, the following is shown:


|    :file |                   :name | :version | :latest-version |
|----------+-------------------------+----------+-----------------|
| deps.edn |   local-base/local-base |          | Failed to fetch |
|          | local-nrepl/local-nrepl |          | Failed to fetch |
|          | local-rebel/local-rebel |          | Failed to fetch |

Perhaps :local/root should be ignored as part of the resolution process?

Thank you!

-=david=-

Exception thrown with bb.edn

Hi,
Thanks for the handy library and github action! I encountered an exception with a bb.edn like the following:

{:tasks
 {:init (let [foo :foo] (assoc-in {} [:deps foo :bar] "baz"))}}

Running a clojure alias as described in the readme results in

$ clojure -M:outdated
Execution error (IllegalArgumentException) at antq.dep.clojure/extract-deps$fn (clojure.clj:41).
Don't know how to create ISeq from: clojure.lang.Symbol

If I rename :deps to :depz the error goes away.
A secondary issue I encountered was that adding --skip babashka didn't allow me to turn off bb. I ended up reverting to 0.12.4 so I could run antq.
Cheers

Execution error (XMLStreamException), msg: "Content is not allowed in prolog."

Problem

 % clj -M:antq -m antq.core --upgrade
Execution error (XMLStreamException) at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl/next (XMLStreamReaderImpl.java:652).
ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.

Full report at:
/var/folders/8y/6405xhpj3_76hgdlx9l0nymc0000gn/T/clojure-12443848096927637806.edn

Full report

{:clojure.main/message
 "Execution error (XMLStreamException) at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl/next (XMLStreamReaderImpl.java:652).\nParseError at [row,col]:[1,1]\nMessage: Content is not allowed in prolog.\n",
 :clojure.main/triage
 {:clojure.error/class javax.xml.stream.XMLStreamException,
  :clojure.error/line 652,
  :clojure.error/cause
  "ParseError at [row,col]:[1,1]\nMessage: Content is not allowed in prolog.",
  :clojure.error/symbol
  com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl/next,
  :clojure.error/source "XMLStreamReaderImpl.java",
  :clojure.error/phase :execution},
 :clojure.main/trace
 {:via
  [{:type javax.xml.stream.XMLStreamException,
    :message
    "ParseError at [row,col]:[1,1]\nMessage: Content is not allowed in prolog.",
    :at
    [com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl
     next
     "XMLStreamReaderImpl.java"
     652]}],
  :trace
  [[com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl
    next
    "XMLStreamReaderImpl.java"
    652]
   [clojure.data.xml.jvm.parse$pull_seq$fn__1834 invoke "parse.clj" 78]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.RT seq "RT.java" 535]
   [clojure.core$seq__5420 invokeStatic "core.clj" 139]
   [clojure.core$seq__5420 invoke "core.clj" 139]
   [clojure.data.xml.tree$seq_tree$fn__1667 invoke "tree.clj" 39]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.LazySeq first "LazySeq.java" 73]
   [clojure.lang.RT first "RT.java" 692]
   [clojure.core$first__5402 invokeStatic "core.clj" 55]
   [clojure.core$ffirst__5412 invokeStatic "core.clj" 105]
   [clojure.core$ffirst__5412 invoke "core.clj" 105]
   [clojure.data.xml.tree$event_tree invokeStatic "tree.clj" 70]
   [clojure.data.xml.tree$event_tree invoke "tree.clj" 66]
   [clojure.data.xml$parse invokeStatic "xml.clj" 109]
   [clojure.data.xml$parse doInvoke "xml.clj" 84]
   [clojure.lang.RestFn invoke "RestFn.java" 410]
   [clojure.lang.AFn applyToHelper "AFn.java" 154]
   [clojure.lang.RestFn applyTo "RestFn.java" 132]
   [clojure.core$apply invokeStatic "core.clj" 669]
   [clojure.core$apply invoke "core.clj" 662]
   [clojure.data.xml$parse_str invokeStatic "xml.clj" 133]
   [clojure.data.xml$parse_str doInvoke "xml.clj" 111]
   [clojure.lang.RestFn invoke "RestFn.java" 410]
   [antq.dep.pom$extract_deps invokeStatic "pom.clj" 21]
   [antq.dep.pom$extract_deps invoke "pom.clj" 19]
   [antq.dep.pom$load_deps invokeStatic "pom.clj" 41]
   [antq.dep.pom$load_deps invoke "pom.clj" 36]
   [antq.core$fetch_deps$fn__7832 invoke "core.clj" 198]
   [clojure.core$map$fn__5885 invoke "core.clj" 2759]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.RT seq "RT.java" 535]
   [clojure.core$seq__5420 invokeStatic "core.clj" 139]
   [clojure.core$apply invokeStatic "core.clj" 662]
   [clojure.core$mapcat invokeStatic "core.clj" 2787]
   [clojure.core$mapcat doInvoke "core.clj" 2787]
   [clojure.lang.RestFn invoke "RestFn.java" 423]
   [antq.core$fetch_deps invokeStatic "core.clj" 194]
   [antq.core$fetch_deps invoke "core.clj" 191]
   [antq.core$_main invokeStatic "core.clj" 242]
   [antq.core$_main doInvoke "core.clj" 235]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.core$apply invokeStatic "core.clj" 667]
   [clojure.main$main_opt invokeStatic "main.clj" 514]
   [clojure.main$main_opt invoke "main.clj" 510]
   [clojure.main$main invokeStatic "main.clj" 664]
   [clojure.main$main doInvoke "main.clj" 616]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.main main "main.java" 40]],
  :cause
  "ParseError at [row,col]:[1,1]\nMessage: Content is not allowed in prolog."}}

Comment

I don't know why it started happening. I've been using antq for months. Today I got this.
Today I updated some deps and I switched to Clojure 1.10.3.933 from clojure/tools tap, but I removed it and get the old version and the result is the same.

Tested on Clojure 1.10.3.833, 1.10.3.849, 1.10.3.933.
Tested on Oracle JDK 1.8, OpenJDK 1.8, OpenJDK 11. Everywhere the same.
Tested Antq 0.16.0 & 0.15.0. Same problem.

Consider versioning pinning support?

My scenario:

The minimum version of Clojure for rewrite-clj is 1.9.0.
This is therefore what ends up in my pom.xml.
My deps.edn, though, references other versions of Clojure to support testing.

I like that antq tells me when there is a newer version of Clojure when it analyzes my deps.edn.
But when it analyzes my pom.xml, I don't need to know that there is a newer version of Clojure.

I started off by ignoring this report, but then decided to add some custom version pinning support via my babashka script.

That's one approach, but I guess I'd probably also be happy if I knew that deps in my deps.edn are not outdated (we already have this) and that deps in my pom.xml are in synch with my deps.edn. But maybe such a check is out of the realm of antq.

I'm quite OK with my little babashka script hack but I think that this this scenario might be common and that's why I've raised it for your consideration. I expect that most folks would end up just excluding their pom.xml from antq analysis.

So to recap ideas for this scenario:

  1. No antq change: Antq analyzes pom.xml, user ignores report about outdated Clojure.
  2. No antq change: User excludes pom.xml from antq analysis, but might miss that their pom.xml deps are out of synch with their deps.edn.
  3. Antq adds version pinning support. For this scenario, it would have to be scoped to pom.xml.
  4. Antq adds synch check support. Is my pom.xml out of date against my deps.edn?
  5. No antq change: Lee carries on happily with his custom pinning support in his babashka script.
  6. Some other idea

Upgrade does not honour `replace-deps` when upgrading dependencies.

If an alias uses this

           :uberjar {:replace-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
                     :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
                     :exec-fn hf.depstar/uberjar
                     :exec-args {:jar foo.jar
                                 :group-id foo
                                 :artifact-id bar
                                 :version "0.0.1"
                                 :main-class foo.bar.main
                                 :aot true
                                 :sync-pom true}}}

And antq is run like this:

❯ clj -M:antq

|    :file |                :name | :version | :latest-version |
|----------+----------------------+----------+-----------------|
| deps.edn |       metosin/reitit |   0.5.10 |          0.5.11 |
|          | seancorfield/depstar |  2.0.161 |         2.0.165 |
Upgraded seancorfield/depstar '2.0.161' to '2.0.165' in deps.edn.
Upgraded metosin/reitit '0.5.10' to '0.5.11' in deps.edn.

Notice that the depstar has apparently been upgraded to 2.0.165, yet upon cat'ing the deps.edn file the version is still 2.0.161.

Changing replace-deps to extra-deps causes the deps.edn file have the dependency version successfully changed to 2.0.165, therefore it appears that the upgrade doesn't know how to handle the replace-deps key.

Exception Thrown on onyx-kafka

Hi

When running lein outdated on onyx-kafka I get the following exception thrown:

Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: qualified-symbol? in this context, compiling:(antq/dep/boot.clj:36:40)

Please advise.

Thanks

Stack Trace:

Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: qualified-symbol? in this context, compiling:(antq/dep/boot.clj:36:40)
        at clojure.lang.Compiler.analyze(Compiler.java:6688)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3766)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6870)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2792)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3072)
        at clojure.lang.Compiler.analyze(Compiler.java:6677)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3834)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6870)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3834)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6870)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2797)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5380)
        at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3972)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6866)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3766)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6870)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6231)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2792)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2797)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2797)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5380)
        at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3972)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6866)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$NewExpr$Parser.parse(Compiler.java:2634)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5380)
        at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3972)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6866)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.access$300(Compiler.java:38)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6269)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6319)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6001)
        at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5380)
        at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3972)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6866)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6856)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.access$300(Compiler.java:38)
        at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:589)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6868)
        at clojure.lang.Compiler.analyze(Compiler.java:6669)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler.eval(Compiler.java:6931)
        at clojure.lang.Compiler.load(Compiler.java:7379)
        at clojure.lang.RT.loadResourceScript(RT.java:372)
        at clojure.lang.RT.loadResourceScript(RT.java:363)
        at clojure.lang.RT.load(RT.java:453)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.core$load$fn__5677.invoke(core.clj:5893)
        at clojure.core$load.invokeStatic(core.clj:5892)
        at clojure.core$load.doInvoke(core.clj:5876)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invokeStatic(core.clj:5697)
        at clojure.core$load_one.invoke(core.clj:5692)
        at clojure.core$load_lib$fn__5626.invoke(core.clj:5737)
        at clojure.core$load_lib.invokeStatic(core.clj:5736)
        at clojure.core$load_lib.doInvoke(core.clj:5717)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invokeStatic(core.clj:648)
        at clojure.core$load_libs.invokeStatic(core.clj:5774)
        at clojure.core$load_libs.doInvoke(core.clj:5758)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:648)
        at clojure.core$require.invokeStatic(core.clj:5796)
        at clojure.core$require.doInvoke(core.clj:5796)
        at clojure.lang.RestFn.invoke(RestFn.java:2793)
        at antq.core$eval26$loading__5569__auto____27.invoke(core.clj:1)
        at antq.core$eval26.invokeStatic(core.clj:1)
        at antq.core$eval26.invoke(core.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6927)
        at clojure.lang.Compiler.eval(Compiler.java:6916)
        at clojure.lang.Compiler.load(Compiler.java:7379)
        at clojure.lang.RT.loadResourceScript(RT.java:372)
        at clojure.lang.RT.loadResourceScript(RT.java:363)
        at clojure.lang.RT.load(RT.java:453)
        at clojure.lang.RT.load(RT.java:419)
        at clojure.core$load$fn__5677.invoke(core.clj:5893)
        at clojure.core$load.invokeStatic(core.clj:5892)
        at clojure.core$load.doInvoke(core.clj:5876)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invokeStatic(core.clj:5697)
        at clojure.core$load_one.invoke(core.clj:5692)
        at clojure.core$load_lib$fn__5626.invoke(core.clj:5737)
        at clojure.core$load_lib.invokeStatic(core.clj:5736)
        at clojure.core$load_lib.doInvoke(core.clj:5717)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invokeStatic(core.clj:648)
        at clojure.core$load_libs.invokeStatic(core.clj:5774)
        at clojure.core$load_libs.doInvoke(core.clj:5758)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:648)
        at clojure.core$require.invokeStatic(core.clj:5796)
        at clojure.core$require.doInvoke(core.clj:5796)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at user$eval11$fn__13.invoke(form-init3079444706321437920.clj:1)
        at user$eval11.invokeStatic(form-init3079444706321437920.clj:1)
        at user$eval11.invoke(form-init3079444706321437920.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6927)
        at clojure.lang.Compiler.eval(Compiler.java:6917)
        at clojure.lang.Compiler.load(Compiler.java:7379)
        at clojure.lang.Compiler.loadFile(Compiler.java:7317)
        at clojure.main$load_script.invokeStatic(main.clj:275)
        at clojure.main$init_opt.invokeStatic(main.clj:277)
        at clojure.main$init_opt.invoke(main.clj:277)
        at clojure.main$initialize.invokeStatic(main.clj:308)
        at clojure.main$null_opt.invokeStatic(main.clj:342)
        at clojure.main$null_opt.invoke(main.clj:339)
        at clojure.main$main.invokeStatic(main.clj:421)
        at clojure.main$main.doInvoke(main.clj:384)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:383)
        at clojure.lang.AFn.applyToHelper(AFn.java:156)
        at clojure.lang.Var.applyTo(Var.java:700)
        at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable to resolve symbol: qualified-symbol? in this context
        at clojure.lang.Util.runtimeException(Util.java:221)
        at clojure.lang.Compiler.resolveIn(Compiler.java:7164)
        at clojure.lang.Compiler.resolve(Compiler.java:7108)
        at clojure.lang.Compiler.analyzeSymbol(Compiler.java:7069)
        at clojure.lang.Compiler.analyze(Compiler.java:6648)
        ... 230 more

Consider GitHub Actions variables

When I run antq on rewrite-clj, I get:

|                                   :file |                     :name |            :current |     :latest |
|-----------------------------------------+---------------------------+---------------------+-------------|
| .github/workflows/native-image-test.yml | graalvm/graalvm-ce-builds | ${{ matrix.graal }} | vm-21.0.0.2 |

My GitHub Actions workflow has:

    - name: Install GraalVM
      uses: DeLaGuardo/setup-graalvm@master
      with:
        graalvm-version: ${{ matrix.graal }}

I suppose antq could figure out possible variables for ${{ matrix.graal }}:

    strategy:
      matrix:
        os: [ windows-latest, ubuntu-latest, macos-latest ]
        graal: [ 21.0.0.2.java8, 21.0.0.2.java11 ]
        test: [ pure, sci ]
        exclude:
          - os: windows-latest
            graal: 21.0.0.2.java8

But perhaps easier to just ignore this case?

Aliases with :replace-deps do not report updates

Description :octocat:

Aliases that include a dependency via the :replace-deps key are not checked for newer versions. Tested with the 0.9.2 version of antq

The :replace-deps key is often used for defining tooling aliases that do not need to use the dependencies from the main project.

Reproduction guide 🪲

Add an alias to the user level configuration that adds the antq library via the :replace-deps key, using a version less than the current, e.g. 0.9.1

  :project/outdated
  {:replace-deps {antq/antq {:mvn/version "0.9.1"}}
   :main-opts  ["-m" "antq.core"]}

Run the clojure command with the alias

clojure -M:project/outdated

Observed behaviour: 👀 💔
antq reports no library updates available, even though 0.9.2 is available.

Expected behaviour: ❤️ 😄
Updating the alias to use :extra-deps and run the command again. This will report a new version of antq/antq is available

  :project/outdated
  {:extra-deps {antq/antq {:mvn/version "0.9.1"}}
   :main-opts  ["-m" "antq.core"]}
|    :file |                       :name | :version | :latest-version |
|----------+-----------------------------+----------+-----------------|
| deps.edn |                   antq/antq |    0.9.1 |           0.9.2 |

System Info 💻

  • Clojure CLI tools: "1.10.1.727"
  • Java: openjdk version "1.8.0_275"
  • OS: Ubuntu linux 20.10

slf4j-simple dependency caused to crash

I have a line in deps.edn org.slf4j/slf4j-simple {:mvn/version "1.7.30"} and got an exception.

"Execution error (ClassCastException) at unilog.config/start-logging! (config.clj:354).\nclass org.slf4j.impl.SimpleLogger cannot be cast to class ch.qos.logback.classic.Logger (org.slf4j.impl.SimpleLogger and ch.qos.logback.classic.Logger are in unnamed module of loader 'app')\n",

{:clojure.error/class java.lang.ClassCastException,
:clojure.error/line 354,
:clojure.error/cause
"class org.slf4j.impl.SimpleLogger cannot be cast to class ch.qos.logback.classic.Logger (org.slf4j.impl.SimpleLogger and ch.qos.logback.classic.Logger are in unnamed module of loader 'app')",
:clojure.error/symbol unilog.config/start-logging!,
:clojure.error/source "config.clj",
:clojure.error/phase :execution}

Doesn't appear to work correctly in the presence of -RC versions

I have some code that was depending on a release candidate of a published open source library, specifically org.suskalo/discljord {:mvn/version "1.2.0-RC1"}. As can be seen, this version string follows the standard Maven representation of a release candidate, by using a "-RC#" suffix.

Today the developer of this library announced that the GA version of v1.2.0 had been released, with the following coordinate: org.suskalo/discljord {:mvn/version "1.2.0"}. Again this is a bog-standard Maven version.

antq v0.9.3 did not detect that the newer version was available however - it simply stated "All dependencies are up-to-date.".

v2.4- Maven dependency is considered to be a newer version than v3-

I'm using v3-rev20180622-1.27.0, and antq is suggesting I upgrade to v2.4-rev20180622-1.30.8:

|    :file |                                         :name |              :current |                 :latest |
|----------+-----------------------------------------------+-----------------------+-------------------------|
| deps.edn | com.google.apis/google-api-services-analytics | v3-rev20180622-1.27.0 | v2.4-rev20180622-1.30.8 |

It's actually an older version of the API so "upgrading" to that would end up breaking my project. Shouldn't 3 be considered newer than 2.4?

Execution error (ClassCastException) at antq.ver.github-tag/nth-newer?: class java.lang.String cannot be cast to class java.lang.Number

This input is causing it to fail:

(antq.ver/latest?
 {:type :github-tag,
  :file ".github/workflows/percy-issue-comment.yml",
  :name "octokit/request-action",
  :version "v2.x",
  :latest-version "v2.1.0",
  :repositories nil,
  :project :github-action,
  :diff-url nil,
  :latest-name nil,
  :only-newest-version? nil})
1. Caused by java.lang.ClassCastException
   class java.lang.String cannot be cast to class java.lang.Number (java.lang.String and java.lang.Number are in
   module java.base of loader 'bootstrap')

              Numbers.java:  263  clojure.lang.Numbers/gte
            github_tag.clj:   78  antq.ver.github-tag/nth-newer?
            github_tag.clj:   70  antq.ver.github-tag/nth-newer?
            github_tag.clj:   89  antq.ver.github-tag/eval14774/fn
              MultiFn.java:  229  clojure.lang.MultiFn/invoke
                      REPL:   21  antq.ver.github-tag/eval14947
                      REPL:   21  antq.ver.github-tag/eval14947
             Compiler.java: 7181  clojure.lang.Compiler/eval
             Compiler.java: 7136  clojure.lang.Compiler/eval
                  core.clj: 3202  clojure.core/eval
                  core.clj: 3198  clojure.core/eval
    interruptible_eval.clj:   87  nrepl.middleware.interruptible-eval/evaluate/fn/fn
                  AFn.java:  152  clojure.lang.AFn/applyToHelper
                  AFn.java:  144  clojure.lang.AFn/applyTo
                  core.clj:  667  clojure.core/apply
                  core.clj: 1977  clojure.core/with-bindings*
                  core.clj: 1977  clojure.core/with-bindings*
               RestFn.java:  425  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   87  nrepl.middleware.interruptible-eval/evaluate/fn
                  main.clj:  437  clojure.main/repl/read-eval-print/fn
                  main.clj:  437  clojure.main/repl/read-eval-print
                  main.clj:  458  clojure.main/repl/fn
                  main.clj:  458  clojure.main/repl
                  main.clj:  368  clojure.main/repl
               RestFn.java:  137  clojure.lang.RestFn/applyTo
                  core.clj:  667  clojure.core/apply
                  core.clj:  662  clojure.core/apply
                regrow.clj:   20  refactor-nrepl.ns.slam.hound.regrow/wrap-clojure-repl/fn
               RestFn.java: 1523  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   84  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:   56  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:  152  nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
                  AFn.java:   22  clojure.lang.AFn/run
               session.clj:  202  nrepl.middleware.session/session-exec/main-loop/fn
               session.clj:  201  nrepl.middleware.session/session-exec/main-loop
                  AFn.java:   22  clojure.lang.AFn/run
               Thread.java:  831  java.lang.Thread/run

GitHub dependencies Action no longer functional after fix for issue #24

The fix for issue #24 has resulted in the GitHub dependencies Action no longer functioning. The specific error is:

2020-08-31T19:29:05.5020389Z ##[section]Starting: Request a runner to run this job

---------- 8< ----------

2020-08-31T19:29:35.8782521Z ##[group]Run java -jar /tmp/antq/antq.jar --error-format="::error file={{file}}::{{message}}"
2020-08-31T19:29:35.8782782Z �[36;1mjava -jar /tmp/antq/antq.jar --error-format="::error file={{file}}::{{message}}"�[0m
2020-08-31T19:29:35.8784800Z shell: sh -e {0}
2020-08-31T19:29:35.8784933Z ##[endgroup]
2020-08-31T19:29:37.5381586Z SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
2020-08-31T19:29:37.5382524Z SLF4J: Defaulting to no-operation (NOP) logger implementation
2020-08-31T19:29:37.5382823Z SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2020-08-31T19:29:38.9251873Z Exception in thread "main" java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.io.IOException: Cannot run program "git": error=2, No such file or directory
2020-08-31T19:29:38.9274667Z 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
2020-08-31T19:29:38.9278790Z 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
2020-08-31T19:29:38.9282490Z 	at clojure.core$deref_future.invokeStatic(core.clj:2300)
2020-08-31T19:29:38.9292377Z 	at clojure.core$future_call$reify__8454.deref(core.clj:6974)
2020-08-31T19:29:38.9297238Z 	at clojure.core$deref.invokeStatic(core.clj:2320)
2020-08-31T19:29:38.9302237Z 	at clojure.core$pmap$step__8467$fn__8471.invoke(core.clj:7025)
2020-08-31T19:29:38.9307154Z 	at clojure.lang.LazySeq.sval(LazySeq.java:42)
2020-08-31T19:29:38.9307620Z 	at clojure.lang.LazySeq.seq(LazySeq.java:51)
2020-08-31T19:29:38.9308055Z 	at clojure.lang.RT.seq(RT.java:535)
2020-08-31T19:29:38.9308308Z 	at clojure.core$seq__5402.invokeStatic(core.clj:137)
2020-08-31T19:29:38.9308559Z 	at clojure.core$map$fn__5866.invoke(core.clj:2746)
2020-08-31T19:29:38.9308822Z 	at clojure.lang.LazySeq.sval(LazySeq.java:42)
2020-08-31T19:29:38.9309060Z 	at clojure.lang.LazySeq.seq(LazySeq.java:51)
2020-08-31T19:29:38.9309296Z 	at clojure.lang.RT.seq(RT.java:535)
2020-08-31T19:29:38.9309550Z 	at clojure.core$seq__5402.invokeStatic(core.clj:137)
2020-08-31T19:29:38.9309795Z 	at clojure.core$filter$fn__5893.invoke(core.clj:2809)
2020-08-31T19:29:38.9310037Z 	at clojure.lang.LazySeq.sval(LazySeq.java:42)
2020-08-31T19:29:38.9310290Z 	at clojure.lang.LazySeq.seq(LazySeq.java:51)
2020-08-31T19:29:38.9310526Z 	at clojure.lang.Cons.next(Cons.java:39)
2020-08-31T19:29:38.9310858Z 	at clojure.lang.RT.length(RT.java:1784)
2020-08-31T19:29:38.9339888Z 	at clojure.lang.RT.seqToArray(RT.java:1725)
2020-08-31T19:29:38.9340411Z 	at clojure.lang.LazySeq.toArray(LazySeq.java:132)
2020-08-31T19:29:38.9356889Z 	at clojure.lang.RT.toArray(RT.java:1698)
2020-08-31T19:29:38.9357259Z 	at clojure.core$to_array.invokeStatic(core.clj:344)
2020-08-31T19:29:38.9357509Z 	at clojure.core$sort.invokeStatic(core.clj:3113)
2020-08-31T19:29:38.9357742Z 	at clojure.core$sort.invoke(core.clj:3102)
2020-08-31T19:29:38.9358003Z 	at antq.report.format$fn__1706.invokeStatic(format.clj:25)
2020-08-31T19:29:38.9358279Z 	at antq.report.format$fn__1706.invoke(format.clj:20)
2020-08-31T19:29:38.9358520Z 	at clojure.lang.MultiFn.invoke(MultiFn.java:234)
2020-08-31T19:29:38.9358775Z 	at antq.core$_main.invokeStatic(core.clj:112)
2020-08-31T19:29:38.9358999Z 	at antq.core$_main.doInvoke(core.clj:103)
2020-08-31T19:29:38.9359222Z 	at clojure.lang.RestFn.applyTo(RestFn.java:137)
2020-08-31T19:29:38.9360151Z 	at antq.core.main(Unknown Source)
2020-08-31T19:29:38.9360493Z Caused by: java.util.concurrent.ExecutionException: java.io.IOException: Cannot run program "git": error=2, No such file or directory
2020-08-31T19:29:38.9361065Z 	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
2020-08-31T19:29:38.9361319Z 	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
2020-08-31T19:29:38.9361559Z 	at clojure.core$deref_future.invokeStatic(core.clj:2300)
2020-08-31T19:29:38.9361800Z 	at clojure.core$future_call$reify__8454.deref(core.clj:6974)
2020-08-31T19:29:38.9362033Z 	at clojure.core$deref.invokeStatic(core.clj:2320)
2020-08-31T19:29:38.9362397Z 	at clojure.core$pmap$step__8467$fn__8471.invoke(core.clj:7025)
2020-08-31T19:29:38.9362647Z 	at clojure.lang.LazySeq.sval(LazySeq.java:42)
2020-08-31T19:29:38.9362861Z 	at clojure.lang.LazySeq.seq(LazySeq.java:51)
2020-08-31T19:29:38.9363088Z 	at clojure.lang.Cons.next(Cons.java:39)
2020-08-31T19:29:38.9363311Z 	at clojure.lang.RT.next(RT.java:713)
2020-08-31T19:29:38.9363538Z 	at clojure.core$next__5386.invokeStatic(core.clj:64)
2020-08-31T19:29:38.9363770Z 	at clojure.core$some.invokeStatic(core.clj:2701)
2020-08-31T19:29:38.9364003Z 	at clojure.core$some.invoke(core.clj:2692)
2020-08-31T19:29:38.9364501Z 	at antq.core$complete_versions_by.invokeStatic(core.clj:69)
2020-08-31T19:29:38.9364848Z 	at antq.core$complete_versions_by.invoke(core.clj:67)
2020-08-31T19:29:38.9365082Z 	at antq.core$outdated_deps$fn__3097.invoke(core.clj:85)
2020-08-31T19:29:38.9365318Z 	at clojure.core$pmap$fn__8462$fn__8463.invoke(core.clj:7022)
2020-08-31T19:29:38.9365563Z 	at clojure.core$binding_conveyor_fn$fn__5754.invoke(core.clj:2030)
2020-08-31T19:29:38.9365797Z 	at clojure.lang.AFn.call(AFn.java:18)
2020-08-31T19:29:38.9366029Z 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2020-08-31T19:29:38.9366259Z 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
2020-08-31T19:29:38.9366517Z 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
2020-08-31T19:29:38.9366763Z 	at java.base/java.lang.Thread.run(Thread.java:832)
2020-08-31T19:29:38.9367016Z Caused by: java.io.IOException: Cannot run program "git": error=2, No such file or directory
2020-08-31T19:29:38.9367267Z 	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
2020-08-31T19:29:38.9367509Z 	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
2020-08-31T19:29:38.9367744Z 	at java.base/java.lang.Runtime.exec(Runtime.java:590)
2020-08-31T19:29:38.9367974Z 	at clojure.java.shell$sh.invokeStatic(shell.clj:113)
2020-08-31T19:29:38.9368207Z 	at clojure.java.shell$sh.doInvoke(shell.clj:79)
2020-08-31T19:29:38.9368435Z 	at clojure.lang.RestFn.invoke(RestFn.java:436)
2020-08-31T19:29:38.9368664Z 	at antq.ver.git$git_ls_remote.invokeStatic(git.clj:18)
2020-08-31T19:29:38.9368913Z 	at antq.ver.git$git_ls_remote.invoke(git.clj:16)
2020-08-31T19:29:38.9369140Z 	at antq.ver.git$fn__2606.invokeStatic(git.clj:23)
2020-08-31T19:29:38.9369365Z 	at antq.ver.git$fn__2606.invoke(git.clj:20)
2020-08-31T19:29:38.9369578Z 	at clojure.lang.MultiFn.invoke(MultiFn.java:229)
2020-08-31T19:29:38.9369810Z 	at antq.core$assoc_versions.invokeStatic(core.clj:44)
2020-08-31T19:29:38.9370036Z 	at antq.core$assoc_versions.invoke(core.clj:42)
2020-08-31T19:29:38.9370258Z 	... 7 more
2020-08-31T19:29:38.9370484Z Caused by: java.io.IOException: error=2, No such file or directory
2020-08-31T19:29:38.9370722Z 	at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
2020-08-31T19:29:38.9370958Z 	at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:319)
2020-08-31T19:29:38.9371196Z 	at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:250)
2020-08-31T19:29:38.9371435Z 	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
2020-08-31T19:29:38.9371663Z 	... 19 more
2020-08-31T19:30:39.0697260Z ##[error]Process completed with exit code 1.

---------- 8< ----------

Sorry for not thinking to test this until now!

Upgraded to 'null'

Antq will sometimes update to "null" for deps like ions/dev-local or git deps. I imagine "null" will rarely be a real version, so perhaps it would be safe to skip these updates?

Upgraded com.datomic/ion '0.9.48' to 'null' in deps.edn.
Upgraded expound/expound 'bdccedc96c65e0d104e6139121a501453007f398' to 'null' in deps.edn.
Upgraded com.datomic/dev-local '0.9.225' to 'null' in deps.edn.
Upgraded com.wsscode/pathom-datomic '88212bf72b3092aa12af1c7aa94eb696fc08d12c' to 'null' in deps.edn.
Upgraded com.cognitect/rebl '0.9.242' to 'null' in deps.edn.
Upgraded com.google.guava/guava '22.0' to '30.0-jre' in deps.edn.

Request: Exit Code other than 0 on outdated dependencies

Hi there,

thank you for this awesome tool.
Would it be possible to add a flag that activates an exit code other than 0, when any of the dependencies is outdated?
This would be useful in a CI, which automatically checks code for outdated dependencies.

0.11.0 fails if it cannot figure out a git version

Running this on our codebase at work produces:

The tag for current version is not found: https://github.com/bcgit/bc-java/
Execution error (NullPointerException) at antq.util.maven/get-scm-url (maven.clj:97).
Cannot invoke "org.apache.maven.model.Scm.getUrl()" because "scm" is null

(I think this must be a transitive dependency that something brings in)

Here's the top of the stack trace for more context:

  [[antq.util.maven$get_scm_url invokeStatic "maven.clj" 97]
   [antq.util.maven$get_scm_url invoke "maven.clj" 95]
   [antq.diff.java$get_scm_url_STAR_ invokeStatic "java.clj" 60]
   [antq.diff.java$get_scm_url_STAR_ invoke "java.clj" 52]

How to use options in "tool" mode?

I've tried both:
clojure -Tantq outdated :upgrade true
and:
clojure -Tantq outdated '{:upgrade true}'

They don't seem to have any effect that's different to:
clojure -Tantq outdated

There's no interactive prompt and no writes to the deps.edn file.

Incorrect GitHub diff URL for deps with `:git/url` that ends in `.git`

My deps.end has this dependency in it:

{juxt/kick.alpha {:git/url "https://github.com/juxt/kick.alpha.git"
                  :sha     "e498d06fb99a82c808c2436574fae643016abbc0"}}

An abridged output of antq:

|    :file |                           :name |                                 :current |                                  :latest |
|          |                 juxt/kick.alpha | e498d06fb99a82c808c2436574fae643016abbc0 | e552e314750b4c5f337fe44849d92725877dffb0 |

Available diffs:
- https://github.com/juxt/kick.alpha.git/compare/e498d06fb99a82c808c2436574fae643016abbc0...e552e314750b4c5f337fe44849d92725877dffb0

Notice how the URL includes kick.alpha.git whereas it should be just kick.alpha.

Execution error (NullPointerException) at rewrite-clj.custom-zipper.core/next (core.cljc:237)

Hi,

Clojure 1.10.3
antq 1.0.1

           :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.32"}
                                 com.github.liquidz/antq {:mvn/version "1.0.1"}}
                  :main-opts ["-m" "antq.core"
                              "--skip" "pom"
                              "--upgrade"
                              "--force"]}

Just running clojure -M:antq on a repo with the git/sha support and I get this error:

(here's a snippet, containing the relevant dependency)

 :aliases {:build {:deps {io.github.seancorfield/build-clj {:git/tag "v0.2.2"
                                                            :git/sha "5a12a1a"}}
                   :ns-default build}
❯ clj -M:antq

|    :file |                            :name | :current | :latest |
|----------+----------------------------------+----------+---------|
| deps.edn | io.github.seancorfield/build-clj |  5a12a1a | e15ca9f |

Available diffs:
- https://github.com/seancorfield/build-clj/compare/5a12a1a...e15ca9f3eaae32eaae0c4ab3aaab98a944531046
Execution error (NullPointerException) at rewrite-clj.custom-zipper.core/next (core.cljc:237).
Cannot invoke "clojure.lang.IFn.invoke(Object)"

Full report at:
/tmp/clojure-13710505474834097685.edn

Here's the stack:

{:clojure.main/message
 "Execution error (NullPointerException) at rewrite-clj.custom-zipper.core/next (core.cljc:237).\nCannot invoke \"clojure.lang.IFn.invoke(Object)\"\n",
 :clojure.main/triage
 {:clojure.error/class java.lang.NullPointerException,
  :clojure.error/line 237,
  :clojure.error/cause
  "Cannot invoke \"clojure.lang.IFn.invoke(Object)\"",
  :clojure.error/symbol rewrite-clj.custom-zipper.core/next,
  :clojure.error/source "core.cljc",
  :clojure.error/phase :execution},
 :clojure.main/trace
 {:via
  [{:type java.lang.NullPointerException,
    :message "Cannot invoke \"clojure.lang.IFn.invoke(Object)\"",
    :at [clojure.zip$branch_QMARK_ invokeStatic "zip.clj" 73]}],
  :trace
  [[clojure.zip$branch_QMARK_ invokeStatic "zip.clj" 73]
   [clojure.zip$next invokeStatic "zip.clj" 236]
   [clojure.zip$next invoke "zip.clj" 230]
   [rewrite_clj.custom_zipper.core$next invokeStatic "core.cljc" 237]
   [rewrite_clj.custom_zipper.core$next invoke "core.cljc" 237]
   [rewrite_clj.zip.move$next invokeStatic "move.cljc" 33]
   [rewrite_clj.zip.move$next invoke "move.cljc" 28]
   [rewrite_clj.zip$next invokeStatic "zip.cljc" 519]
   [rewrite_clj.zip$next invoke "zip.cljc" 516]
   [clojure.lang.Iterate first "Iterate.java" 47]
   [clojure.lang.RT first "RT.java" 692]
   [clojure.core$first__5401 invokeStatic "core.clj" 55]
   [clojure.core$take_while$fn__5935 invoke "core.clj" 2910]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.RT seq "RT.java" 535]
   [clojure.core$seq__5419 invokeStatic "core.clj" 139]
   [clojure.core$take_while$fn__5935 invoke "core.clj" 2908]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.RT seq "RT.java" 535]
   [clojure.core$seq__5419 invokeStatic "core.clj" 139]
   [clojure.core$drop_while$step__5958 invoke "core.clj" 2976]
   [clojure.core$drop_while$fn__5961 invoke "core.clj" 2981]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.LazySeq first "LazySeq.java" 73]
   [clojure.lang.RT first "RT.java" 692]
   [clojure.core$first__5401 invokeStatic "core.clj" 55]
   [clojure.core$first__5401 invoke "core.clj" 55]
   [rewrite_clj.zip.findz$find invokeStatic "findz.cljc" 44]
   [rewrite_clj.zip.findz$find invoke "findz.cljc" 31]
   [rewrite_clj.zip.findz$find_token invokeStatic "findz.cljc" 119]
   [rewrite_clj.zip.findz$find_token invoke "findz.cljc" 110]
   [rewrite_clj.zip.findz$find_value invokeStatic "findz.cljc" 146]
   [rewrite_clj.zip.findz$find_value invoke "findz.cljc" 131]
   [rewrite_clj.zip$find_value invokeStatic "zip.cljc" 419]
   [rewrite_clj.zip$find_value invoke "zip.cljc" 409]
   [antq.upgrade.clojure$upgrade_dep invokeStatic "clojure.clj" 20]
   [antq.upgrade.clojure$upgrade_dep invoke "clojure.clj" 13]
   [antq.upgrade.clojure$eval6743$fn__6744 invoke "clojure.clj" 36]
   [clojure.lang.MultiFn invoke "MultiFn.java" 229]
   [antq.upgrade$upgrade_BANG_$fn__3289 invoke "upgrade.clj" 50]
   [clojure.core$complement$fn__5686 invoke "core.clj" 1443]
   [clojure.core$filter$fn__5911 invoke "core.clj" 2825]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.RT seq "RT.java" 535]
   [clojure.core$seq__5419 invokeStatic "core.clj" 139]
   [clojure.core$dorun invokeStatic "core.clj" 3121]
   [clojure.core$doall invokeStatic "core.clj" 3136]
   [clojure.core$doall invoke "core.clj" 3136]
   [antq.upgrade$upgrade_BANG_ invokeStatic "upgrade.clj" 46]
   [antq.upgrade$upgrade_BANG_ invoke "upgrade.clj" 38]
   [antq.core$main_STAR_ invokeStatic "core.clj" 255]
   [antq.core$main_STAR_ invoke "core.clj" 238]
   [antq.core$_main invokeStatic "core.clj" 267]
   [antq.core$_main doInvoke "core.clj" 264]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.core$apply invokeStatic "core.clj" 667]
   [clojure.main$main_opt invokeStatic "main.clj" 514]
   [clojure.main$main_opt invoke "main.clj" 510]
   [clojure.main$main invokeStatic "main.clj" 664]
   [clojure.main$main doInvoke "main.clj" 616]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.main main "main.java" 40]],
  :cause "Cannot invoke \"clojure.lang.IFn.invoke(Object)\""}}

feature request: upgrade the deps like `lein ancient upgrade` ?

I've been using lein-ancient to upgrade deps in project.clj, but it obviously only supports lein, and I really miss such a tool for detecting outdated deps in shadow-cljs.edn until I find antq.

But antq seems to only able to list the outdated deps, and not able to update it automatically.

Is it feasible to implement this functionality, e.g using the rewrite-edn library?

Dependency is not upgraded if appears more than once in deps file

clojure 1.10.1
antq 0.10.0

If one has a deps.edn file like this:

  :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "2.0.161"}}
            :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
            :main-opts ["-m" "hf.depstar.uberjar"]}

  :jar {:extra-deps {seancorfield/depstar {:mvn/version "1.1.136"}}
        :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
        :main-opts ["-m" "hf.depstar.jar"]}

On running clj -M:antq with this alias:

  :antq {:replace-deps {org.slf4j/slf4j-nop {:mvn/version "1.7.30"}
                        antq/antq {:mvn/version "0.10.0"}}
         :main-opts ["-m" "antq.core"
                     "--skip" "pom"
                     "--upgrade"
                     "--force"]}

Only the first dependency is upgraded, with the second one being ignored. If uberjar is commented out, then the second one is upgraded (and vice versa).

Error when running in the REPLy project

I got a weird error when running antq on https://github.com/trptcolin/reply

$ lein outdated
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: qualified-symbol? in this context, compiling:(antq/dep/boot.clj:38:40)

That's with the latest version of antq. It seems to run fine on other projects I've tried it with.

org.clojure/clojure not reported as out of date

Given an empty directory with the following deps.edn

{:deps {org.clojure/clojure {:mvn/version "1.10.1"}
        org.clojure/clojurescript {:mvn/version "1.10.520"}}}

When I run antq in the same directory I get:

> clojure -Sdeps '{:deps {antq/antq {:mvn/version "RELEASE"}}}' -M -m antq.core
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

|    :file |                     :name | :version | :latest-version |
|----------+---------------------------+----------+-----------------|
| deps.edn | org.clojure/clojurescript | 1.10.520 |        1.10.773 |

I expected to also see that Clojure 1.10.2 is available.

Leiningen approach can be refined

Checking out https://github.com/liquidz/antq/blob/400215d5e3edf61ac2cb3b993b9477ac7e69a061/src/antq/dep/leiningen.clj, the approach to checking project.clj doesn't quite seem idiomatic. project.clj is not data, but code meant to evaluated in a specific context. Treating it as data results in reduced accuracy and flexibility.

Three specific items can be pointed out:

  • eval won't work (one can use ~ to eval arbitrary Clojure code anywhere within project.clj)
  • profiles cannot be freely composed
  • plugins/middleware, that can always alter or inject extra dependencies, won't be taken into account.

Therefore I'd suggest that the current approach becomes deprecated. Instead a Lein plugin would be offered.

As usual with plugins, they receive a project argument with all evaluation rules already applied. So you don't need to worry about eval, profiles, or plugins - all those are already handled by Lein itself prior to one's plugin invocation.

WDYT?

I could contribute a PR.

Cannot update dependencies in a password protected maven repo.

I'm using Datomic dev-local, https://docs.datomic.com/cloud/dev-local.html, which uses a password protected maven repo.

I have a ~/.m2/settings.xml that includes:

    <server>
       <id>cognitect-dev-tools</id>
       <username>${env.COGNITECT_DEV_TOOLS_USERNAME}</username>
       <password>${env.COGNITECT_DEV_TOOLS_PASSWORD}</password>
    </server>

a pom.xml that includes:

    <repository>
      <id>cognitect-dev-tools</id>
      <url>https://dev-tools.cognitect.com/maven/releases/</url>
    </repository>

and a deps.edn that looks like:

{:mvn/repos {"cognitect-dev-tools" {:url "https://dev-tools.cognitect.com/maven/releases/"}}
 :deps {com.datomic/dev-local {:mvn/version "0.9.225"}
        ...}
 ...}

Everything works with tools.deps. Only antq appears to have a problem. For example:

|    :file |                 :name | :version | :latest-version |
|----------+-----------------------+----------+-----------------|
| deps.edn | com.datomic/dev-local |  0.9.225 | Failed to fetch |
|  pom.xml | com.datomic/dev-local |  0.9.225 | Failed to fetch |

One possible theory is that this is because "antq is using tools.deps.alpha for parts of its maven code, but not using it to read deps from deps.edn files" (hat tip Alex Miller).

Keep SHA length when upgrading?

Hi,

Just tried out 1.0.2, to fix the bug with upgrading a dependency when there is a git/sha defined. I've noticed that if antq does the upgrade (--upgrade --force), then the sha that I put in (to get things started), :git/sha "fb11811" is replaced with the full sha of the upgrade :git/sha "19c1d310235712240177a09475d5b71420aa7ddb".

I believe, antq should just honour what is considered to be sufficent for a short sha, i.e., 7 characters?

https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#Short-SHA-1

i.e., if one types in agit log --abbrev-commit, the sha output is 7 characters long. In the Clojure libraries I've worked with, 7 characters seems to be the default for the sha in the deps.edn (i.e., https://github.com/seancorfield/build-clj/blob/main/deps.edn).

Thank you.

-=david=-

More useful output for dependencies with git/sha coordinates?

When used on a deps.edn based project that uses git/sha coordinates to select a dependency, we see output like this:

|    :file |                        :name | :version | :latest-version |
|----------+------------------------------+----------+-----------------|
| deps.edn |              athos/clj-check |          | Failed to fetch |
|          | noisesmith/lein-git-info-edn |          | Failed to fetch |

Are there plans afoot to check the latest version of dependencies expressed via git/sha coordinates?

I believe this can be achieved using the git ls-remote command.

Exception when using s3-wagon-private plugin

When using antq as a plugin, the following project.clj

(defproject foo "0.0.1"
  :plugins [[s3-wagon-private "1.3.4"]])

causes a large exception to be thrown when running lein antq.

$ lein antq
clojure.lang.Compiler$CompilerException: Syntax error compiling . at (cheshire/factory.clj:61:7).
#:clojure.error{:phase :compile-syntax-check, :line 61, :column 7, :source "cheshire/factory.clj", :symbol .}
 at clojure.lang.Compiler.analyzeSeq (Compiler.java:7115)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6118)
    clojure.lang.Compiler$LetExpr$Parser.parse (Compiler.java:6436)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6120)
    clojure.lang.Compiler$LetExpr$Parser.parse (Compiler.java:6436)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6120)
    clojure.lang.Compiler$FnMethod.parse (Compiler.java:5467)
    clojure.lang.Compiler$FnExpr.parse (Compiler.java:4029)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7105)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.access$300 (Compiler.java:38)
    clojure.lang.Compiler$DefExpr$Parser.parse (Compiler.java:596)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler.eval (Compiler.java:7181)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    cheshire.core$eval3160$loading__6721__auto____3161.invoke (core.clj:1)
    cheshire.core$eval3160.invokeStatic (core.clj:1)
    cheshire.core$eval3160.invoke (core.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:421)
    antq.report.json$eval3152$loading__6721__auto____3153.invoke (json.clj:1)
    antq.report.json$eval3152.invokeStatic (json.clj:1)
    antq.report.json$eval3152.invoke (json.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:3894)
    antq.core$eval682$loading__6721__auto____683.invoke (core.clj:8)
    antq.core$eval682.invokeStatic (core.clj:8)
    antq.core$eval682.invoke (core.clj:8)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    leiningen.antq$eval671$loading__6721__auto____672.invoke (antq.clj:1)
    leiningen.antq$eval671.invokeStatic (antq.clj:1)
    leiningen.antq$eval671.invoke (antq.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:102)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:105)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.main$lookup_task_var.invokeStatic (main.clj:69)
    leiningen.core.main$lookup_task_var.invoke (main.clj:65)
    leiningen.core.main$pass_through_help_QMARK_.invokeStatic (main.clj:79)
    leiningen.core.main$pass_through_help_QMARK_.invoke (main.clj:73)
    leiningen.core.main$task_args.invokeStatic (main.clj:82)
    leiningen.core.main$task_args.invoke (main.clj:81)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:339)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7420.invoke (main.clj:453)
    leiningen.core.main$_main.invokeStatic (main.clj:442)
    leiningen.core.main$_main.doInvoke (main.clj:439)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:665)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/TSFBuilder
 at java.lang.ClassLoader.defineClass1 (ClassLoader.java:-2)
    java.lang.ClassLoader.defineClass (ClassLoader.java:1017)
    java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174)
    java.net.URLClassLoader.defineClass (URLClassLoader.java:550)
    java.net.URLClassLoader$1.run (URLClassLoader.java:458)
    java.net.URLClassLoader$1.run (URLClassLoader.java:452)
    java.security.AccessController.doPrivileged (AccessController.java:-2)
    java.net.URLClassLoader.findClass (URLClassLoader.java:451)
    clojure.lang.DynamicClassLoader.findClass (DynamicClassLoader.java:69)
    java.lang.ClassLoader.loadClass (ClassLoader.java:589)
    clojure.lang.DynamicClassLoader.loadClass (DynamicClassLoader.java:77)
    java.lang.ClassLoader.loadClass (ClassLoader.java:522)
    java.lang.Class.getDeclaredMethods0 (Class.java:-2)
    java.lang.Class.privateGetDeclaredMethods (Class.java:3166)
    java.lang.Class.privateGetPublicMethods (Class.java:3191)
    java.lang.Class.getMethods (Class.java:1904)
    clojure.lang.Reflector.getMethods (Reflector.java:498)
    clojure.lang.Compiler$InstanceMethodExpr.<init> (Compiler.java:1488)
    clojure.lang.Compiler$HostExpr$Parser.parse (Compiler.java:1024)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6118)
    clojure.lang.Compiler$LetExpr$Parser.parse (Compiler.java:6436)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6120)
    clojure.lang.Compiler$LetExpr$Parser.parse (Compiler.java:6436)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6120)
    clojure.lang.Compiler$FnMethod.parse (Compiler.java:5467)
    clojure.lang.Compiler$FnExpr.parse (Compiler.java:4029)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7105)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.access$300 (Compiler.java:38)
    clojure.lang.Compiler$DefExpr$Parser.parse (Compiler.java:596)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler.eval (Compiler.java:7181)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    cheshire.core$eval3160$loading__6721__auto____3161.invoke (core.clj:1)
    cheshire.core$eval3160.invokeStatic (core.clj:1)
    cheshire.core$eval3160.invoke (core.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:421)
    antq.report.json$eval3152$loading__6721__auto____3153.invoke (json.clj:1)
    antq.report.json$eval3152.invokeStatic (json.clj:1)
    antq.report.json$eval3152.invoke (json.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:3894)
    antq.core$eval682$loading__6721__auto____683.invoke (core.clj:8)
    antq.core$eval682.invokeStatic (core.clj:8)
    antq.core$eval682.invoke (core.clj:8)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    leiningen.antq$eval671$loading__6721__auto____672.invoke (antq.clj:1)
    leiningen.antq$eval671.invokeStatic (antq.clj:1)
    leiningen.antq$eval671.invoke (antq.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:102)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:105)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.main$lookup_task_var.invokeStatic (main.clj:69)
    leiningen.core.main$lookup_task_var.invoke (main.clj:65)
    leiningen.core.main$pass_through_help_QMARK_.invokeStatic (main.clj:79)
    leiningen.core.main$pass_through_help_QMARK_.invoke (main.clj:73)
    leiningen.core.main$task_args.invokeStatic (main.clj:82)
    leiningen.core.main$task_args.invoke (main.clj:81)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:339)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7420.invoke (main.clj:453)
    leiningen.core.main$_main.invokeStatic (main.clj:442)
    leiningen.core.main$_main.doInvoke (main.clj:439)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:665)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.TSFBuilder
 at java.net.URLClassLoader.findClass (URLClassLoader.java:471)
    clojure.lang.DynamicClassLoader.findClass (DynamicClassLoader.java:69)
    java.lang.ClassLoader.loadClass (ClassLoader.java:589)
    clojure.lang.DynamicClassLoader.loadClass (DynamicClassLoader.java:77)
    java.lang.ClassLoader.loadClass (ClassLoader.java:522)
    java.lang.ClassLoader.defineClass1 (ClassLoader.java:-2)
    java.lang.ClassLoader.defineClass (ClassLoader.java:1017)
    java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174)
    java.net.URLClassLoader.defineClass (URLClassLoader.java:550)
    java.net.URLClassLoader$1.run (URLClassLoader.java:458)
    java.net.URLClassLoader$1.run (URLClassLoader.java:452)
    java.security.AccessController.doPrivileged (AccessController.java:-2)
    java.net.URLClassLoader.findClass (URLClassLoader.java:451)
    clojure.lang.DynamicClassLoader.findClass (DynamicClassLoader.java:69)
    java.lang.ClassLoader.loadClass (ClassLoader.java:589)
    clojure.lang.DynamicClassLoader.loadClass (DynamicClassLoader.java:77)
    java.lang.ClassLoader.loadClass (ClassLoader.java:522)
    java.lang.Class.getDeclaredMethods0 (Class.java:-2)
    java.lang.Class.privateGetDeclaredMethods (Class.java:3166)
    java.lang.Class.privateGetPublicMethods (Class.java:3191)
    java.lang.Class.getMethods (Class.java:1904)
    clojure.lang.Reflector.getMethods (Reflector.java:498)
    clojure.lang.Compiler$InstanceMethodExpr.<init> (Compiler.java:1488)
    clojure.lang.Compiler$HostExpr$Parser.parse (Compiler.java:1024)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6118)
    clojure.lang.Compiler$LetExpr$Parser.parse (Compiler.java:6436)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6120)
    clojure.lang.Compiler$LetExpr$Parser.parse (Compiler.java:6436)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:6120)
    clojure.lang.Compiler$FnMethod.parse (Compiler.java:5467)
    clojure.lang.Compiler$FnExpr.parse (Compiler.java:4029)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7105)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7095)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.access$300 (Compiler.java:38)
    clojure.lang.Compiler$DefExpr$Parser.parse (Compiler.java:596)
    clojure.lang.Compiler.analyzeSeq (Compiler.java:7107)
    clojure.lang.Compiler.analyze (Compiler.java:6789)
    clojure.lang.Compiler.analyze (Compiler.java:6745)
    clojure.lang.Compiler.eval (Compiler.java:7181)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    cheshire.core$eval3160$loading__6721__auto____3161.invoke (core.clj:1)
    cheshire.core$eval3160.invokeStatic (core.clj:1)
    cheshire.core$eval3160.invoke (core.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:421)
    antq.report.json$eval3152$loading__6721__auto____3153.invoke (json.clj:1)
    antq.report.json$eval3152.invokeStatic (json.clj:1)
    antq.report.json$eval3152.invoke (json.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:3894)
    antq.core$eval682$loading__6721__auto____683.invoke (core.clj:8)
    antq.core$eval682.invokeStatic (core.clj:8)
    antq.core$eval682.invoke (core.clj:8)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:457)
    leiningen.antq$eval671$loading__6721__auto____672.invoke (antq.clj:1)
    leiningen.antq$eval671.invokeStatic (antq.clj:1)
    leiningen.antq$eval671.invoke (antq.clj:1)
    clojure.lang.Compiler.eval (Compiler.java:7177)
    clojure.lang.Compiler.eval (Compiler.java:7166)
    clojure.lang.Compiler.load (Compiler.java:7636)
    clojure.lang.RT.loadResourceScript (RT.java:381)
    clojure.lang.RT.loadResourceScript (RT.java:372)
    clojure.lang.RT.load (RT.java:459)
    clojure.lang.RT.load (RT.java:424)
    clojure.core$load$fn__6839.invoke (core.clj:6126)
    clojure.core$load.invokeStatic (core.clj:6125)
    clojure.core$load.doInvoke (core.clj:6109)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    clojure.core$load_one.invokeStatic (core.clj:5908)
    clojure.core$load_one.invoke (core.clj:5903)
    clojure.core$load_lib$fn__6780.invoke (core.clj:5948)
    clojure.core$load_lib.invokeStatic (core.clj:5947)
    clojure.core$load_lib.doInvoke (core.clj:5928)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$load_libs.invokeStatic (core.clj:5985)
    clojure.core$load_libs.doInvoke (core.clj:5969)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$require.invokeStatic (core.clj:6007)
    clojure.core$require.doInvoke (core.clj:6007)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:102)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.utils$require_resolve.invokeStatic (utils.clj:105)
    leiningen.core.utils$require_resolve.invoke (utils.clj:95)
    leiningen.core.main$lookup_task_var.invokeStatic (main.clj:69)
    leiningen.core.main$lookup_task_var.invoke (main.clj:65)
    leiningen.core.main$pass_through_help_QMARK_.invokeStatic (main.clj:79)
    leiningen.core.main$pass_through_help_QMARK_.invoke (main.clj:73)
    leiningen.core.main$task_args.invokeStatic (main.clj:82)
    leiningen.core.main$task_args.invoke (main.clj:81)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:339)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7420.invoke (main.clj:453)
    leiningen.core.main$_main.invokeStatic (main.clj:442)
    leiningen.core.main$_main.doInvoke (main.clj:439)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:665)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)

Support for libraries in private repositories

When running antq against our repos I get an error when it tries to download a private library.

Eg if I run on a leiningen project:
clojure -Sdeps '{:deps {com.github.liquidz/antq {:mvn/version "RELEASE"}}}' -M -m antq.core

It produces:

...
Execution error (IOException) at sun.net.www.protocol.http.HttpURLConnection/getInputStream0 (HttpURLConnection.java:1924).
Server returned HTTP response code: 401 for URL: https://fundingcircle.jfrog.io/fundingcircle/libs-release-local/turbulent-metrics-kafka-streams/turbulent-metrics-kafka-streams/0.4.0/turbulent-metrics-kafka-streams-0.4.0.pom

This is a homemade lib which is hosted in a private repo declared inside project.clj.
I have the same issue if running the same command against a tools.deps project.

  • Running lein ancient works fine against the leiningen project and reports all libs version diff.
  • Running clojure -Sdeps '{:deps {olical/depot {:mvn/version "RELEASE"}}}' -M -m depot.outdated.main runs fine against the tools.deps project and reports the diff for the private lib too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.