40 lines
		
	
	
		
			728 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			728 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require 'ceedling/plugin' | ||
|  | require 'ceedling/constants' | ||
|  | 
 | ||
|  | class Beep < Plugin | ||
|  | 
 | ||
|  |   attr_reader :config | ||
|  | 
 | ||
|  |   def setup | ||
|  |     @config = { | ||
|  |       :on_done  => ((defined? TOOLS_BEEP_ON_DONE)  ? TOOLS_BEEP_ON_DONE  : :bell  ), | ||
|  |       :on_error => ((defined? TOOLS_BEEP_ON_ERROR) ? TOOLS_BEEP_ON_ERROR : :bell  ), | ||
|  |     } | ||
|  |   end | ||
|  | 
 | ||
|  |   def post_build | ||
|  |     beep @config[:on_done] | ||
|  |   end | ||
|  | 
 | ||
|  |   def post_error | ||
|  |     beep @config[:on_error] | ||
|  |   end | ||
|  | 
 | ||
|  |   private | ||
|  | 
 | ||
|  |   def beep(method = :none) | ||
|  |     case method | ||
|  |     when :bell | ||
|  |       if (SystemWrapper.windows?) | ||
|  |         puts "echo '\007'" | ||
|  |       else | ||
|  |         puts "echo -ne '\007'" | ||
|  |       end | ||
|  |     when :speaker_test | ||
|  |       `speaker-test -t sine -f 1000 -l 1` | ||
|  |     else | ||
|  |       #do nothing with illegal or :none | ||
|  |     end | ||
|  |   end | ||
|  | end |