installer.rb 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/env ruby
  2. require "./lib/core"
  3. require "./lib/config"
  4. module OSPatch
  5. def check_linux_debian?
  6. return File.exist?("/etc/debian_version")
  7. end
  8. def detect_linux_debian
  9. return File.exist?("/etc/debian_version")
  10. end
  11. def detect_linux_ubuntu
  12. os_release_file = "/etc/os-release"
  13. if File.exist?(os_release_file)
  14. os_release = File.read(os_release_file)
  15. return true if os_release.include?("ubuntu")
  16. end
  17. return false
  18. end
  19. def check_os
  20. case RUBY_PLATFORM.downcase
  21. when /darwin/
  22. @osname = "MacOS"
  23. when /linux/
  24. @osname = "DebianLinux" if detect_linux_debian
  25. @osname = "UbuntuLinux" if detect_linux_ubuntu
  26. when /mswin|win32|mingw|cygwin/
  27. @osname = "win"
  28. not_support_exit
  29. else
  30. not_support_exit
  31. end
  32. end
  33. end
  34. module RimeDeploy
  35. class Installer
  36. include OSPatch
  37. def initialize
  38. @osname = nil
  39. check_os
  40. dispatch
  41. run
  42. end
  43. def not_support_exit
  44. puts "Not support this system. Bye~"
  45. exit 0
  46. end
  47. def dispatch
  48. require "./os/#{@osname}"
  49. end
  50. def run
  51. os_prefix = @osname
  52. code = <<-CODE
  53. class #{os_prefix}JobGroup < JobGroup
  54. end
  55. mod = #{os_prefix}JobGroup.new(#{os_prefix}::Jobs, #{os_prefix}::FinishedHook)
  56. mod.call
  57. CODE
  58. instance_eval(code)
  59. end
  60. end
  61. end
  62. RimeDeploy::Installer.new