Sha256: 93d98d90e3dde7e30ed4f724728fd573d2a75e59f798d7ba348b917c6dbfd23b

Contents?: true

Size: 1.24 KB

Versions: 68

Compression:

Stored size: 1.24 KB

Contents

require 'pathname'

# Manage `$GIT_DIR/objects/info/alternates`
#
# @see man gitrepository-layout(5)
class R10K::Git::Alternates

  # @attribute [r] file
  #   @return [Pathname] The alternates file
  attr_reader :file

  # @param git_dir [Pathname] The path to the git repository
  def initialize(git_dir)
    @file = git_dir + File.join('objects', 'info', 'alternates')
    @entries = []
  end

  def add(path)
    write(to_a << path)
  end
  alias << add

  # Conditionally add path to the alternates file
  #
  # @param path [String] The file path to add to the file if not already present
  # @return [true, false] If the entry was added.
  def add?(path)
    paths = read()

    add_entry = !paths.include?(path)

    if add_entry
      paths << path
      write(paths)
    end

    add_entry
  end

  def include?(path)
    to_a.include?(path)
  end

  def write(entries)
    if ! @file.parent.directory?
      raise R10K::Git::GitError, _("Cannot write %{file}; parent directory does not exist") % {file: @file}
    end
    @file.open("w") do |fh|
      entries.each do |entry|
        fh.puts(entry)
      end
    end
  end

  def read
    entries = []
    if @file.file?
      entries = @file.readlines.map(&:chomp)
    end
    entries
  end
  alias to_a read
end

Version data entries

68 entries across 68 versions & 2 rubygems

Version Path
r10k-5.0.0 lib/r10k/git/alternates.rb
r10k-4.1.0 lib/r10k/git/alternates.rb
r10k-4.0.2 lib/r10k/git/alternates.rb
r10k-4.0.1 lib/r10k/git/alternates.rb
r10k-4.0.0 lib/r10k/git/alternates.rb
r10k-4.0.0.pre lib/r10k/git/alternates.rb
r10k-3.16.0 lib/r10k/git/alternates.rb
r10k-3.15.4 lib/r10k/git/alternates.rb
r10k-3.15.3 lib/r10k/git/alternates.rb
r10k-3.15.2 lib/r10k/git/alternates.rb
r10k-3.15.1 lib/r10k/git/alternates.rb
r10k-3.15.0 lib/r10k/git/alternates.rb
akerl-r10k-3.14.2.1 lib/r10k/git/alternates.rb
r10k-3.14.2 lib/r10k/git/alternates.rb
r10k-3.14.1 lib/r10k/git/alternates.rb
r10k-3.14.0 lib/r10k/git/alternates.rb
r10k-3.13.0 lib/r10k/git/alternates.rb
r10k-3.12.1 lib/r10k/git/alternates.rb
r10k-3.12.0 lib/r10k/git/alternates.rb
r10k-3.11.0 lib/r10k/git/alternates.rb