Class: ChefCLI::Policyfile::ComparisonBase::Git
- Inherits:
 - 
      Object
      
        
- Object
 - ChefCLI::Policyfile::ComparisonBase::Git
 
 
- Defined in:
 - lib/chef-cli/policyfile/comparison_base.rb
 
Instance Attribute Summary collapse
- 
  
    
      #policyfile_lock_relpath  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute policyfile_lock_relpath.
 - 
  
    
      #ref  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute ref.
 
Instance Method Summary collapse
- #git_cmd ⇒ Object
 - #git_cmd_string ⇒ Object
 - 
  
    
      #initialize(ref, policyfile_lock_relpath)  ⇒ Git 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Git.
 - #lock ⇒ Object
 - #name ⇒ Object
 
Constructor Details
#initialize(ref, policyfile_lock_relpath) ⇒ Git
Returns a new instance of Git.
      58 59 60 61  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 58 def initialize(ref, policyfile_lock_relpath) @ref = ref @policyfile_lock_relpath = policyfile_lock_relpath end  | 
  
Instance Attribute Details
#policyfile_lock_relpath ⇒ Object (readonly)
Returns the value of attribute policyfile_lock_relpath.
      56 57 58  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 56 def policyfile_lock_relpath @policyfile_lock_relpath end  | 
  
#ref ⇒ Object (readonly)
Returns the value of attribute ref.
      55 56 57  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 55 def ref @ref end  | 
  
Instance Method Details
#git_cmd ⇒ Object
      77 78 79  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 77 def git_cmd @git_cmd ||= Mixlib::ShellOut.new(git_cmd_string) end  | 
  
#git_cmd_string ⇒ Object
      81 82 83 84 85 86 87 88 89 90 91 92  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 81 def git_cmd_string # Git is a little picky about how we specify the paths, but it looks # like we don't need to worry about the relative path to the root of # the repo if we give git a leading dot: # # git show 6644e6cb2ade90b8aff2ebb44728958fbc939ebf:zero.rb # fatal: Path 'etc/zero.rb' exists, but not 'zero.rb'. # Did you mean '6644e6cb2ade90b8aff2ebb44728958fbc939ebf:etc/zero.rb' aka '6644e6cb2ade90b8aff2ebb44728958fbc939ebf:./zero.rb'? # git show 6644e6cb2ade90b8aff2ebb44728958fbc939ebf:./zero.rb # (works) "git show #{ref}:./#{policyfile_lock_relpath}" end  | 
  
#lock ⇒ Object
      67 68 69 70 71 72 73 74 75  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 67 def lock git_cmd.run_command git_cmd.error! FFI_Yajl::Parser.parse(git_cmd.stdout) rescue Mixlib::ShellOut::ShellCommandFailed raise GitError, "Git command `#{git_cmd_string}` failed with message: #{git_cmd.stderr.chomp}" rescue FFI_Yajl::ParseError => e raise MalformedLockfile, "Invalid JSON in lockfile at git ref '#{ref}' at path '#{policyfile_lock_relpath}':\n #{e.}" end  | 
  
#name ⇒ Object
      63 64 65  | 
    
      # File 'lib/chef-cli/policyfile/comparison_base.rb', line 63 def name "git:#{ref}" end  |