## Table of Contents * [Scope](#scope) * [Alternatives](#alternatives) * [gem dep](#gem-dep) * [bundle viz](#bundle-viz) * [Usage](#usage) * [Warning](#warning) * [Unique dependencies](#unique-dependencies) * [Recursive print](#recursive-print) * [Filter by version](#filter-by-version) ## Scope This gem is aimed to list recursively the **runtime dependencies** footprint of the specified gem. ### Alternatives Some alternatives exists: #### gem dep The standard *gem dep* command just unearth one level of dependencies. #### bundle viz The *bundle viz* command relies on the Gemfile and the [graphviz](http://www.graphviz.org/) library to generate a visual representation of the gem inter-dependencies. While it is great to visualize inter-dependencies, i have hard times figuring out gem's runtime footprint. ## Usage The library relies on the *Gem::Commands::DependencyCommand* class (the one invoked by the *gem dep* command line), invoking it recursively to deeply fetch dependencies. ### Warning Consider only the gems installed on your system are scanned for their own dependencies, no remote fetching is performed. ### Unique dependencies The command outcome includes all of the unique (by name) nested runtime dependencies: ``` $ lapidarius --gem=grape grape (0.17.0) 20 ------------------------------ activesupport (>= 0) builder (>= 0) hashie (>= 2.1.0) multi_json (>= 1.3.2) multi_xml (>= 0.5.2) mustermann19 (~> 0.4.3) rack (>= 1.3.0) rack-accept (>= 0) virtus (>= 1.0.0) concurrent-ruby (>= 1.0.2, ~> 1.0) i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) thread_safe (~> 0.1) enumerable-lazy (>= 0) axiom-types (~> 0.1) coercible (~> 1.0) descendants_tracker (>= 0.0.3, ~> 0.0) equalizer (>= 0.0.9, ~> 0.0) ice_nine (~> 0.11.0) ``` ### Recursive print To print dependencies hierarchy recursively, provide the *--recursive* flag. Duplicates are not counted: ``` $ lapidarius --gem=sinatra --recursive sinatra (1.4.7) 3 ------------------------------ rack (~> 1.5) rack-protection (~> 1.4) rack (>= 0) tilt (< 3, >= 1.3) ``` ### Filter by version If you have multiple versions of the same gem installed, the library will fetch the first one listed by default. To specify the version of the gem to be scanned provide the *--version* flag: ``` $ lapidarius --gem=rack --version=2.0.1 rack (2.0.1) 0 ------------------------------ ```