class Worktree::Project

Public Class Methods

new(key) click to toggle source
# File lib/worktree/project.rb, line 12
def initialize(key)
  @key = key
end
resolve(branch, project_dir: nil) click to toggle source
# File lib/worktree/project.rb, line 5
def self.resolve(branch, project_dir: nil)
  project_key = project_key_by_branch(branch)
  # try to find project key by dir (cherry-pick or open case)
  project_key = project_key_by_dir(project_dir) if project_key.nil? && project_dir
  new(project_key)
end

Private Class Methods

project_key_by_branch(branch) click to toggle source
# File lib/worktree/project.rb, line 34
def self.project_key_by_branch(branch)
  project_keys = Worktree::Config.config['projects'].keys
  return nil if project_keys.empty?

  re = Regexp.new("^(#{project_keys.join('|')})\-")
  (branch.match(re) || [])[1]
end
project_key_by_dir(dir) click to toggle source
# File lib/worktree/project.rb, line 42
def self.project_key_by_dir(dir)
  project_keys = Worktree::Config.config['projects'].keys
  return nil if project_keys.empty?

  project_key = nil
  Worktree::Config.config['projects'].each do |key, options|
    if options['root'].chomp('/') == dir
      project_key = key
      break
    end
  end
  project_key
end

Public Instance Methods

copy_files() click to toggle source
# File lib/worktree/project.rb, line 16
def copy_files
  if @key
    Worktree::Config.config.dig('projects', @key, 'copy_files') || []
  else
    []
  end
end
root() click to toggle source
# File lib/worktree/project.rb, line 24
def root
  if @key
    Worktree::Config.config.dig('projects', @key, 'root').chomp('/')
  else
    Dir.pwd
  end
end