| 
									
										
										
										
											2016-03-25 14:50:22 +03:00
										 |  |  | module Devops | 
					
						
							|  |  |  |   module Helpers | 
					
						
							|  |  |  |     class ResultObject | 
					
						
							| 
									
										
										
										
											2016-03-28 00:16:11 +03:00
										 |  |  |       attr_reader :code, :reason | 
					
						
							| 
									
										
										
										
											2016-03-25 14:50:22 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |       def initialize(code) | 
					
						
							|  |  |  |         @code = code | 
					
						
							| 
									
										
										
										
											2016-03-28 00:16:11 +03:00
										 |  |  |         @reason = self.class.result_codes.key(@code) || :unknown_error | 
					
						
							| 
									
										
										
										
											2016-03-25 14:50:22 +03:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       def ok? | 
					
						
							|  |  |  |         @code == 0
 | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-27 23:37:57 +03:00
										 |  |  |       def failed? | 
					
						
							|  |  |  |         !ok? | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       class << self | 
					
						
							|  |  |  |         def result_codes | 
					
						
							|  |  |  |           @result_codes || {ok: 0} | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2016-03-25 14:50:22 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-27 23:37:57 +03:00
										 |  |  |         def code_of_reason(reason) | 
					
						
							|  |  |  |           result_codes.fetch(reason) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def from_reason(reason) | 
					
						
							|  |  |  |           new(code_of_reason(reason)) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # defines methods like :bootstrap_error? | 
					
						
							|  |  |  |         def set_result_codes(new_result_codes) | 
					
						
							| 
									
										
										
										
											2016-04-15 11:08:20 +03:00
										 |  |  |           @result_codes = new_result_codes.merge(ok: 0) | 
					
						
							| 
									
										
										
										
											2016-03-27 23:37:57 +03:00
										 |  |  |           @result_codes.each do |pretendent_reason, pretendent_code| | 
					
						
							|  |  |  |             define_method "#{pretendent_reason}?" do | 
					
						
							|  |  |  |               code == pretendent_code | 
					
						
							|  |  |  |             end | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2016-03-25 14:50:22 +03:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-27 23:37:57 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-25 14:50:22 +03:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |