Giter VIP home page Giter VIP logo

vizdeps's Introduction

walmartlabs/vizdeps

All work in this repo has ceased; it is continued in clj-commons/vizdeps.

License

Copyright © 2016- Walmartlabs

Distributed under the Apache Software License 2.0.

vizdeps's People

Contributors

bostonaholic avatar hlship avatar jvtrigueros avatar sim-f avatar

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vizdeps's Issues

Resolve custom repositories

One of our transitive dependencies pulls from a custom repository [1] which seems to confuse vizdeps, erroring with:

clojure.lang.ExceptionInfo: Exception processing dependencies of [cc.qbits/alia-all "3.3.0" :exclusions [[org.clojure/tools.reader]]]: Exception processing dependencies of [cc.qbits/alia-eaio-uuid "3.1.3"]: Exception processing dependencies of [cc.qbits/tardis "1.0.0"]: Exception processing dependenci
es of [com.eaio.uuid/uuid "3.3"]: Exception resolving dependencies of [com.eaio.uuid/uuid "3.3"]: Could not resolve dependencies
...
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact com.eaio.uuid:uuid:jar:3.3 in central (https://repo1.maven.org/maven2/)

The command runs once we had the repository to our own project however.

[1] https://github.com/mpenet/tardis/blob/master/project.clj

Arity exception resolving dependency inside add-dependency-tree

D:\clojure\luminusweb\yunhaoutil>lein vizdeps -o target/dependencies.pdf
clojure.lang.ExceptionInfo: Exception processing dependencies of [org.clojure/clojure "1.8.0"]: Exception resolving dep
at clojure.core$ex_info.invokeStatic (core.clj:4617)
clojure.core$ex_info.invoke (core.clj:4617)
leiningen.vizdeps$add_dependency_tree.invokeStatic (vizdeps.clj:106)
leiningen.vizdeps$add_dependency_tree.invoke (vizdeps.clj:81)
leiningen.vizdeps$add_dependencies$fn__804.invoke (vizdeps.clj:115)
clojure.core.protocols$fn__6755.invokeStatic (protocols.clj:167)
clojure.core.protocols/fn (protocols.clj:124)
clojure.core.protocols$fn__6710$G__6705__6719.invoke (protocols.clj:19)
clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
clojure.core.protocols$fn__6738.invokeStatic (protocols.clj:75)
clojure.core.protocols/fn (protocols.clj:75)
clojure.core.protocols$fn__6684$G__6679__6697.invoke (protocols.clj:13)
clojure.core$reduce.invokeStatic (core.clj:6545)
clojure.core$reduce.invoke (core.clj:6527)
leiningen.vizdeps$add_dependencies.invokeStatic (vizdeps.clj:114)
leiningen.vizdeps$add_dependencies.invoke (vizdeps.clj:112)
leiningen.vizdeps$dependency_graph.invokeStatic (vizdeps.clj:146)
leiningen.vizdeps$dependency_graph.invoke (vizdeps.clj:132)
leiningen.vizdeps$build_dot.invokeStatic (vizdeps.clj:170)
leiningen.vizdeps$build_dot.invoke (vizdeps.clj:168)
leiningen.vizdeps$vizdeps.invokeStatic (vizdeps.clj:225)
leiningen.vizdeps$vizdeps.doInvoke (vizdeps.clj:206)
clojure.lang.RestFn.invoke (RestFn.java:439)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invokeStatic (core.clj:648)
clojure.core$apply.invoke (core.clj:641)
leiningen.core.main$partial_task$fn__5829.doInvoke (main.clj:272)
clojure.lang.RestFn.applyTo (RestFn.java:139)
clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:648)
clojure.core$apply.invoke (core.clj:641)
leiningen.core.main$apply_task.invokeStatic (main.clj:322)
leiningen.core.main$apply_task.invoke (main.clj:308)
leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:328)
leiningen.core.main$resolve_and_apply.invoke (main.clj:324)
leiningen.core.main$_main$fn__5895.invoke (main.clj:401)
leiningen.core.main$_main.invokeStatic (main.clj:394)
leiningen.core.main$_main.doInvoke (main.clj:391)
clojure.lang.RestFn.invoke (RestFn.java:436)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invokeStatic (core.clj:646)
clojure.main$main_opt.invokeStatic (main.clj:314)
clojure.main$main_opt.invoke (main.clj:310)
clojure.main$main.invokeStatic (main.clj:421)
clojure.main$main.doInvoke (main.clj:384)
clojure.lang.RestFn.invoke (RestFn.java:482)
clojure.lang.Var.invoke (Var.java:401)
clojure.lang.AFn.applyToHelper (AFn.java:171)
clojure.lang.Var.applyTo (Var.java:700)
clojure.main.main (main.java:37)
Caused by: clojure.lang.ExceptionInfo: Exception resolving dependencies of [org.clojure/clojure "1.8.0"]: Wrong number
at clojure.core$ex_info.invokeStatic (core.clj:4617)
clojure.core$ex_info.invoke (core.clj:4617)
leiningen.vizdeps$immediate_dependencies.invokeStatic (vizdeps.clj:71)
leiningen.vizdeps$immediate_dependencies.invoke (vizdeps.clj:56)
leiningen.vizdeps$add_dependency_tree.invokeStatic (vizdeps.clj:104)
leiningen.vizdeps$add_dependency_tree.invoke (vizdeps.clj:81)
leiningen.vizdeps$add_dependencies$fn__804.invoke (vizdeps.clj:115)
clojure.core.protocols$fn__6755.invokeStatic (protocols.clj:167)
clojure.core.protocols/fn (protocols.clj:124)
clojure.core.protocols$fn__6710$G__6705__6719.invoke (protocols.clj:19)
clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
clojure.core.protocols$fn__6738.invokeStatic (protocols.clj:75)
clojure.core.protocols/fn (protocols.clj:75)
clojure.core.protocols$fn__6684$G__6679__6697.invoke (protocols.clj:13)
clojure.core$reduce.invokeStatic (core.clj:6545)
clojure.core$reduce.invoke (core.clj:6527)
leiningen.vizdeps$add_dependencies.invokeStatic (vizdeps.clj:114)
leiningen.vizdeps$add_dependencies.invoke (vizdeps.clj:112)
leiningen.vizdeps$dependency_graph.invokeStatic (vizdeps.clj:146)
leiningen.vizdeps$dependency_graph.invoke (vizdeps.clj:132)
leiningen.vizdeps$build_dot.invokeStatic (vizdeps.clj:170)
leiningen.vizdeps$build_dot.invoke (vizdeps.clj:168)
leiningen.vizdeps$vizdeps.invokeStatic (vizdeps.clj:225)
leiningen.vizdeps$vizdeps.doInvoke (vizdeps.clj:206)
clojure.lang.RestFn.invoke (RestFn.java:439)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invokeStatic (core.clj:648)
clojure.core$apply.invoke (core.clj:641)
leiningen.core.main$partial_task$fn__5829.doInvoke (main.clj:272)
clojure.lang.RestFn.applyTo (RestFn.java:139)
clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:648)
clojure.core$apply.invoke (core.clj:641)
leiningen.core.main$apply_task.invokeStatic (main.clj:322)
leiningen.core.main$apply_task.invoke (main.clj:308)
leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:328)
leiningen.core.main$resolve_and_apply.invoke (main.clj:324)
leiningen.core.main$_main$fn__5895.invoke (main.clj:401)
leiningen.core.main$_main.invokeStatic (main.clj:394)
leiningen.core.main$_main.doInvoke (main.clj:391)
clojure.lang.RestFn.invoke (RestFn.java:436)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invokeStatic (core.clj:646)
clojure.main$main_opt.invokeStatic (main.clj:314)
clojure.main$main_opt.invoke (main.clj:310)
clojure.main$main.invokeStatic (main.clj:421)
clojure.main$main.doInvoke (main.clj:384)
clojure.lang.RestFn.invoke (RestFn.java:482)
clojure.lang.Var.invoke (Var.java:401)
clojure.lang.AFn.applyToHelper (AFn.java:171)
clojure.lang.Var.applyTo (Var.java:700)
clojure.main.main (main.java:37)
Caused by: clojure.lang.ArityException: Wrong number of args (4) passed to: classpath/fn--6613
at clojure.lang.AFn.throwArity (AFn.java:429)
clojure.lang.AFn.invoke (AFn.java:44)
clojure.lang.AFn.applyToHelper (AFn.java:165)
clojure.lang.AFn.applyTo (AFn.java:144)
clojure.core$apply.invokeStatic (core.clj:646)
clojure.core$memoize$fn__5708.doInvoke (core.clj:6107)
clojure.lang.RestFn.invoke (RestFn.java:457)
clojure.lang.Var.invoke (Var.java:394)
leiningen.vizdeps$immediate_dependencies.invokeStatic (vizdeps.clj:60)
leiningen.vizdeps$immediate_dependencies.invoke (vizdeps.clj:56)
leiningen.vizdeps$add_dependency_tree.invokeStatic (vizdeps.clj:104)
leiningen.vizdeps$add_dependency_tree.invoke (vizdeps.clj:81)
leiningen.vizdeps$add_dependencies$fn__804.invoke (vizdeps.clj:115)
clojure.core.protocols$fn__6755.invokeStatic (protocols.clj:167)
clojure.core.protocols/fn (protocols.clj:124)
clojure.core.protocols$fn__6710$G__6705__6719.invoke (protocols.clj:19)
clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
clojure.core.protocols$fn__6738.invokeStatic (protocols.clj:75)
clojure.core.protocols/fn (protocols.clj:75)
clojure.core.protocols$fn__6684$G__6679__6697.invoke (protocols.clj:13)
clojure.core$reduce.invokeStatic (core.clj:6545)
clojure.core$reduce.invoke (core.clj:6527)
leiningen.vizdeps$add_dependencies.invokeStatic (vizdeps.clj:114)
leiningen.vizdeps$add_dependencies.invoke (vizdeps.clj:112)
leiningen.vizdeps$dependency_graph.invokeStatic (vizdeps.clj:146)
leiningen.vizdeps$dependency_graph.invoke (vizdeps.clj:132)
leiningen.vizdeps$build_dot.invokeStatic (vizdeps.clj:170)
leiningen.vizdeps$build_dot.invoke (vizdeps.clj:168)
leiningen.vizdeps$vizdeps.invokeStatic (vizdeps.clj:225)
leiningen.vizdeps$vizdeps.doInvoke (vizdeps.clj:206)
clojure.lang.RestFn.invoke (RestFn.java:439)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invokeStatic (core.clj:648)
clojure.core$apply.invoke (core.clj:641)
leiningen.core.main$partial_task$fn__5829.doInvoke (main.clj:272)
clojure.lang.RestFn.applyTo (RestFn.java:139)
clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:648)
clojure.core$apply.invoke (core.clj:641)
leiningen.core.main$apply_task.invokeStatic (main.clj:322)
leiningen.core.main$apply_task.invoke (main.clj:308)
leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:328)
leiningen.core.main$resolve_and_apply.invoke (main.clj:324)
leiningen.core.main$_main$fn__5895.invoke (main.clj:401)
leiningen.core.main$_main.invokeStatic (main.clj:394)
leiningen.core.main$_main.doInvoke (main.clj:391)
clojure.lang.RestFn.invoke (RestFn.java:436)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invokeStatic (core.clj:646)
clojure.main$main_opt.invokeStatic (main.clj:314)
clojure.main$main_opt.invoke (main.clj:310)
clojure.main$main.invokeStatic (main.clj:421)
clojure.main$main.doInvoke (main.clj:384)
clojure.lang.RestFn.invoke (RestFn.java:482)
clojure.lang.Var.invoke (Var.java:401)
clojure.lang.AFn.applyToHelper (AFn.java:171)
clojure.lang.Var.applyTo (Var.java:700)
clojure.main.main (main.java:37)

Allow supplying custom profiles

It looks like the set of profiles used in dependency calculation hard-codes the profile being used:

(let [profiles (if-not (:dev options)
[:user]
[:user :dev])

It would be useful if consumers could supply profiles, either via the usual lein with-profiles foo <command> syntax or through a command line argument.

Happy to submit a PR.

Potential fork to clj-commons

@hlship

I have personally found many issues that were almost impossible to debug by visualizing dependencies and as such have an interested professionally on this particular project continuing to be upgraded.

I have personally found many issues that were almost impossible to debug by visualizing dependencies and as such have an interested professionally on this particular project continuing to be upgraded.

There is some discussion about forking this to clj-commons and bringing it up to date to, for instance, work with latest leiningen and jvm releases.

Would you (or any of the contributors to this project) find it distasteful in any way if this project were adopted by clj-commons?

Refactor code to make it possible to use with Boot

I get this is a leiningen task.

I am sure there are people using boot that would be interested (I am one).

This project could either provide a boot task, or expose functions that a boot task could use to render the graph, prune dependencies etc.

Add documentation about installing Graphviz

This looks awesome, but when I updated my profiles.clj and tried it out, it ended up in an exception:

lein vizdeps                               22:36:04
java.io.IOException: Cannot run program "dot": error=2, No such file or directory
 at java.lang.ProcessBuilder.start (ProcessBuilder.java:1048)
    dorothy.core$render.invokeStatic (core.clj:626)
    dorothy.core$render.invoke (core.clj:597)
    dorothy.core$save_BANG_.invokeStatic (core.clj:651)
    dorothy.core$save_BANG_.doInvoke (core.clj:633)
    clojure.lang.RestFn.invoke (RestFn.java:442)
    leiningen.vizdeps$vizdeps.invokeStatic (vizdeps.clj:233)
…

Check Leiningen version 2.7.0+

vizdeps fails on Leiningen < 2.7.0 with the error "No such var: classpath/managed-dependency-hierarchy, compiling:(com/walmartlabs/vizdeps/common.clj:118:7)"

Is it enforceable for a Leiningen plugin to declare a :min-lein-version?

See also technomancy/leiningen#2067 for the Leiningen feature.

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.