80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "devops-client/handler/handler"
 | |
| require "devops-client/options/script_options"
 | |
| require "devops-client/output/script"
 | |
| 
 | |
| class Script < Handler
 | |
| 
 | |
|   output_with Output::Script
 | |
| 
 | |
|   def initialize(host, def_options={})
 | |
|     @host, @options = host, def_options
 | |
|     @options_parser = ScriptOptions.new(ARGV, def_options)
 | |
|   end
 | |
| 
 | |
|   def handle
 | |
|     current_command = ARGV[1].to_sym
 | |
|     @options, @args = @options_parser.parse_options_for!(current_command)
 | |
|     case current_command
 | |
|     when :list
 | |
|       list_handler
 | |
|       output
 | |
|     when :delete
 | |
|       delete_handler
 | |
|     when :update
 | |
|       update_handler
 | |
|     when :command
 | |
|       command_handler
 | |
|     when :run
 | |
|       run_handler
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def command_handler
 | |
|     r = inspect_parameters @options_parser.command_params, @args[2], @args[3]
 | |
|     unless r.nil?
 | |
|       @options_parser.invalid_command
 | |
|       abort(r)
 | |
|     end
 | |
|     post_chunk_body "/script/command/#{@args[2]}", @args[3], false
 | |
|   end
 | |
| 
 | |
|   def list_handler
 | |
|     @list = get("/scripts")
 | |
|   end
 | |
| 
 | |
|   def add_handler
 | |
|     r = inspect_parameters @options_parser.add_params, @args[2], @args[3]
 | |
|     unless r.nil?
 | |
|       @options_parser.invalid_add_command
 | |
|       abort(r)
 | |
|     end
 | |
|     abort("File '#{@args[3]}' does not exist") unless File.exists?(@args[3])
 | |
|     put_body "/script/#{@args[2]}", File.read(@args[3])
 | |
|   end
 | |
| 
 | |
|   def delete_handler
 | |
|     r = inspect_parameters @options_parser.delete_params, @args[2]
 | |
|     unless r.nil?
 | |
|       @options_parser.invalid_delete_command
 | |
|       abort(r)
 | |
|     end
 | |
|     if question(I18n.t("handler.script.question.delete", :name => @args[2]))
 | |
|       delete "/script/#{@args[2]}"
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def run_handler
 | |
|     r = inspect_parameters @options_parser.run_params, @args[2], @args[3]
 | |
|     unless r.nil?
 | |
|       @options_parser.invalid_run_command
 | |
|       abort(r)
 | |
|     end
 | |
|     q = {
 | |
|       :nodes => @args[3..-1]
 | |
|     }
 | |
|     q[:params] = self.options[:params] unless self.options[:params].nil?
 | |
|     post_chunk "/script/run/#{@args[2]}", q
 | |
|   end
 | |
| 
 | |
| end
 | 
