Coder Social home page Coder Social logo

bigbigdoudou / gems_bond Goto Github PK

View Code? Open in Web Editor NEW
10.0 2.0 1.0 403 KB

Get information about your project gems. When was the last commit? How many contributors on it? And many more!

License: MIT License

Ruby 90.03% Shell 0.26% HTML 9.71%
gems

gems_bond's Introduction

GemsBond

GemsBond inspects your Gemfile and calculates a score for each gem depending on its activity and popularity.

Installation

Add this line to your application's Gemfile:

gem 'gems_bond'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install gems_bond

Usage

Spy one

Get information about a given gem. The result is display in the terminal.

bundle exec rake gems_bond:spy:one rails

This will output:

-------- RAILS INFO --------

Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.

- url: https://github.com/rails/rails/tree/v6.1.3
- version: 5.2.0 (27 behind 6.1.3)
- counts: 270 222 380 downloads | 19 185 forks | 47 738 stars | 375 contributors
- activity: 21 days since last version | 0 days since last commit

You can spy any gem by its name, even if it is not in your project dependencies.

Spy all

Get information and scoring for all of the current project gems.

First, you need to get a GithHub token since the gem fetches data from the GitHub API.

When logged in on GitHub, go in https://github.com/settings/tokens and generate a new token.

A readonly token is enough, you can leave all checkbox unchecked.

Add the token in your config:

# config/initializers/gems_bond.rb

GemsBond.configure do |config|
  config.github_token = 'my_github_readonly_token'
end

Then run the task:

bundle exec rake gems_bond:spy:all

You can provide the token at this moment if it is not set in configuration or if you want to override it:

bundle exec rake gems_bond:spy:all GITHUB_TOKEN=my_github_readonly_token

The output can then be read in gems_bond/spy.csv and gems_bond/spy.html.

example

Development

After checking out the repo, run bin/setup to install dependencies.

Add a github token in the .env.test file (GITHUB_TOKEN=<token>) then run rspec, or run rspec --tag ~@api to skip tests calling RubyGems and GitHub APIs.

You can also run bin/console for an interactive prompt that will allow you to experiment.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gems_bond.

License

The gem is available as open source under the terms of the MIT License.

gems_bond's People

Contributors

bigbigdoudou avatar sunny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

sunny

gems_bond's Issues

Add configuration options

GemsBond.configure do |config|
  config.github_token = ENV["TOKEN"]

  # formats to output
  exports = %i[html csv yml]

  # data to output, helps to focus on needed data and reduce spying time
  data = %i[
    contributors_count days_since_last_commit days_since_last_version
    downloads_count forks_count last_commit_date last_version
    last_version_date open_issues_count source_code_uri stars_count versions
  ]

  # if true, scores are calculated
  scores = true
end

So it is simple to make a very light configuration in order to focus on essential, for example:

GemsBond.configure do |config|
  config.github_token = ENV["TOKEN"]

  exports = [:csv]
  data    = [:days_since_last_commit, :days_since_last_version]
  scores  = false
end

Allow task to run without GitHub token

The task should run without GitHub token. The problem is that the number of requests to GitHub without being logged is limited (unknown limitation ?!) so if there is too many gems to explore, we can only rely on RubyGems which is very poor (number of downloads + last version).

Improve scoring system

Scoring system is pretty basic and could be improved so low scored gems are really problematic gems. Maybe find a better function than a sigmoid.

Add yard documentation for public methods

Add a documentation for each public methods.

Follow this order:

# Does something
# @param int [Integer] number of...
# @param bool [Boolean] should ...?
# @return [String]
# @raise [ArgumentError] if `int` is negative
# @example
#   my_method(42, true) #=> "Hello World"
# @note be vigilant about...
def hello_world(int, bool)
end

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.