37 lines
		
	
	
		
			873 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			873 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								require "hbc/artifact/base"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Hbc::Artifact::AbstractFlightBlock < Hbc::Artifact::Base
							 | 
						||
| 
								 | 
							
								  def self.artifact_dsl_key
							 | 
						||
| 
								 | 
							
								    super.to_s.sub(%r{_block$}, "").to_sym
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def self.uninstall_artifact_dsl_key
							 | 
						||
| 
								 | 
							
								    artifact_dsl_key.to_s.prepend("uninstall_").to_sym
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def self.class_for_dsl_key(dsl_key)
							 | 
						||
| 
								 | 
							
								    Object.const_get("Hbc::DSL::#{dsl_key.to_s.split('_').collect(&:capitalize).join}")
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def self.me?(cask)
							 | 
						||
| 
								 | 
							
								    cask.artifacts[artifact_dsl_key].any? ||
							 | 
						||
| 
								 | 
							
								      cask.artifacts[uninstall_artifact_dsl_key].any?
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def install_phase
							 | 
						||
| 
								 | 
							
								    abstract_phase(self.class.artifact_dsl_key)
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def uninstall_phase
							 | 
						||
| 
								 | 
							
								    abstract_phase(self.class.uninstall_artifact_dsl_key)
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  private
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def abstract_phase(dsl_key)
							 | 
						||
| 
								 | 
							
								    @cask.artifacts[dsl_key].each do |block|
							 | 
						||
| 
								 | 
							
								      self.class.class_for_dsl_key(dsl_key).new(@cask).instance_eval(&block)
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |