A simple measure of dependency freshness
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
lib
spec
.gitignore
.rubocop.yml
.rubocop_todo.yml
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
Gemfile
LICENSE.txt
README.md
libyear-bundler.gemspec

README.md

Libyear

A simple measure of dependency freshness for ruby apps.

$ libyear-bundler Gemfile
activesupport    4.2.7.1     2016-08-10    5.1.3     2017-08-03       1.0
         i18n      0.8.0     2017-01-31    0.8.6     2017-07-10       0.4
         json      1.8.6     2017-01-13    2.1.0     2017-04-18       0.3
System is 1.7 libyears behind

libyear-bundler tells you how out-of-date your Gemfile is, in a single number.

Install

gem install libyear-bundler

Usage

Run libyear-bundler in a directory with a Gemfile.

--libyears (default)

Measures the time between your dependencies' installed and newest versions, in years.

$ libyear-bundler Gemfile
     activesupport   4.2.7.1     2016-08-10     5.1.3     2017-08-03     1.0
              i18n     0.8.0     2017-01-31     0.8.6     2017-07-10     0.4
              json     1.8.6     2017-01-13     2.1.0     2017-04-18     0.3
          minitest    5.10.1     2016-12-02    5.10.3     2017-07-21     0.6
 minitest_to_rspec     0.6.0     2015-06-09     0.8.0     2017-01-02     1.6
       ruby_parser     3.8.4     2017-01-13    3.10.1     2017-07-21     0.5
    sexp_processor     4.8.0     2017-02-01    4.10.0     2017-07-17     0.5
       thread_safe     0.3.5     2015-03-11     0.3.6     2017-02-22     2.0
            tzinfo     1.2.2     2014-08-08     1.2.3     2017-03-25     2.6
System is 9.4 libyears behind

--releases

Measures the number of releases between your dependencies' installed and newest versions

$ libyear-bundler Gemfile --releases
                 activesupport        4.2.7.1     2016-08-10          5.1.3     2017-08-03        37
                          i18n          0.8.0     2017-01-31          0.8.6     2017-07-10         5
                          json          1.8.6     2017-01-13          2.1.0     2017-04-18        12
                      minitest         5.10.1     2016-12-02         5.10.3     2017-07-21         2
             minitest_to_rspec          0.6.0     2015-06-09          0.8.0     2017-01-02         5
                   ruby_parser          3.8.4     2017-01-13         3.10.1     2017-07-21         3
                sexp_processor          4.8.0     2017-02-01         4.10.0     2017-07-17         3
                   thread_safe          0.3.5     2015-03-11          0.3.6     2017-02-22         2
                        tzinfo          1.2.2     2014-08-08          1.2.3     2017-03-25         1
Total releases behind: 70

--versions

Measures the number of major, minor, and patch versions between your dependencies' installed and newest versions

$ libyear-bundler Gemfile --versions
                 activesupport        4.2.7.1     2016-08-10          5.1.3     2017-08-03      [1, 0, 0]
                          i18n          0.8.0     2017-01-31          0.8.6     2017-07-10      [0, 0, 6]
                          json          1.8.6     2017-01-13          2.1.0     2017-04-18      [1, 0, 0]
                      minitest         5.10.1     2016-12-02         5.10.3     2017-07-21      [0, 0, 2]
             minitest_to_rspec          0.6.0     2015-06-09          0.8.0     2017-01-02      [0, 2, 0]
                   ruby_parser          3.8.4     2017-01-13         3.10.1     2017-07-21      [0, 2, 0]
                sexp_processor          4.8.0     2017-02-01         4.10.0     2017-07-17      [0, 2, 0]
                   thread_safe          0.3.5     2015-03-11          0.3.6     2017-02-22      [0, 0, 1]
                        tzinfo          1.2.2     2014-08-08          1.2.3     2017-03-25      [0, 0, 1]
Major, minor, patch versions behind: 2, 6, 10

--all

Returns relevant data for each outdated gem, including 'libyears', 'releases', and 'versions' metrics

$ libyear-bundler Gemfile --all
                 activesupport        4.2.7.1     2016-08-10          5.1.3     2017-08-03       1.0        37      [1, 0, 0]
                          i18n          0.8.0     2017-01-31          0.8.6     2017-07-10       0.4         5      [0, 0, 6]
                          json          1.8.6     2017-01-13          2.1.0     2017-04-18       0.3        12      [1, 0, 0]
                      minitest         5.10.1     2016-12-02         5.10.3     2017-07-21       0.6         2      [0, 0, 2]
             minitest_to_rspec          0.6.0     2015-06-09          0.8.0     2017-01-02       1.6         5      [0, 2, 0]
                   ruby_parser          3.8.4     2017-01-13         3.10.1     2017-07-21       0.5         3      [0, 2, 0]
                sexp_processor          4.8.0     2017-02-01         4.10.0     2017-07-17       0.5         3      [0, 2, 0]
                   thread_safe          0.3.5     2015-03-11          0.3.6     2017-02-22       2.0         2      [0, 0, 1]
                        tzinfo          1.2.2     2014-08-08          1.2.3     2017-03-25       2.6         1      [0, 0, 1]
System is 9.4 libyears behind
Total releases behind: 70
Major, minor, patch versions behind: 2, 6, 10

--grand-total

With no other options, returns the grand-total of libyears. Used with other flags, returns the associated grand-total.

$ libyear-bundler Gemfile --grand-total
9.4

$ libyear-bundler Gemfile --releases --grand-total
70

$ libyear-bundler Gemfile --versions --grand-total
[2, 6, 10]

$ libyear-bundler Gemfile --all --grand-total
9.4
70
[2, 6, 10]

Contributing

See CONTRIBUTING.md

Acknowledgements

The inspiration for libyear comes from the technical report “Measuring Dependency Freshness in Software Systems”[1].


[1] J. Cox, E. Bouwers, M. van Eekelen and J. Visser, Measuring Dependency Freshness in Software Systems. In Proceedings of the 37th International Conference on Software Engineering (ICSE 2015), May 2015 https://ericbouwers.github.io/papers/icse15.pdf