Class: GitCommitSizeScraper::Scraper
- Inherits:
-
Object
- Object
- GitCommitSizeScraper::Scraper
- Defined in:
- lib/git_commit_size_scraper/scraper.rb
Instance Attribute Summary collapse
-
#commits ⇒ Object
readonly
Returns the value of attribute commits.
-
#list ⇒ Object
readonly
Returns the value of attribute list.
Instance Method Summary collapse
- #blobs_in_commit(treeish) ⇒ Object
- #bytes_in_commit(treeish) ⇒ Object
-
#initialize(*args) ⇒ Scraper
constructor
A new instance of Scraper.
- #size_in_bytes(obj) ⇒ Object
- #walk ⇒ Object
Constructor Details
#initialize(*args) ⇒ Scraper
Returns a new instance of Scraper.
5 6 7 8 9 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 5 def initialize *args args.flatten! @commits = `git rev-list --all #{args.join " "}`.split @list = {} end |
Instance Attribute Details
#commits ⇒ Object (readonly)
Returns the value of attribute commits.
3 4 5 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 3 def commits @commits end |
#list ⇒ Object (readonly)
Returns the value of attribute list.
3 4 5 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 3 def list @list end |
Instance Method Details
#blobs_in_commit(treeish) ⇒ Object
11 12 13 14 15 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 11 def blobs_in_commit treeish `git diff-tree -r -c -M -C --no-commit-id #{treeish}`. split("\n"). map { |blob| blob.split[3] } end |
#bytes_in_commit(treeish) ⇒ Object
22 23 24 25 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 22 def bytes_in_commit treeish blobs = blobs_in_commit treeish total = blobs.map { |blob| size_in_bytes blob }.reduce(:+) end |
#size_in_bytes(obj) ⇒ Object
17 18 19 20 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 17 def size_in_bytes obj return 0 if obj =~ /\A0+\z/ `git cat-file -s #{obj}`.to_i end |
#walk ⇒ Object
27 28 29 |
# File 'lib/git_commit_size_scraper/scraper.rb', line 27 def walk @commits.map { |c| @list[c] = bytes_in_commit c } end |