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