Sha256: fa7d974ea17491dbdbbb5beea1a1a327755818bcf38e4f5d1dd09177653c3c82

Contents?: true

Size: 1.8 KB

Versions: 25

Compression:

Stored size: 1.8 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

25 entries across 25 versions & 1 rubygems

Version Path
cxxproject-0.6.30 lib/cxxproject/utils/progress.rb
cxxproject-0.6.29 lib/cxxproject/utils/progress.rb
cxxproject-0.6.28 lib/cxxproject/utils/progress.rb
cxxproject-0.6.27 lib/cxxproject/utils/progress.rb
cxxproject-0.6.26 lib/cxxproject/utils/progress.rb
cxxproject-0.6.25 lib/cxxproject/utils/progress.rb
cxxproject-0.6.24 lib/cxxproject/utils/progress.rb
cxxproject-0.6.23 lib/cxxproject/utils/progress.rb
cxxproject-0.6.21 lib/cxxproject/utils/progress.rb
cxxproject-0.6.18 lib/cxxproject/utils/progress.rb
cxxproject-0.6.17 lib/cxxproject/utils/progress.rb
cxxproject-0.6.14 lib/cxxproject/utils/progress.rb
cxxproject-0.6.12 lib/cxxproject/utils/progress.rb
cxxproject-0.6.13 lib/cxxproject/utils/progress.rb
cxxproject-0.6.11 lib/cxxproject/utils/progress.rb
cxxproject-0.6.10 lib/cxxproject/utils/progress.rb
cxxproject-0.6.9 lib/cxxproject/utils/progress.rb
cxxproject-0.6.6 lib/cxxproject/utils/progress.rb
cxxproject-0.6.5 lib/cxxproject/utils/progress.rb
cxxproject-0.6.4 lib/cxxproject/utils/progress.rb