Class: Toys::Utils::GitCache::RepoInfo

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/toys/utils/git_cache.rb

Overview

Information about a remote git repository in the cache.

This object is returned from #repo_info.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#base_dir ⇒ String (readonly)

The base directory of this git repository's cache entry. This directory contains all cached data related to this repo. Deleting it effectively removes the repo from the cache.

Returns:

  • (String)


638
639
640
# File 'lib/toys/utils/git_cache.rb', line 638

def base_dir
  @base_dir
end

#last_accessed ⇒ Time? (readonly)

The last time any cached data from this repo was accessed, or nil if the information is unavailable.

Returns:

  • (Time, nil)


653
654
655
# File 'lib/toys/utils/git_cache.rb', line 653

def last_accessed
  @last_accessed
end

#remote ⇒ String (readonly)

The git remote, usually a file system path or URL.

Returns:

  • (String)


645
646
647
# File 'lib/toys/utils/git_cache.rb', line 645

def remote
  @remote
end

Instance Method Details

#<=>(other) ⇒ Integer

Comparison function

Parameters:

Returns:

  • (Integer)


708
709
710
# File 'lib/toys/utils/git_cache.rb', line 708

def <=>(other)
  remote <=> other.remote
end

#refs(ref: nil) ⇒ Array<RefInfo>

A list of git refs (branches, tags, shas) that have been accessed from this repo.

Parameters:

  • ref (String, nil) (defaults to: nil) —

    If provided, return only entries matching this ref name. If omitted, return all entries.

Returns:



663
664
665
666
# File 'lib/toys/utils/git_cache.rb', line 663

def refs(ref: nil)
  return @refs.dup if ref.nil?
  @refs.find_all { |elem| elem.ref == ref }
end

#sources(sha: nil, git_path: nil) ⇒ Array<SourceInfo>

A list of shared source files and directories accessed for this repo.

Parameters:

  • sha (String, nil) (defaults to: nil) —

    If provided, return only entries matching this SHA. If omitted, entries for all SHAs are included.

  • git_path (String, nil) (defaults to: nil) —

    If provided, return only entries matching this git path. If omitted, entries for all paths are included.

Returns:



678
679
680
681
682
683
684
# File 'lib/toys/utils/git_cache.rb', line 678

def sources(sha: nil, git_path: nil)
  return @sources.dup if sha.nil? && git_path.nil?
  @sources.find_all do |elem|
    (sha.nil? || elem.sha == sha) &&
      (git_path.nil? || elem.git_path == git_path)
  end
end

#to_h ⇒ Hash

Convert this RepoInfo to a hash suitable for JSON output

Returns:

  • (Hash)


691
692
693
694
695
696
697
698
699
700
# File 'lib/toys/utils/git_cache.rb', line 691

def to_h
  result = {
    "remote" => remote,
    "base_dir" => base_dir,
  }
  result["last_accessed"] = last_accessed.to_i if last_accessed
  result["refs"] = refs.map(&:to_h)
  result["sources"] = sources.map(&:to_h)
  result
end