Sha256: 6d43e086bcfa0f2cff3ee0a787d428c1bf9b15791114abf1e50ac982f8f5fa14

Contents?: true

Size: 1.4 KB

Versions: 10

Compression:

Stored size: 1.4 KB

Contents

class KuberKit::UI::Simple
  class Task
    def initialize(title, &callback)
      @title = title
      @callback = callback
    end

    def execute
      if @thread
        raise "Already started execution of task '#{title}'"
      end

      @thread = Thread.new do
        puts "Start task: #{@title.green}"
        @callback.call(self)
        puts "Finish task: #{@title.green}"
      end
    end

    def wait
      if !@thread
        raise "Task '#{title}' not started"
      end
      @thread.join
    end
    
    def update_title(title)
      @title = title
    end
  end

  class TaskGroup
    def add(task_title, &task_block)
      task = Task.new(task_title, &task_block)
      task.execute
      add_task(task)
    end

    def add_task(task)
      @tasks ||= []
      @tasks << task
    end

    def wait
      @tasks.each(&:wait)
    end
  end

  def create_task_group
    TaskGroup.new
  end

  def create_task(title, &block)
    task = Task.new(title, &block)
    task.execute
    task.wait
  end

  def print_info(title, text)
    print_text(title, text, color: String::Colors::BLUE)
  end

  def print_error(title, text)
    print_text(title, text, color: String::Colors::RED)
  end

  def print_warning(title, text)
    print_text(title, text, color: String::Colors::YELLOW)
  end

  private
    def print_text(title, text, color:)
      puts "#{title.colorize(color)}\r\n #{text.colorize(color)}"
    end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
kuber_kit-0.1.9 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.8 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.7 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.6 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.5 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.4 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.3 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.2 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.1 lib/kuber_kit/ui/simple.rb
kuber_kit-0.1.0 lib/kuber_kit/ui/simple.rb