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 |