Mark24 2 éve
szülő
commit
14bd956073
2 módosított fájl, 172 hozzáadás és 170 törlés
  1. 170 0
      lib/core.rb
  2. 2 170
      mac.rb

+ 170 - 0
lib/core.rb

@@ -0,0 +1,170 @@
+class RimeDeployError < StandardError
+end
+
+module FontStylePatch
+  RESET_COLOR = "\e[0m" #重置所有颜色和样式
+  COLORS = {
+    black: "\e[30m", #黑色文本
+    red: "\e[31m", #红色文本
+    green: "\e[32m", #绿色文本
+    yellow: "\e[33m", #黄色文本
+    blue: "\e[34m", #蓝色文本
+    carmine: "\e[35m", #洋红色文本
+    cyan: "\e[36m", #青色文本
+    white: "\e[37m" #白色文本
+  }
+  COLORS.keys.each do |color_name|
+    define_method(color_name) do
+      return "#{COLORS[color_name]}#{self}#{RESET_COLOR}"
+    end
+  end
+end
+
+module StringPatch
+  def nature_case
+    self.gsub(/(.)([A-Z])/, '\1 \2').downcase.capitalize
+  end
+end
+
+class String
+  include FontStylePatch
+  include StringPatch
+end
+
+class ChooseSession
+  def initialize(items)
+    @items = items #[[intro, method]] auto index
+  end
+
+  def call
+    message = nil
+    choose = nil
+    while true
+      puts @title
+      puts "Choose mode:"
+      @items.each_with_index { |item, index| puts "[#{index + 1}] " + item[0] }
+      puts "Tips: input the index. e.g: 01"
+      puts "Message: #{message}".red if message
+      print ">>".green
+      choose_mode = gets
+      choose_index = choose_mode.strip
+      if choose_index =~ /\d+/ && choose_index.to_i <= @items.length
+        choose = @items[choose_index.to_i - 1]
+        break
+      else
+        message = "Wrong Index, try again."
+      end
+    end
+
+    choose[1].call
+  end
+end
+
+class Job
+  attr_accessor :status, :intro
+  def initialize
+    @status = :waiting # :waiting, :processing, :done, :fail
+    @intro = self.class.to_s.sub(/Job$/, "").nature_case
+  end
+
+  def call
+  end
+
+  def rollback
+  end
+end
+
+class JobGroup
+  def initialize(jobs)
+    @title = "=== Rime Deploy ===="
+    @queue = []
+    jobs.each { |job| @queue << job.new }
+
+    @current_index = 0
+  end
+
+  def print_progress
+    system("clear")
+    puts @title
+    @queue.each_with_index do |job, index|
+      job_id = "[%02d]" % (index + 1)
+      job_intro = job.intro.to_s.ljust(20).green
+      job_status = job.status
+      case job_status
+      when :waiting
+        job_status = job_status.to_s.white
+      when :processing
+        job_status = job_status.to_s.yellow
+      when :done
+        job_status = job_status.to_s.green
+      end
+      job_status = job_status.rjust(15)
+      puts "#{job_id} #{job_intro}\t#{job_status}"
+    end
+
+    if @current_index < @queue.length
+      puts "total: #{@queue.length}".ljust(10)
+      puts "Detail " + "-" * 20
+    end
+  end
+
+  def run_job_with_info_wrapper(current_job)
+    print_progress
+    begin
+      result = current_job.call
+      if result == :next
+        current_job.status = :done
+        @current_index += 1
+      else
+        # 失败处理
+        raise RimeDeployError
+      end
+      print_progress
+    rescue RimeDeployError
+      run_jobs_handle
+    end
+  end
+
+  def guidance
+    ChooseSession.new(
+      [
+        ["Auto mode: Suitable for first-time operation.", -> { run_jobs_auto }],
+        ["Handle mode: Decide to execute on your own.", -> { run_jobs_handle }]
+      ]
+    ).call
+  end
+  def call
+    guidance
+  end
+
+  def run_jobs_handle
+    handle_jobs = []
+    @queue.each_with_index do |job, index|
+      job_intro = job.intro.to_s.ljust(20).green
+      handle_jobs.push(["#{job_intro}", -> { run_job_with_info_wrapper(job) }])
+    end
+    ChooseSession.new(handle_jobs).call
+  end
+
+  def run_jobs_auto
+    print_progress
+    while @current_index < @queue.length
+      current_job = @queue[@current_index]
+      current_job.status = :processing
+      print_progress
+      begin
+        result = current_job.call
+        if result == :next
+          current_job.status = :done
+          @current_index += 1
+        else
+          # 失败处理
+          raise RimeDeployError
+        end
+        print_progress
+      rescue RimeDeployError
+        run_jobs_handle
+      end
+    end
+  end
+end

+ 2 - 170
mac.rb

@@ -1,77 +1,6 @@
-class RimeDeployError < StandardError
-end
-
-module FontStylePatch
-  RESET_COLOR = "\e[0m" #重置所有颜色和样式
-  COLORS = {
-    black: "\e[30m", #黑色文本
-    red: "\e[31m", #红色文本
-    green: "\e[32m", #绿色文本
-    yellow: "\e[33m", #黄色文本
-    blue: "\e[34m", #蓝色文本
-    carmine: "\e[35m", #洋红色文本
-    cyan: "\e[36m", #青色文本
-    white: "\e[37m" #白色文本
-  }
-  COLORS.keys.each do |color_name|
-    define_method(color_name) do
-      return "#{COLORS[color_name]}#{self}#{RESET_COLOR}"
-    end
-  end
-end
-
-module StringPatch
-  def nature_case
-    self.gsub(/(.)([A-Z])/, '\1 \2').downcase.capitalize
-  end
-end
-
-class String
-  include FontStylePatch
-  include StringPatch
-end
-
-class ChooseSession
-  def initialize(items)
-    @items = items #[[intro, method]] auto index
-  end
-
-  def call
-    message = nil
-    choose = nil
-    while true
-      puts @title
-      puts "Choose mode:"
-      @items.each_with_index { |item, index| puts "[#{index + 1}] " + item[0] }
-      puts "Tips: input the index. e.g: 01"
-      puts "Message: #{message}".red if message
-      print ">>".green
-      choose_mode = gets
-      choose_index = choose_mode.strip
-      if choose_index =~ /\d+/ && choose_index.to_i <= @items.length
-        choose = @items[choose_index.to_i - 1]
-        break
-      else
-        message = "Wrong Index, try again."
-      end
-    end
-
-    choose[1].call
-  end
-end
-
-class Job
-  attr_accessor :status, :intro
-  def initialize
-    @status = :waiting # :waiting, :processing, :done, :fail
-    @intro = self.class.to_s.sub(/Job$/, "").nature_case
-  end
-
-  def call
-  end
+require "./lib/core"
 
-  def rollback
-  end
+class MacOSJobGroup < JobGroup
 end
 
 class InstallRimeJob < Job
@@ -113,103 +42,6 @@ class CopyCustomConfigJob < Job
   end
 end
 
-class MacOSJobGroup
-  def initialize(jobs)
-    @title = "=== Rime Deploy ===="
-    @queue = []
-    jobs.each { |job| @queue << job.new }
-
-    @current_index = 0
-    @mode = :auto #:handle
-  end
-
-  def print_progress
-    system("clear")
-    puts @title
-    @queue.each_with_index do |job, index|
-      job_id = "[%02d]" % (index + 1)
-      job_intro = job.intro.to_s.ljust(20).green
-      job_status = job.status
-      case job_status
-      when :waiting
-        job_status = job_status.to_s.white
-      when :processing
-        job_status = job_status.to_s.yellow
-      when :done
-        job_status = job_status.to_s.green
-      end
-      job_status = job_status.rjust(15)
-      puts "#{job_id} #{job_intro}\t#{job_status}"
-    end
-
-    if @current_index < @queue.length
-      puts "total: #{@queue.length}".ljust(10)
-      puts "Detail " + "-" * 20
-    end
-  end
-
-  def run_job_with_info_wrapper(current_job)
-    print_progress
-    begin
-      result = current_job.call
-      if result == :next
-        current_job.status = :done
-        @current_index += 1
-      else
-        # 失败处理
-        raise RimeDeployError
-      end
-      print_progress
-    rescue RimeDeployError
-      run_jobs_handle
-    end
-  end
-
-  def guidance
-    ChooseSession.new(
-      [
-        ["Auto mode: Suitable for first-time operation.", -> { run_jobs_auto }],
-        ["Handle mode: Decide to execute on your own.", -> { run_jobs_handle }]
-      ]
-    ).call
-  end
-  def call
-    guidance
-  end
-
-  def run_jobs_handle
-    handle_jobs = []
-    @queue.each_with_index do |job, index|
-      job_intro = job.intro.to_s.ljust(20).green
-      handle_jobs.push(["#{job_intro}", -> { run_job_with_info_wrapper(job) }])
-    end
-    ChooseSession.new(handle_jobs).call
-  end
-
-  def run_jobs_auto
-    print_progress
-    while @current_index < @queue.length && @mode == :auto
-      current_job = @queue[@current_index]
-      current_job.status = :processing
-      print_progress
-      begin
-        result = current_job.call
-        if result == :next
-          current_job.status = :done
-          @current_index += 1
-        else
-          # 失败处理
-          raise RimeDeployError
-        end
-      rescue RimeDeployError
-        @mode = :handle
-      end
-
-      print_progress
-    end
-  end
-end
-
 MacOSJobGroup.new(
   [InstallRimeJob, BackupRimeConfigJob, CloneConfigJob, CopyCustomConfigJob]
 ).call