class GitCompound::Worker::LocalChangesGuard

Worker that defends local changes in component repositories

Public Class Methods

new(lock) click to toggle source
# File lib/git_compound/worker/local_changes_guard.rb, line 7
def initialize(lock)
  @lock = lock
end

Public Instance Methods

visit_component(component) click to toggle source
# File lib/git_compound/worker/local_changes_guard.rb, line 11
def visit_component(component)
  return unless component.exists?

  @component  = component
  @repository = component.repository

  check_uncommited_changes!
  check_untracked_files!
end

Private Instance Methods

check_uncommited_changes!() click to toggle source
# File lib/git_compound/worker/local_changes_guard.rb, line 23
def check_uncommited_changes!
  return unless @repository.uncommited_changes?

  raise LocalChangesError,
        "Component `#{@component.name}` contains uncommited changes !"
end
check_untracked_files!() click to toggle source
# File lib/git_compound/worker/local_changes_guard.rb, line 30
def check_untracked_files!
  return unless @repository.untracked_files?(subcomponents_dirs)

  raise LocalChangesError,
        "Component `#{@component.name}` contains untracked files !"
end
subcomponents_dirs() click to toggle source
# File lib/git_compound/worker/local_changes_guard.rb, line 37
def subcomponents_dirs
  locked_dirs = @lock.components.map { |locked| "#{locked.path}".chop }
  component_subdirs = locked_dirs.select do |locked_dir|
    locked_dir.start_with?(@component.path)
  end

  component_subdirs.collect do |subdir|
    subdir.sub(/^#{@component.path}/, '').split(File::SEPARATOR).first
  end
end