Hello,
I have updated the hubba gem [1] - a little github api helper for
(auto-)generating statistics reports (includes summary, stars,
timeline, updates).
Get started in 1-2-3 steps. From the readme:
Step 0: Secrets, Secrets, Secrets - Your Authentication Token
Note: Set your GitHub env credentials (personal access token preferred) e.g.
set HUBBA_TOKEN=abcdef0123456789
# - or -
set HUBBA_USER=you
set HUBBA_PASSWORD=topsecret
Step 1: Get a list of all your repos
Use the GitHub API to get a list of all your repos:
require 'hubba'
h = Hubba.reposet( 'geraldb' )
pp h
File.open( './repos.yml', 'w' ) { |f| f.write( h.to_yaml ) }
resulting in:
geraldb (11):
- austria
- catalog
- chelitas
- geraldb.github.io
- logos
- sandbox
- talks
- web-proxy-win
- webcomponents
- webpub-reader
- wine.db.tools
openfootball (41):
- africa-cup
- austria
- club-world-cup
- clubs
- confed-cup
- copa-america
- copa-libertadores
- copa-sudamericana
- deutschland
# ...
Note: If you have more than one account (e.g. an extra robot account or such)
you can add them along e.g.
h = Hubba.reposet( 'geraldb', 'yorobot' )
pp h
Note: By default all your repos from organizations get auto-included -
use the `orgs: false` option to turn off auto-inclusion.
Note: By default all (personal) repos, that is, repos in your primary (first)
account that are forks get auto-excluded.
Step 2: Update repo statistics (daily / weekly / monthly)
Use `update_stats` to to get the latest commit, star count and more
for all your repos listed in `./repos.yml` via the GitHub API:
Hubba.update_stats( './repos.yml' )
Note: By default the datafiles (one per repo) get stored in the
`./data` directory.
Step 3: Generate some statistics / reports
Hubba has four built-in reports (for now):
- `ReportSummary` - A-Z list of your repos by orgs with stars and size in kb
- `ReportStars` - your repos ranked by stars
- `ReportTimeline` - your repos in reverse chronological order by creation
- `ReportUpdates` - your repos in reverse chronological order by last commit
If you only generate a single report, use:
report = Hubba::ReportSummary.new( './repos.yml' )
report.save( './SUMMARY.md' )
If you generate more reports, (re)use the in-memory statistics cache / object:
stats = Hubba.stats( './repos.yml' )
report = Hubba::ReportSummary.new( stats )
report.save( './SUMMARY.md' )
report = Hubba::ReportStars.new( stats )
report.save( './STARS.md' )
report = Hubba::ReportTimeline.new( stats )
report.save( './TIMELINE.md' )
report = Hubba::ReportUpdates.new( stats )
report.save( './UPDATES.md' )
That's it for now. For some real-world examples, see the reports in
the backup repo [2a,2b,2c,2d].
Happy programming with ruby. Cheers. Prost.
[1] https://github.com/rubycoco/git/tree/master/hubba
[2a] https://github.com/yorobot/backup/blob/master/SUMMARY.md
[2b] https://github.com/yorobot/backup/blob/master/STARS.md
[2c] https://github.com/yorobot/backup/blob/master/TIMELINE.md
[2d] https://github.com/yorobot/backup/blob/master/UPDATES.md