Class: TuyaCIMonitor
- Inherits:
-
Object
- Object
- TuyaCIMonitor
- Defined in:
- lib/tuya/ci/DSL/tuya_ci_monitor.rb
Constant Summary collapse
- ALWAYS_OPEN =
1
- ALWAYS_CLOSE =
2
- AUTO =
3
Instance Attribute Summary collapse
-
#methods ⇒ Object
Returns the value of attribute methods.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #ci(*args, &block) ⇒ Object
- #dsl(process, args, &block) ⇒ Object
- #exe ⇒ Object
- #exe_action(action, options, key) ⇒ Object
- #exe_error(process, error, position, options) ⇒ Object
-
#initialize ⇒ TuyaCIMonitor
constructor
A new instance of TuyaCIMonitor.
- #method_missing(m, *args, &block) ⇒ Object
- #strategy_always_close ⇒ Object
- #strategy_always_open ⇒ Object
- #strategy_auto ⇒ Object
- #trigger_call(method, action, options, key, strategy, strategy_key) ⇒ Object
- #tuya_sh(shell) ⇒ Object
- #tuya_sh_from_git(shell, git) ⇒ Object
- #tuya_stop_build(message) ⇒ Object
Constructor Details
#initialize ⇒ TuyaCIMonitor
Returns a new instance of TuyaCIMonitor.
8 9 10 11 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 8 def initialize # puts 'in initialize' @methods = {} end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
119 120 121 122 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 119 def method_missing(m, *args, &block) # puts "in method_missing method is: #{m}, args is: #{args}" dsl m, args, &block end |
Instance Attribute Details
#methods ⇒ Object
Returns the value of attribute methods.
2 3 4 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 2 def methods @methods end |
#name ⇒ Object
Returns the value of attribute name.
2 3 4 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 2 def name @name end |
Instance Method Details
#ci(*args, &block) ⇒ Object
100 101 102 103 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 100 def ci(*args, &block) # puts "in ci args is: #{args}" dsl 'root', args, &block end |
#dsl(process, args, &block) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 105 def dsl(process, args, &block) # puts "in dsl process is: #{process} args is: #{args}" if block_given? if process # puts "process: #{process}" if process == 'root' instance_eval &block else @methods[process] = block end end end end |
#exe ⇒ Object
93 94 95 96 97 98 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 93 def exe @methods.each_key do |key| l = @methods[key] l.call end end |
#exe_action(action, options, key) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 13 def exe_action(action, , key) method = @methods[action.to_sym] begin strategy_method = @methods[:strategy] strategy, strategy_key = strategy_method.call if strategy_method unless strategy.class == Fixnum strategy = ALWAYS_OPEN end trigger_call method, action, , key, strategy, strategy_key rescue Exception => e if e.class == TuyaCIMonitorStopError puts "Trigger Exception cached, tuya_stop_build has been used. the stop message is: #{$!}".red raise $! else puts "Trigger Exception cached, you can puts detail in your error method".red exe_error action, $!, $@, end ensure end end |
#exe_error(process, error, position, options) ⇒ Object
87 88 89 90 91 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 87 def exe_error(process, error, position, ) method = @methods['error'.to_sym] # require 'tuya/ci/DSL/exe/dsl_exe' method.call error, position, , process if method end |
#strategy_always_close ⇒ Object
63 64 65 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 63 def strategy_always_close ALWAYS_CLOSE end |
#strategy_always_open ⇒ Object
59 60 61 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 59 def strategy_always_open ALWAYS_OPEN end |
#strategy_auto ⇒ Object
67 68 69 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 67 def strategy_auto AUTO end |
#trigger_call(method, action, options, key, strategy, strategy_key) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 36 def trigger_call(method, action, , key, strategy, strategy_key) call_strategy = false if strategy == ALWAYS_CLOSE call_strategy = false elsif strategy == ALWAYS_OPEN call_strategy = true elsif strategy == AUTO monitors = TuyaCIDSL::TuyaDSL.instance if monitors.strategy_auto.has_key? strategy_key call_strategy = true [:strategy] = monitors.strategy_auto[strategy_key] end end if call_strategy if method puts "Trigger '#{action}' in '#{key}'".green method.call end end end |
#tuya_sh(shell) ⇒ Object
76 77 78 79 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 76 def tuya_sh(shell) dsl = TuyaCIDSL::DSLExecute.new shell dsl.execute end |
#tuya_sh_from_git(shell, git) ⇒ Object
81 82 83 84 85 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 81 def tuya_sh_from_git(shell, git) dsl = TuyaCIDSL::DSLExecute.new shell dsl.download git dsl.execute end |
#tuya_stop_build(message) ⇒ Object
72 73 74 |
# File 'lib/tuya/ci/DSL/tuya_ci_monitor.rb', line 72 def tuya_stop_build() raise TuyaCIMonitorStopError, end |