Sha256: 3da11f237aea7d92c08098e75d0d3c82214aee2b2578f0b3e014063c515cfdd5

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

module Cxxproject
  module Utils
    define_progress = lambda do
      require 'rake'
      require 'cxxproject/ext/rake'

      require 'progressbar'
      require 'cxxproject/ext/progressbar'
      require 'colored'
      require 'cxxproject/utils/progress_helper'

      class ProgressListener
        def initialize
          @progress_helper = ProgressHelper.new
          Rake::application.top_level_tasks.each do |name|
            @progress_helper.count_with_filter(name)
          end
          @progress = ProgressBar.new('all tasks', @progress_helper.todo)
          @progress.title_width = 30
          @progress.unblock
        end

        def after_execute(name)
          needed_tasks = @progress_helper.needed_tasks
          if needed_tasks[name]
            task = Rake::Task[name]
            @progress.title = task.name
            @progress.inc(task.progress_count)
            if (@progress.total == @progress.current)
              puts
            end
          end
        end
      end

      require 'benchmark'
      class BenchmarkedProgressListener < ProgressListener
        def initialize
          Benchmark.bm do |x|
            x.report('ProgressListener.initialize') do
              super
            end
          end
        end
      end

      desc 'show a progressbar for the build (use with -s for best results)'
      task :progress do
        require 'cxxproject/ext/rake_listener'
        Rake::add_listener(ProgressListener.new)
      end

      task :benchmark_progress do
        require 'cxxproject/ext/rake_listener'
        Rake::add_listener(BenchmarkedProgressListener.new)
      end
    end

    could_not_define_progress = lambda {
      task :progress do
        puts 'could not define progress'
      end
    }
    optional_package(define_progress, could_not_define_progress)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cxxproject-0.5.59 lib/cxxproject/utils/progress.rb