42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "hbc/artifact/base"
 | |
| 
 | |
| class Hbc::Artifact::Installer < Hbc::Artifact::Base
 | |
|   # TODO: for backward compatibility, removeme
 | |
|   def install
 | |
|     install_phase
 | |
|   end
 | |
| 
 | |
|   # TODO: for backward compatibility, removeme
 | |
|   def uninstall
 | |
|     uninstall_phase
 | |
|   end
 | |
| 
 | |
|   def install_phase
 | |
|     @cask.artifacts[self.class.artifact_dsl_key].each do |artifact|
 | |
|       if artifact.manual
 | |
|         puts <<-EOS.undent
 | |
|           To complete the installation of Cask #{@cask}, you must also
 | |
|           run the installer at
 | |
| 
 | |
|             '#{@cask.staged_path.join(artifact.manual)}'
 | |
| 
 | |
|         EOS
 | |
|       else
 | |
|         executable, script_arguments = self.class.read_script_arguments(artifact.script,
 | |
|                                                                         self.class.artifact_dsl_key.to_s,
 | |
|                                                                         { must_succeed: true, sudo: true },
 | |
|                                                                         print_stdout: true)
 | |
|         ohai "Running #{self.class.artifact_dsl_key} script #{executable}"
 | |
|         raise Hbc::CaskInvalidError.new(@cask, "#{self.class.artifact_dsl_key} missing executable") if executable.nil?
 | |
|         executable_path = @cask.staged_path.join(executable)
 | |
|         @command.run("/bin/chmod", args: ["--", "+x", executable_path]) if File.exist?(executable_path)
 | |
|         @command.run(executable_path, script_arguments)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def uninstall_phase
 | |
|     odebug "Nothing to do. The #{self.class.artifact_dsl_key} artifact has no uninstall phase."
 | |
|   end
 | |
| end
 | 
