cxxproject 0.5.59 → 0.5.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/cxxproject/buildingblocks/building_block.rb +0 -1
- data/lib/cxxproject/ext/rake.rb +0 -2
- data/lib/cxxproject/version.rb +1 -1
- data/lib/cxxproject.rb +0 -4
- metadata +48 -66
- data/lib/cxxproject/ext/progressbar.rb +0 -20
- data/lib/cxxproject/utils/progress.rb +0 -66
- data/lib/cxxproject/utils/progress_helper.rb +0 -77
- data/lib/cxxproject/utils/rbcurse.rb +0 -284
- data/lib/cxxproject/utils/rbcurse_executable_ext.rb +0 -14
- data/lib/cxxproject/utils/rbcurse_progress.rb +0 -71
- data/lib/cxxproject/utils/rbcurse_tasktable.rb +0 -51
data/lib/cxxproject/ext/rake.rb
CHANGED
|
@@ -220,7 +220,6 @@ module Rake
|
|
|
220
220
|
attr_accessor :deps # used to store deps by depfile task for the apply task (no re-read of depsfile)
|
|
221
221
|
attr_accessor :type
|
|
222
222
|
attr_accessor :transparent_timestamp
|
|
223
|
-
attr_accessor :progress_count
|
|
224
223
|
attr_accessor :output_string
|
|
225
224
|
attr_accessor :output_after_execute
|
|
226
225
|
attr_accessor :immediate_output
|
|
@@ -255,7 +254,6 @@ module Rake
|
|
|
255
254
|
@type = UNKNOWN
|
|
256
255
|
@deps = nil
|
|
257
256
|
@transparent_timestamp = false
|
|
258
|
-
@progress_count = 0
|
|
259
257
|
@ignore = false
|
|
260
258
|
@failure = false
|
|
261
259
|
@output_after_execute = true
|
data/lib/cxxproject/version.rb
CHANGED
data/lib/cxxproject.rb
CHANGED
|
@@ -12,10 +12,6 @@ require 'cxxproject/utils/ubigraph'
|
|
|
12
12
|
require 'cxxproject/utils/graphstream'
|
|
13
13
|
require 'cxxproject/toolchain/provider'
|
|
14
14
|
|
|
15
|
-
require 'cxxproject/utils/progress'
|
|
16
|
-
require 'cxxproject/utils/rbcurse'
|
|
17
|
-
require 'cxxproject/utils/progress'
|
|
18
|
-
require 'cxxproject/utils/rbcurse'
|
|
19
15
|
require 'cxxproject/utils/stats'
|
|
20
16
|
|
|
21
17
|
include Cxxproject::Toolchain
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: cxxproject
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.5.
|
|
5
|
+
version: 0.5.60
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- oliver mueller
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date:
|
|
13
|
+
date: 2013-01-15 00:00:00 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: highline
|
|
@@ -34,17 +34,6 @@ dependencies:
|
|
|
34
34
|
version: "0"
|
|
35
35
|
type: :runtime
|
|
36
36
|
version_requirements: *id002
|
|
37
|
-
- !ruby/object:Gem::Dependency
|
|
38
|
-
name: progressbar
|
|
39
|
-
prerelease: false
|
|
40
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
|
-
requirements:
|
|
43
|
-
- - ">="
|
|
44
|
-
- !ruby/object:Gem::Version
|
|
45
|
-
version: "0"
|
|
46
|
-
type: :runtime
|
|
47
|
-
version_requirements: *id003
|
|
48
37
|
description: " Some more high level building blocks for cpp projects.\n"
|
|
49
38
|
email: oliver.mueller@gmail.com
|
|
50
39
|
executables:
|
|
@@ -54,12 +43,44 @@ extensions: []
|
|
|
54
43
|
extra_rdoc_files: []
|
|
55
44
|
|
|
56
45
|
files:
|
|
57
|
-
- lib/cxxproject.rb
|
|
58
|
-
- lib/
|
|
46
|
+
- lib/cxxproject/buildingblocks/binary_library.rb
|
|
47
|
+
- lib/cxxproject/buildingblocks/building_block.rb
|
|
48
|
+
- lib/cxxproject/buildingblocks/command_line.rb
|
|
49
|
+
- lib/cxxproject/buildingblocks/custom_building_block.rb
|
|
50
|
+
- lib/cxxproject/buildingblocks/executable.rb
|
|
51
|
+
- lib/cxxproject/buildingblocks/has_dependencies_mixin.rb
|
|
52
|
+
- lib/cxxproject/buildingblocks/has_includes_mixin.rb
|
|
53
|
+
- lib/cxxproject/buildingblocks/has_libraries_mixin.rb
|
|
54
|
+
- lib/cxxproject/buildingblocks/has_sources_mixin.rb
|
|
55
|
+
- lib/cxxproject/buildingblocks/makefile.rb
|
|
56
|
+
- lib/cxxproject/buildingblocks/module.rb
|
|
57
|
+
- lib/cxxproject/buildingblocks/single_source.rb
|
|
58
|
+
- lib/cxxproject/buildingblocks/source_library.rb
|
|
59
|
+
- lib/cxxproject/errorparser/diab_compiler_error_parser.rb
|
|
60
|
+
- lib/cxxproject/errorparser/diab_linker_error_parser.rb
|
|
61
|
+
- lib/cxxproject/errorparser/error_parser.rb
|
|
62
|
+
- lib/cxxproject/errorparser/gcc_compiler_error_parser.rb
|
|
63
|
+
- lib/cxxproject/errorparser/gcc_linker_error_parser.rb
|
|
64
|
+
- lib/cxxproject/errorparser/ti_compiler_error_parser.rb
|
|
65
|
+
- lib/cxxproject/errorparser/ti_linker_error_parser.rb
|
|
59
66
|
- lib/cxxproject/eval_context.rb
|
|
67
|
+
- lib/cxxproject/ext/file.rb
|
|
68
|
+
- lib/cxxproject/ext/filelist.rb
|
|
69
|
+
- lib/cxxproject/ext/rake.rb
|
|
70
|
+
- lib/cxxproject/ext/rake_dirty.rb
|
|
71
|
+
- lib/cxxproject/ext/rake_listener.rb
|
|
72
|
+
- lib/cxxproject/ext/stdout.rb
|
|
73
|
+
- lib/cxxproject/ext/string.rb
|
|
60
74
|
- lib/cxxproject/ide_interface.rb
|
|
75
|
+
- lib/cxxproject/toolchain/clang.rb
|
|
76
|
+
- lib/cxxproject/toolchain/colorizing_formatter.rb
|
|
77
|
+
- lib/cxxproject/toolchain/diab.rb
|
|
78
|
+
- lib/cxxproject/toolchain/gcc.rb
|
|
79
|
+
- lib/cxxproject/toolchain/provider.rb
|
|
80
|
+
- lib/cxxproject/toolchain/ti.rb
|
|
81
|
+
- lib/cxxproject/toolchain/toolchain.rb
|
|
82
|
+
- lib/cxxproject/toolchain/toolchain_benchmark.rb
|
|
61
83
|
- lib/cxxproject/torake.rb
|
|
62
|
-
- lib/cxxproject/version.rb
|
|
63
84
|
- lib/cxxproject/utils/cleanup.rb
|
|
64
85
|
- lib/cxxproject/utils/console.rb
|
|
65
86
|
- lib/cxxproject/utils/exit_helper.rb
|
|
@@ -67,52 +88,13 @@ files:
|
|
|
67
88
|
- lib/cxxproject/utils/optional.rb
|
|
68
89
|
- lib/cxxproject/utils/printer.rb
|
|
69
90
|
- lib/cxxproject/utils/process.rb
|
|
70
|
-
- lib/cxxproject/utils/progress.rb
|
|
71
|
-
- lib/cxxproject/utils/progress_helper.rb
|
|
72
|
-
- lib/cxxproject/utils/rbcurse.rb
|
|
73
|
-
- lib/cxxproject/utils/rbcurse_executable_ext.rb
|
|
74
|
-
- lib/cxxproject/utils/rbcurse_progress.rb
|
|
75
|
-
- lib/cxxproject/utils/rbcurse_tasktable.rb
|
|
76
91
|
- lib/cxxproject/utils/stats.rb
|
|
77
92
|
- lib/cxxproject/utils/ubigraph.rb
|
|
78
93
|
- lib/cxxproject/utils/utils.rb
|
|
79
94
|
- lib/cxxproject/utils/valgrind.rb
|
|
80
|
-
- lib/cxxproject/
|
|
81
|
-
- lib/cxxproject
|
|
82
|
-
- lib/
|
|
83
|
-
- lib/cxxproject/toolchain/gcc.rb
|
|
84
|
-
- lib/cxxproject/toolchain/provider.rb
|
|
85
|
-
- lib/cxxproject/toolchain/ti.rb
|
|
86
|
-
- lib/cxxproject/toolchain/toolchain.rb
|
|
87
|
-
- lib/cxxproject/toolchain/toolchain_benchmark.rb
|
|
88
|
-
- lib/cxxproject/ext/file.rb
|
|
89
|
-
- lib/cxxproject/ext/filelist.rb
|
|
90
|
-
- lib/cxxproject/ext/progressbar.rb
|
|
91
|
-
- lib/cxxproject/ext/rake.rb
|
|
92
|
-
- lib/cxxproject/ext/rake_dirty.rb
|
|
93
|
-
- lib/cxxproject/ext/rake_listener.rb
|
|
94
|
-
- lib/cxxproject/ext/stdout.rb
|
|
95
|
-
- lib/cxxproject/ext/string.rb
|
|
96
|
-
- lib/cxxproject/errorparser/diab_compiler_error_parser.rb
|
|
97
|
-
- lib/cxxproject/errorparser/diab_linker_error_parser.rb
|
|
98
|
-
- lib/cxxproject/errorparser/error_parser.rb
|
|
99
|
-
- lib/cxxproject/errorparser/gcc_compiler_error_parser.rb
|
|
100
|
-
- lib/cxxproject/errorparser/gcc_linker_error_parser.rb
|
|
101
|
-
- lib/cxxproject/errorparser/ti_compiler_error_parser.rb
|
|
102
|
-
- lib/cxxproject/errorparser/ti_linker_error_parser.rb
|
|
103
|
-
- lib/cxxproject/buildingblocks/binary_library.rb
|
|
104
|
-
- lib/cxxproject/buildingblocks/building_block.rb
|
|
105
|
-
- lib/cxxproject/buildingblocks/command_line.rb
|
|
106
|
-
- lib/cxxproject/buildingblocks/custom_building_block.rb
|
|
107
|
-
- lib/cxxproject/buildingblocks/executable.rb
|
|
108
|
-
- lib/cxxproject/buildingblocks/has_dependencies_mixin.rb
|
|
109
|
-
- lib/cxxproject/buildingblocks/has_includes_mixin.rb
|
|
110
|
-
- lib/cxxproject/buildingblocks/has_libraries_mixin.rb
|
|
111
|
-
- lib/cxxproject/buildingblocks/has_sources_mixin.rb
|
|
112
|
-
- lib/cxxproject/buildingblocks/makefile.rb
|
|
113
|
-
- lib/cxxproject/buildingblocks/module.rb
|
|
114
|
-
- lib/cxxproject/buildingblocks/single_source.rb
|
|
115
|
-
- lib/cxxproject/buildingblocks/source_library.rb
|
|
95
|
+
- lib/cxxproject/version.rb
|
|
96
|
+
- lib/cxxproject.rb
|
|
97
|
+
- lib/tools/project_wizard.rb
|
|
116
98
|
- Rakefile.rb
|
|
117
99
|
- spec/building_block_spec.rb
|
|
118
100
|
- spec/cxxproject_2_rake_spec.rb
|
|
@@ -123,15 +105,15 @@ files:
|
|
|
123
105
|
- spec/rake_listener_ext_spec.rb
|
|
124
106
|
- spec/spec_helper.rb
|
|
125
107
|
- spec/string_spec.rb
|
|
126
|
-
- spec/
|
|
108
|
+
- spec/testdata/basic/exe12/project.rb
|
|
109
|
+
- spec/testdata/basic/lib1/project.rb
|
|
110
|
+
- spec/testdata/basic/lib2/project.rb
|
|
111
|
+
- spec/testdata/multiple_levels/libs/lib1/project.rb
|
|
112
|
+
- spec/testdata/multiple_levels/libs/lib2/project.rb
|
|
113
|
+
- spec/testdata/multiple_levels/mainproject/basic/project.rb
|
|
127
114
|
- spec/testdata/onlyOneHeader/project.rb
|
|
128
115
|
- spec/testdata/onlyOneHeader/Rakefile.rb
|
|
129
|
-
- spec/
|
|
130
|
-
- spec/testdata/multiple_levels/libs/lib2/project.rb
|
|
131
|
-
- spec/testdata/multiple_levels/libs/lib1/project.rb
|
|
132
|
-
- spec/testdata/basic/lib2/project.rb
|
|
133
|
-
- spec/testdata/basic/lib1/project.rb
|
|
134
|
-
- spec/testdata/basic/exe12/project.rb
|
|
116
|
+
- spec/toolchain_spec.rb
|
|
135
117
|
- lib/tools/project.rb.template
|
|
136
118
|
- lib/tools/Rakefile.rb.template
|
|
137
119
|
- bin/cxx
|
|
@@ -158,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
158
140
|
requirements: []
|
|
159
141
|
|
|
160
142
|
rubyforge_project:
|
|
161
|
-
rubygems_version: 1.8.
|
|
143
|
+
rubygems_version: 1.8.24
|
|
162
144
|
signing_key:
|
|
163
145
|
specification_version: 3
|
|
164
146
|
summary: Cpp Support for Rake.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
class ::ProgressBar
|
|
2
|
-
attr_writer :title
|
|
3
|
-
|
|
4
|
-
def title_width=(w)
|
|
5
|
-
@title_width = w
|
|
6
|
-
@format = "%-#{@title_width}s #{'%3d%%'.red} #{'%s'.green} #{'%s'.blue}"
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
show_original = self.instance_method(:show)
|
|
10
|
-
define_method(:show) do
|
|
11
|
-
if @unblocked && !RakeFileUtils.verbose
|
|
12
|
-
show_original.bind(self).call
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def unblock
|
|
17
|
-
@unblocked = true
|
|
18
|
-
show
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
module Cxxproject
|
|
2
|
-
module Utils
|
|
3
|
-
define_progress = lambda do
|
|
4
|
-
require 'rake'
|
|
5
|
-
require 'cxxproject/ext/rake'
|
|
6
|
-
|
|
7
|
-
require 'progressbar'
|
|
8
|
-
require 'cxxproject/ext/progressbar'
|
|
9
|
-
require 'colored'
|
|
10
|
-
require 'cxxproject/utils/progress_helper'
|
|
11
|
-
|
|
12
|
-
class ProgressListener
|
|
13
|
-
def initialize
|
|
14
|
-
@progress_helper = ProgressHelper.new
|
|
15
|
-
Rake::application.top_level_tasks.each do |name|
|
|
16
|
-
@progress_helper.count_with_filter(name)
|
|
17
|
-
end
|
|
18
|
-
@progress = ProgressBar.new('all tasks', @progress_helper.todo)
|
|
19
|
-
@progress.title_width = 30
|
|
20
|
-
@progress.unblock
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def after_execute(name)
|
|
24
|
-
needed_tasks = @progress_helper.needed_tasks
|
|
25
|
-
if needed_tasks[name]
|
|
26
|
-
task = Rake::Task[name]
|
|
27
|
-
@progress.title = task.name
|
|
28
|
-
@progress.inc(task.progress_count)
|
|
29
|
-
if (@progress.total == @progress.current)
|
|
30
|
-
puts
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
require 'benchmark'
|
|
37
|
-
class BenchmarkedProgressListener < ProgressListener
|
|
38
|
-
def initialize
|
|
39
|
-
Benchmark.bm do |x|
|
|
40
|
-
x.report('ProgressListener.initialize') do
|
|
41
|
-
super
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
desc 'show a progressbar for the build (use with -s for best results)'
|
|
48
|
-
task :progress do
|
|
49
|
-
require 'cxxproject/ext/rake_listener'
|
|
50
|
-
Rake::add_listener(ProgressListener.new)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
task :benchmark_progress do
|
|
54
|
-
require 'cxxproject/ext/rake_listener'
|
|
55
|
-
Rake::add_listener(BenchmarkedProgressListener.new)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
could_not_define_progress = lambda {
|
|
60
|
-
task :progress do
|
|
61
|
-
puts 'could not define progress'
|
|
62
|
-
end
|
|
63
|
-
}
|
|
64
|
-
optional_package(define_progress, could_not_define_progress)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
module Cxxproject
|
|
2
|
-
module Utils
|
|
3
|
-
class ProgressHelper
|
|
4
|
-
|
|
5
|
-
attr_reader :todo
|
|
6
|
-
|
|
7
|
-
attr_reader :needed_tasks
|
|
8
|
-
|
|
9
|
-
def initialize
|
|
10
|
-
@todo = 0.0
|
|
11
|
-
@needed_tasks = {}
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def count_with_filter(name)
|
|
15
|
-
tasks = find_tasks_for_toplevel_task(name)
|
|
16
|
-
tasks.each do |t|
|
|
17
|
-
count(t)
|
|
18
|
-
end
|
|
19
|
-
if @todo < 1
|
|
20
|
-
@todo = 1
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def find_tasks_for_toplevel_task(name)
|
|
25
|
-
regex = create_regex_for_name(name)
|
|
26
|
-
return filter_all_tasks(regex)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def create_regex_for_name(name)
|
|
30
|
-
res = Regexp.new(name)
|
|
31
|
-
res = create_regex_for_filter(name, res)
|
|
32
|
-
return res
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def is_filter(name)
|
|
36
|
-
return name.index('filter')
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def create_regex_for_filter(name, res)
|
|
40
|
-
return res unless is_filter(name)
|
|
41
|
-
|
|
42
|
-
name = name.gsub('filter', '')
|
|
43
|
-
if name.index('[') == nil
|
|
44
|
-
name = name + '.*'
|
|
45
|
-
else
|
|
46
|
-
name = name.gsub('[', '')
|
|
47
|
-
name = name.gsub(']', '')
|
|
48
|
-
end
|
|
49
|
-
return Regexp.new(name)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def filter_all_tasks(regex)
|
|
53
|
-
return Rake::Task::tasks.find_all do |t|
|
|
54
|
-
task_name = t.name
|
|
55
|
-
res = ((task_name.index('filter') == nil) && regex.match(task_name)!=nil)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def count(task)
|
|
60
|
-
task.visit() do |t|
|
|
61
|
-
count_needed_tasks(t)
|
|
62
|
-
true
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def count_needed_tasks(t)
|
|
67
|
-
c = t.progress_count
|
|
68
|
-
if c && c > 0
|
|
69
|
-
if t.needed? && @needed_tasks[t.name] == nil
|
|
70
|
-
@needed_tasks[t.name] = true
|
|
71
|
-
@todo += c
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
module Cxxproject
|
|
2
|
-
module Utils
|
|
3
|
-
define_rbcurse_ui = lambda do
|
|
4
|
-
require 'rake'
|
|
5
|
-
require 'ncurses'
|
|
6
|
-
require 'rbcurse'
|
|
7
|
-
|
|
8
|
-
require 'rbcurse/rtable'
|
|
9
|
-
require 'rbcurse/table/tablecellrenderer'
|
|
10
|
-
require 'rbcurse/rsplitpane'
|
|
11
|
-
require 'rbcurse/rtextview'
|
|
12
|
-
require 'cxxproject/ext/rake_listener'
|
|
13
|
-
require 'cxxproject/utils/rbcurse_progress'
|
|
14
|
-
require 'cxxproject/utils/rbcurse_tasktable'
|
|
15
|
-
|
|
16
|
-
include RubyCurses
|
|
17
|
-
|
|
18
|
-
Rake::TaskManager.record_task_metadata = true
|
|
19
|
-
|
|
20
|
-
class RakeGui
|
|
21
|
-
def initialize
|
|
22
|
-
require 'cxxproject/utils/rbcurse_executable_ext'
|
|
23
|
-
Cxxproject::ColorizingFormatter.enabled = false
|
|
24
|
-
Rake::Task.output_disabled = true
|
|
25
|
-
|
|
26
|
-
$log = Logger.new(File.join("./", "view.log"))
|
|
27
|
-
$log.level = Logger::ERROR
|
|
28
|
-
@data_stack = []
|
|
29
|
-
@path_stack = []
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.keycode(s)
|
|
33
|
-
return s[0].to_i
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def create_table
|
|
37
|
-
@col_names = ['name', 'desc']
|
|
38
|
-
return TaskTable.new(self) do
|
|
39
|
-
name 'my table'
|
|
40
|
-
title 'my table'
|
|
41
|
-
cell_editing_allowed false
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def reenable_including_prerequisites(task)
|
|
46
|
-
task.visit() do |t|
|
|
47
|
-
t.reenable
|
|
48
|
-
true
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def invoke(table)
|
|
53
|
-
t = table.get_value_at(table.focussed_row, 0)
|
|
54
|
-
@progress_helper = ProgressHelper.new
|
|
55
|
-
complete_task_name = t.name
|
|
56
|
-
args = []
|
|
57
|
-
if @progress_helper.is_filter(t.name)
|
|
58
|
-
args = [get_string('please input filterpattern', 20, '.*')]
|
|
59
|
-
complete_task_name = "#{t.name}[#{args[0]}]"
|
|
60
|
-
end
|
|
61
|
-
@progress_helper.count_with_filter(complete_task_name)
|
|
62
|
-
|
|
63
|
-
@progress.max = @progress_helper.todo
|
|
64
|
-
Rake::add_listener(self)
|
|
65
|
-
reenable_including_prerequisites(t)
|
|
66
|
-
t.invoke(args)
|
|
67
|
-
Rake::remove_listener(self)
|
|
68
|
-
show_details_for(table.focussed_row)
|
|
69
|
-
table.repaint_all(true)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def after_execute(name)
|
|
73
|
-
needed_tasks = @progress_helper.needed_tasks
|
|
74
|
-
if needed_tasks[name]
|
|
75
|
-
task = Rake::Task[name]
|
|
76
|
-
@progress.title = task.name
|
|
77
|
-
@progress.inc(task.progress_count)
|
|
78
|
-
@form.repaint
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def details(table)
|
|
83
|
-
t = table.get_value_at(table.focussed_row, 0)
|
|
84
|
-
pre = t.prerequisite_tasks
|
|
85
|
-
if pre.size > 0
|
|
86
|
-
push_table_data(pre, t.name)
|
|
87
|
-
table.set_focus_on 0
|
|
88
|
-
|
|
89
|
-
show_details_for(0)
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def repaint_and_next_char
|
|
94
|
-
@form.repaint
|
|
95
|
-
@window.wrefresh
|
|
96
|
-
return @window.getchar
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def process_input_events
|
|
100
|
-
ch = repaint_and_next_char
|
|
101
|
-
while ch != RakeGui.keycode('q')
|
|
102
|
-
$log.error "entered key: #{ch}"
|
|
103
|
-
case ch
|
|
104
|
-
when RakeGui.keycode('a')
|
|
105
|
-
@h_split.set_divider_location(@h_split.divider_location+1)
|
|
106
|
-
when RakeGui.keycode('s')
|
|
107
|
-
@h_split.set_divider_location(@h_split.divider_location-1)
|
|
108
|
-
else
|
|
109
|
-
@form.handle_key(ch)
|
|
110
|
-
end
|
|
111
|
-
ch = repaint_and_next_char
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def push_table_data(task_data, new_path=nil)
|
|
116
|
-
@path_stack.push(new_path) if new_path
|
|
117
|
-
set_breadcrumbs
|
|
118
|
-
|
|
119
|
-
@data_stack.push(task_data)
|
|
120
|
-
set_table_data(task_data)
|
|
121
|
-
end
|
|
122
|
-
def set_table_data(task_data)
|
|
123
|
-
size = size()
|
|
124
|
-
new_data = task_data.map{|t|[t, t.comment]}
|
|
125
|
-
@table.set_data new_data, @col_names
|
|
126
|
-
tcm = @table.table_column_model
|
|
127
|
-
first_col_width = task_data.map{|t|t.name.size}.max
|
|
128
|
-
tcm.column(0).width(first_col_width)
|
|
129
|
-
tcm.column(1).width(size[0]-first_col_width-3)
|
|
130
|
-
end
|
|
131
|
-
def set_breadcrumbs
|
|
132
|
-
crumbs = File.join(@path_stack.map{|i|"(#{i})"}.join('/'))
|
|
133
|
-
@breadcrumbs.text = crumbs
|
|
134
|
-
@breadcrumbs.repaint_all(true)
|
|
135
|
-
end
|
|
136
|
-
def pop_data
|
|
137
|
-
if @data_stack.size > 1
|
|
138
|
-
@path_stack.pop
|
|
139
|
-
set_breadcrumbs
|
|
140
|
-
|
|
141
|
-
popped = @data_stack.pop
|
|
142
|
-
top= @data_stack.last
|
|
143
|
-
set_table_data(top)
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
def size
|
|
148
|
-
return @window.default_for(:width), @window.default_for(:height)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def show_details_for(row)
|
|
152
|
-
buffer = StringIO.new
|
|
153
|
-
t = @table.get_value_at(row, 0)
|
|
154
|
-
t.visit do |t|
|
|
155
|
-
if t.output_string && t.output_string.length > 0
|
|
156
|
-
buffer.puts(t.output_string)
|
|
157
|
-
end
|
|
158
|
-
if t.failure
|
|
159
|
-
true
|
|
160
|
-
else
|
|
161
|
-
false
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
@output.set_content(buffer.string)
|
|
165
|
-
@output.set_focus_on(0)
|
|
166
|
-
@output.repaint_all(true)
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
def start_editor_for_task(t)
|
|
170
|
-
file_name = t.name
|
|
171
|
-
return unless File.exists?(file_name)
|
|
172
|
-
|
|
173
|
-
start_editor(file_name, 0, 0)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def start_editor(file, line, column)
|
|
177
|
-
$log.error "starting editor for #{file}:#{line}"
|
|
178
|
-
editor = ENV['EDITOR']
|
|
179
|
-
editor = 'vi' unless editor
|
|
180
|
-
cmd = "#{editor} +#{line} #{file}"
|
|
181
|
-
shell_out(cmd)
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
def shell_out(cmd)
|
|
185
|
-
@window.hide
|
|
186
|
-
Ncurses.endwin
|
|
187
|
-
system(cmd)
|
|
188
|
-
Ncurses.refresh
|
|
189
|
-
@window.show
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
def create_breadcrumbs(size)
|
|
193
|
-
@breadcrumbs = Label.new @form do
|
|
194
|
-
name 'breadcrumbs'
|
|
195
|
-
row 0
|
|
196
|
-
col 0
|
|
197
|
-
width size[0]
|
|
198
|
-
height 1
|
|
199
|
-
end
|
|
200
|
-
@breadcrumbs.display_length(size[0])
|
|
201
|
-
@breadcrumbs.text = ''
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
def create_splitpane(size)
|
|
205
|
-
@h_split = SplitPane.new @form do
|
|
206
|
-
name 'mainpane'
|
|
207
|
-
row 1
|
|
208
|
-
col 0
|
|
209
|
-
width size[0]
|
|
210
|
-
height size[1]-3
|
|
211
|
-
orientation :HORIZONTAL_SPLIT
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
def create_output_view(size)
|
|
216
|
-
@output = TextView.new nil
|
|
217
|
-
@output.set_content('')
|
|
218
|
-
@output.configure do
|
|
219
|
-
bind_key(RakeGui.keycode('e')) do |code|
|
|
220
|
-
line = selected_item
|
|
221
|
-
file_pattern = '(.*?):(\d+):(\d*):? '
|
|
222
|
-
error_pattern = Regexp.new("#{file_pattern}(error: .*)")
|
|
223
|
-
warning_pattern = Regexp.new("#{file_pattern}(warning: .*)")
|
|
224
|
-
md = error_pattern.match(line)
|
|
225
|
-
md = warning_pattern.match(line) unless md
|
|
226
|
-
if md
|
|
227
|
-
file_name = md[1]
|
|
228
|
-
line = md[2]
|
|
229
|
-
col = md[3]
|
|
230
|
-
rake_gui.start_editor(file_name, line, col)
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
end
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
def create_components(size)
|
|
237
|
-
create_breadcrumbs(size)
|
|
238
|
-
@progress = Progress.new(@form, size)
|
|
239
|
-
create_splitpane(size)
|
|
240
|
-
@table = create_table
|
|
241
|
-
push_table_data(Rake::Task.tasks.select {|t|t.comment})
|
|
242
|
-
|
|
243
|
-
create_output_view(size)
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
def wire_components
|
|
247
|
-
@h_split.first_component(@table)
|
|
248
|
-
@h_split.second_component(@output)
|
|
249
|
-
@h_split.set_resize_weight(0.50)
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
def run
|
|
253
|
-
rake_gui = self
|
|
254
|
-
begin
|
|
255
|
-
VER::start_ncurses
|
|
256
|
-
|
|
257
|
-
@window = VER::Window.root_window
|
|
258
|
-
@form = Form.new @window
|
|
259
|
-
|
|
260
|
-
create_components(size())
|
|
261
|
-
wire_components
|
|
262
|
-
|
|
263
|
-
@table.bind(:TABLE_TRAVERSAL_EVENT) do |e|
|
|
264
|
-
rake_gui.show_details_for(e.newrow)
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
process_input_events
|
|
268
|
-
rescue => e
|
|
269
|
-
puts e
|
|
270
|
-
end
|
|
271
|
-
@window.destroy if @window
|
|
272
|
-
VER::stop_ncurses
|
|
273
|
-
end
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
task :ui do
|
|
277
|
-
RakeGui.new.run
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
optional_package(define_rbcurse_ui, nil)
|
|
283
|
-
end
|
|
284
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Cxxproject
|
|
2
|
-
module Utils
|
|
3
|
-
class Executable
|
|
4
|
-
def run_command(task, command)
|
|
5
|
-
require 'open3'
|
|
6
|
-
stdin, stdout, stderr = Open3.popen3(command)
|
|
7
|
-
puts "StdOut:"
|
|
8
|
-
puts stdout.readlines
|
|
9
|
-
puts "StdErr:"
|
|
10
|
-
puts stderr.readlines
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
module Cxxproject
|
|
2
|
-
module Utils
|
|
3
|
-
class Progress
|
|
4
|
-
def initialize(form, size)
|
|
5
|
-
@width = size[0]
|
|
6
|
-
initialize_progress(form, size)
|
|
7
|
-
initialize_title(form, size)
|
|
8
|
-
max = 100
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def initialize_progress(form, size)
|
|
12
|
-
@progress = Label.new form do
|
|
13
|
-
name 'progress'
|
|
14
|
-
row size[1]-1
|
|
15
|
-
col 0
|
|
16
|
-
width size[0]
|
|
17
|
-
height 1
|
|
18
|
-
end
|
|
19
|
-
@progress.display_length(@width)
|
|
20
|
-
@progress.text = ' '*@width
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def initialize_title(form, size)
|
|
24
|
-
@title = Label.new form do
|
|
25
|
-
name 'title'
|
|
26
|
-
row size[1]-2
|
|
27
|
-
col 0
|
|
28
|
-
width size[0]
|
|
29
|
-
height 1
|
|
30
|
-
end
|
|
31
|
-
@title.display_length(@widget)
|
|
32
|
-
@title.text = 'Idle'
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def title=(t)
|
|
36
|
-
@title_text = t
|
|
37
|
-
format_title
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def inc(i)
|
|
41
|
-
@current += i
|
|
42
|
-
format_title
|
|
43
|
-
format_progress
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def percentage
|
|
47
|
-
return @current.to_f / @max.to_f
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def format_progress
|
|
51
|
-
total = (percentage * @width.to_f).to_i
|
|
52
|
-
text = "#" * total
|
|
53
|
-
@progress.text = text
|
|
54
|
-
@progress.repaint_all(true)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def format_title
|
|
58
|
-
format = "%3d%% - worked on %s "
|
|
59
|
-
@title.text = sprintf(format, (percentage*100).to_i, @title_text)
|
|
60
|
-
@title.repaint_all(true)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def max=(f)
|
|
64
|
-
@max = f.to_f
|
|
65
|
-
@current = 0.0
|
|
66
|
-
format_progress
|
|
67
|
-
format_title
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
module Cxxproject
|
|
2
|
-
module Utils
|
|
3
|
-
class TaskTable < Table
|
|
4
|
-
def initialize(rake_gui, form=nil, config={}, &block)
|
|
5
|
-
super(form, config, &block)
|
|
6
|
-
@rake_gui = rake_gui
|
|
7
|
-
activate_keybindings
|
|
8
|
-
end
|
|
9
|
-
def activate_keybindings
|
|
10
|
-
configure do
|
|
11
|
-
bind_key(RakeGui.keycode('r')) do
|
|
12
|
-
@rake_gui.invoke(self)
|
|
13
|
-
end
|
|
14
|
-
bind_key(RakeGui.keycode('d')) do
|
|
15
|
-
@rake_gui.details(self)
|
|
16
|
-
end
|
|
17
|
-
bind_key(RakeGui.keycode('e')) do
|
|
18
|
-
task = get_value_at(focussed_row, 0)
|
|
19
|
-
@rake_gui.start_editor_for_task(task)
|
|
20
|
-
end
|
|
21
|
-
[RakeGui.keycode('p'), KEY_BACKSPACE, 127].each do |code|
|
|
22
|
-
bind_key(code) do
|
|
23
|
-
@rake_gui.pop_data
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def get_cell_renderer(row, col)
|
|
30
|
-
renderer = super(row, col)
|
|
31
|
-
content = get_value_at(row, 0)
|
|
32
|
-
if renderer.nil?
|
|
33
|
-
renderer = get_default_cell_renderer_for_class(content.class.to_s) if renderer.nil?
|
|
34
|
-
column = @table_column_model.column(col)
|
|
35
|
-
renderer.display_length column.width if column
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
if content && content.failure
|
|
39
|
-
renderer.color('red')
|
|
40
|
-
renderer.bgcolor('black')
|
|
41
|
-
else
|
|
42
|
-
renderer.color('white')
|
|
43
|
-
renderer.bgcolor('black')
|
|
44
|
-
end
|
|
45
|
-
return renderer
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
end
|
|
51
|
-
end
|