| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- module RimeDeploy
- class TaskManager
- def initialize
- @osname = nil
- @proxy = nil
- @queue = nil
- @current_job = nil
- check_os
- end
- def call
- require "./lib/os/#{@osname}.job.rb"
- job_group_klass = Object.const_get("#{@osname.capitalize}Jobs")
- @proxy = job_group_klass.new
- @queue = @proxy.queue
- while @queue.size > 0
- @current_job = proxy.queue.pop
- job.result = job.exe
- dispatch_job(result)
- end
- end
- def dispatch_job
- if result == false
- # 任务失败
- puts "The job meets errors. What next do you want?"
- puts "Enter first character : c(ontinue) /e(xit)/ r(etry) /s(kip)"
- next_step = gets
- next_step.strip!
- case next_step.strip!
- when "c"
- puts "contine..."
- when "e"
- puts ""
- puts "Bye~"
- exit 0
- when "r"
- result = @current_job.rollback
- if result
- @queue.push(@current_job)
- @current_job = nil
- else
- puts "#{@current_job.class.to_s} rollback failed."
- end
- end
- end
- end
- private
- def check_os
- case RUBY_PLATFORM
- when /darwin/
- @osname = "mac"
- when /linux/
- @osname = "linux"
- when /unix/
- @osname = "unix"
- when /mswin|win32|mingw|cygwin/
- @osname = "win"
- call_exit
- else
- call_exit
- end
- end
- def call_exit
- puts "We don't support this system."
- end
- end
- end
|