Class: GhDiff::Diff
- Inherits:
-
Object
- Object
- GhDiff::Diff
- Defined in:
- lib/gh-diff.rb
Instance Attribute Summary collapse
-
#dir ⇒ Object
Returns the value of attribute dir.
-
#repo ⇒ Object
Returns the value of attribute repo.
-
#revision ⇒ Object
Returns the value of attribute revision.
Instance Method Summary collapse
- #diff(file1, file2 = file1, commentout: false, comment_tag: 'original', **opts) ⇒ Object
- #dir_diff(directory, repo: @repo, revision: @revision, dir: @dir) ⇒ Object
- #get(file, repo: @repo, revision: @revision, dir: @dir, **opts) ⇒ Object
-
#initialize(repo, revision: 'master', dir: nil) ⇒ Diff
constructor
A new instance of Diff.
- #ref(ref = 'master', repo: @repo) ⇒ Object
Constructor Details
#initialize(repo, revision: 'master', dir: nil) ⇒ Diff
Returns a new instance of Diff.
14 15 16 17 18 |
# File 'lib/gh-diff.rb', line 14 def initialize(repo, revision:'master', dir:nil) @repo = repo @revision = revision @dir = dir end |
Instance Attribute Details
#dir ⇒ Object
Returns the value of attribute dir.
13 14 15 |
# File 'lib/gh-diff.rb', line 13 def dir @dir end |
#repo ⇒ Object
Returns the value of attribute repo.
13 14 15 |
# File 'lib/gh-diff.rb', line 13 def repo @repo end |
#revision ⇒ Object
Returns the value of attribute revision.
13 14 15 |
# File 'lib/gh-diff.rb', line 13 def revision @revision end |
Instance Method Details
#diff(file1, file2 = file1, commentout: false, comment_tag: 'original', **opts) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/gh-diff.rb', line 26 def diff(file1, file2=file1, commentout:false, comment_tag:'original', **opts) opts = {context:3}.merge(opts) is_dir = File.directory?(file1) file_pairs = build_file_pairs(file1, file2, dir:is_dir) diffs = parallel(file_pairs) { |file1, file2| _diff(file1, file2, commentout, comment_tag, opts) } diffs end |
#dir_diff(directory, repo: @repo, revision: @revision, dir: @dir) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/gh-diff.rb', line 37 def dir_diff(directory, repo:@repo, revision:@revision, dir:@dir) local_files = Dir.glob("#{directory}/*").map { |f| File.basename f } remote_path = build_path(dir, directory) remote_files = get_contents(repo, remote_path, revision).map(&:name) added = remote_files - local_files removed = local_files - remote_files [added, removed] end |
#get(file, repo: @repo, revision: @revision, dir: @dir, **opts) ⇒ Object
20 21 22 23 24 |
# File 'lib/gh-diff.rb', line 20 def get(file, repo:@repo, revision:@revision, dir:@dir, **opts) path = build_path(dir, file) f = get_contents(repo, path, revision) Base64.decode64(f.content) end |
#ref(ref = 'master', repo: @repo) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/gh-diff.rb', line 46 def ref(ref='master', repo:@repo) type = ref.match(/^v\d/) ? :tags : :heads get_ref(repo, "#{type}/#{ref}") rescue Octokit::NotFound {ref:'', object:{sha:ref}} end |