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.
16 17 18 19 20 21 |
# File 'lib/gh-diff.rb', line 16 def initialize(repo, revision:'master', dir:nil) raise RepositoryNameError if repo.nil? || repo.empty? @repo = repo @revision = revision @dir = dir end |
Instance Attribute Details
#dir ⇒ Object
Returns the value of attribute dir.
15 16 17 |
# File 'lib/gh-diff.rb', line 15 def dir @dir end |
#repo ⇒ Object
Returns the value of attribute repo.
15 16 17 |
# File 'lib/gh-diff.rb', line 15 def repo @repo end |
#revision ⇒ Object
Returns the value of attribute revision.
15 16 17 |
# File 'lib/gh-diff.rb', line 15 def revision @revision end |
Instance Method Details
#diff(file1, file2 = file1, commentout: false, comment_tag: 'original', **opts) ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gh-diff.rb', line 29 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
40 41 42 43 44 45 46 47 48 |
# File 'lib/gh-diff.rb', line 40 def dir_diff(directory, repo:@repo, revision:@revision, dir:@dir) raise NoDirectoryError unless Dir.exist?(directory) 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
23 24 25 26 27 |
# File 'lib/gh-diff.rb', line 23 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
50 51 52 53 54 55 |
# File 'lib/gh-diff.rb', line 50 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 |