build-tool 0.5.7 → 0.6.0.rc1
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/.gitignore +1 -0
- data/.rvmrc +1 -0
- data/.yardopts +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +56 -0
- data/History.txt +64 -0
- data/README.txt +0 -7
- data/Rakefile +8 -56
- data/bin/build-tool +4 -1
- data/build-tool.gemspec +62 -0
- data/db/migrations/20110703074000_add_command_logs.rb +17 -0
- data/db/migrations/20110703075000_add_module_logs.rb +20 -0
- data/db/migrations/20110815170000_add_features.rb +17 -0
- data/db/migrations/20120103204700_add_modules.rb +17 -0
- data/db/migrations/20120106181200_add_settings.rb +18 -0
- data/lib/build-tool.rb +3 -4
- data/lib/build-tool/application.rb +127 -37
- data/lib/build-tool/build-system/autoconf.rb +2 -8
- data/lib/build-tool/build-system/base.rb +12 -4
- data/lib/build-tool/build-system/cmake.rb +2 -0
- data/lib/build-tool/build-system/custom.rb +2 -0
- data/lib/build-tool/build-system/kdel10n.rb +2 -0
- data/lib/build-tool/build-system/make.rb +2 -0
- data/lib/build-tool/build-system/none.rb +2 -0
- data/lib/build-tool/build-system/qmake.rb +2 -0
- data/lib/build-tool/build-system/qt.rb +4 -0
- data/lib/build-tool/cfg/lexer.rex +40 -8
- data/lib/build-tool/cfg/lexer_base.rb +3 -1
- data/lib/build-tool/cfg/node.rb +17 -1
- data/lib/build-tool/cfg/parser.y +92 -10
- data/lib/build-tool/cfg/visitor.rb +202 -78
- data/lib/build-tool/command_actions.rb +26 -10
- data/lib/build-tool/commands.rb +289 -197
- data/lib/build-tool/commands/build.rb +13 -9
- data/lib/build-tool/commands/configuration.rb +25 -0
- data/lib/build-tool/commands/configuration/edit.rb +42 -0
- data/lib/build-tool/commands/configuration/list.rb +48 -0
- data/lib/build-tool/commands/configure.rb +9 -5
- data/lib/build-tool/commands/ctags.rb +8 -3
- data/lib/build-tool/commands/environments.rb +2 -4
- data/lib/build-tool/commands/environments/list.rb +13 -10
- data/lib/build-tool/commands/environments/set.rb +5 -1
- data/lib/build-tool/commands/features.rb +24 -0
- data/lib/build-tool/commands/features/disable.rb +70 -0
- data/lib/build-tool/commands/features/enable.rb +66 -0
- data/lib/build-tool/commands/features/list.rb +92 -0
- data/lib/build-tool/commands/fetch.rb +9 -3
- data/lib/build-tool/commands/files.rb +9 -5
- data/lib/build-tool/commands/gc.rb +48 -15
- data/lib/build-tool/commands/history.rb +21 -16
- data/lib/build-tool/commands/info.rb +16 -13
- data/lib/build-tool/commands/install.rb +8 -4
- data/lib/build-tool/commands/modules.rb +2 -4
- data/lib/build-tool/commands/modules/cleanup.rb +52 -0
- data/lib/build-tool/commands/modules/disable.rb +95 -0
- data/lib/build-tool/commands/modules/enable.rb +52 -0
- data/lib/build-tool/commands/modules/info.rb +44 -35
- data/lib/build-tool/commands/modules/list.rb +67 -15
- data/lib/build-tool/commands/modules/shell.rb +8 -2
- data/lib/build-tool/commands/rebase.rb +15 -7
- data/lib/build-tool/commands/recipes.rb +2 -4
- data/lib/build-tool/commands/recipes/add.rb +16 -2
- data/lib/build-tool/commands/recipes/edit.rb +72 -0
- data/lib/build-tool/commands/recipes/incoming.rb +11 -7
- data/lib/build-tool/commands/recipes/info.rb +12 -8
- data/lib/build-tool/commands/recipes/install.rb +37 -42
- data/lib/build-tool/commands/recipes/list.rb +6 -2
- data/lib/build-tool/configuration.rb +88 -3
- data/lib/build-tool/environment.rb +2 -0
- data/lib/build-tool/errors.rb +5 -0
- data/lib/build-tool/history.rb +3 -181
- data/lib/build-tool/model/command_log.rb +93 -0
- data/lib/build-tool/model/feature.rb +80 -0
- data/lib/build-tool/{module.rb → model/module.rb} +110 -29
- data/lib/build-tool/model/module_log.rb +64 -0
- data/lib/build-tool/model/setting.rb +84 -0
- data/lib/build-tool/recipe.rb +40 -18
- data/lib/build-tool/repository.rb +39 -33
- data/lib/build-tool/server.rb +27 -3
- data/lib/build-tool/singleton.rb +2 -0
- data/lib/build-tool/sshkey.rb +2 -0
- data/lib/build-tool/state_helper.rb +64 -0
- data/lib/build-tool/vcs/archive.rb +3 -1
- data/lib/build-tool/vcs/base.rb +13 -0
- data/lib/build-tool/vcs/git-svn.rb +36 -14
- data/lib/build-tool/vcs/git.rb +180 -44
- data/lib/build-tool/vcs/mercurial.rb +25 -13
- data/lib/build-tool/vcs/svn.rb +20 -15
- data/lib/build-tool/version.rb +30 -0
- data/lib/mj/error.rb +2 -0
- data/lib/mj/logging.rb +2 -0
- data/lib/mj/mixins/inherited_attributes.rb +73 -0
- data/lib/mj/tools/editor.rb +34 -0
- data/lib/mj/tools/ssh.rb +2 -0
- data/lib/mj/tools/subprocess.rb +2 -1
- data/lib/mj/vcs/git.rb +14 -2
- data/lib/mj/visitor.rb +22 -0
- data/tasks/db.rake +36 -0
- data/tasks/racc.rake +14 -0
- data/tasks/rdoc.rake +8 -0
- data/tasks/rexical.rake +14 -0
- data/tasks/test.rake +21 -0
- data/test/integration/history_test.rb +88 -0
- data/test/integration/parser_configuration.rb +36 -0
- data/test/integration/parser_environment_parser.rb +156 -0
- data/test/integration/parser_feature_test.rb +75 -0
- data/test/integration/parser_git-svn_test.rb +92 -0
- data/test/integration/parser_git_test.rb +97 -0
- data/test/integration/parser_mercurial_test.rb +77 -0
- data/test/integration/parser_module_test.rb +103 -0
- data/test/integration/parser_svn_test.rb +92 -0
- data/test/integration/parser_test.rb +73 -0
- data/test/test_helper.rb +61 -0
- data/test/unit/configuration_test.rb +36 -0
- data/test/unit/git_configuration_test.rb +163 -0
- data/test/unit/git_svn_configuration_test.rb +240 -0
- data/test/unit/mercurial_configuration_test.rb +64 -0
- data/test/unit/model/command_log_test.rb +103 -0
- data/test/unit/model/feature_test.rb +29 -0
- data/test/unit/model/module_log_test.rb +70 -0
- data/test/unit/model/module_test.rb +32 -0
- data/test/unit/repository_test.rb +110 -0
- data/test/unit/server_test.rb +66 -0
- data/test/unit/svn_configuration_test.rb +90 -0
- metadata +134 -93
- data/Manifest.txt +0 -80
- data/db/migrations/001_command_histories.rb +0 -20
- data/db/migrations/002_module_events.rb +0 -24
- data/db/migrations/003_command_histories_add_logfile.rb +0 -19
- data/lib/build-tool/GUI.rb +0 -360
- data/lib/build-tool/commands/help.rb +0 -22
- data/lib/build-tool/commands/lsfeatures.rb +0 -76
- data/lib/build-tool/feature.rb +0 -47
@@ -1,3 +1,6 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'mj/tools/subprocess'
|
1
4
|
require 'build-tool/application'
|
2
5
|
require 'build-tool/commands'
|
3
6
|
|
@@ -21,9 +24,10 @@ def log?
|
|
21
24
|
end
|
22
25
|
|
23
26
|
def initialize_options
|
24
|
-
|
27
|
+
options.banner = "Usage: #{self.fullname} [OPTIONS]... MODULES..."
|
28
|
+
options.separator( "" )
|
29
|
+
options.separator( "Options" )
|
25
30
|
|
26
|
-
@options.separator "Options:"
|
27
31
|
@fast = false
|
28
32
|
options.on( "--fast", "Fast install. No compile (if supported)" ) { |t|
|
29
33
|
@fast = t
|
@@ -39,7 +43,7 @@ def applicable?
|
|
39
43
|
def is_module_ready?( mod )
|
40
44
|
isready = true
|
41
45
|
if !mod.checkedout?
|
42
|
-
|
46
|
+
warn( "#{mod.name}: module not checked out -> skipping." )
|
43
47
|
end
|
44
48
|
return isready
|
45
49
|
end
|
@@ -49,7 +53,7 @@ def do_execute_module( mod )
|
|
49
53
|
if mod.checkedout?
|
50
54
|
install( mod, @fast )
|
51
55
|
else
|
52
|
-
|
56
|
+
info( "Not checked out. Skipping" )
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'build-tool/commands'
|
2
4
|
|
3
5
|
module BuildTool; module Commands;
|
@@ -15,10 +17,6 @@ def applicable?
|
|
15
17
|
BuildTool::Application.instance.has_recipe?
|
16
18
|
end
|
17
19
|
|
18
|
-
def do_execute
|
19
|
-
raise NotImplementedError
|
20
|
-
end
|
21
|
-
|
22
20
|
end # class ModulesCLI
|
23
21
|
|
24
22
|
end; end # module BuildTool::Commands::ModulesCLI
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'build-tool/commands'
|
4
|
+
|
5
|
+
module BuildTool; module Commands; module Modules
|
6
|
+
|
7
|
+
#
|
8
|
+
# BuildCommand
|
9
|
+
#
|
10
|
+
class Cleanup < ModuleBasedCommand
|
11
|
+
|
12
|
+
name "cleanup"
|
13
|
+
description "Module related cleanup actions."
|
14
|
+
long_description [
|
15
|
+
"This commands makes it possible to do some module related cleanups. Take care to not",
|
16
|
+
"lose data." ]
|
17
|
+
|
18
|
+
def initialize_options
|
19
|
+
@all = true
|
20
|
+
options.banner = "Usage: #{self.fullname} [OPTIONS]... [MODULE|GROUP]..."
|
21
|
+
options.separator( "" )
|
22
|
+
options.separator( "Options" )
|
23
|
+
|
24
|
+
@remove_build_directory = false
|
25
|
+
options.on( "--rm-bld", "Remove the build directory." ) {
|
26
|
+
@remove_build_directory = true
|
27
|
+
}
|
28
|
+
|
29
|
+
@remove_source_directory = false
|
30
|
+
options.on( "--rm-src", "Remove the source directory." ) {
|
31
|
+
@remove_source_directory = true
|
32
|
+
}
|
33
|
+
|
34
|
+
options.on( "--rm-both", "Remove the source and build directory." ) {
|
35
|
+
@remove_source_directory = true
|
36
|
+
@remove_build_directory = true
|
37
|
+
}
|
38
|
+
super
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def do_execute_module( mod )
|
43
|
+
remove_source_directory( mod, true ) if @remove_source_directory
|
44
|
+
remove_build_directory( mod, true ) if @remove_build_directory
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end # class
|
49
|
+
|
50
|
+
end; end; end # module BuildTool::Commands::Modules
|
51
|
+
|
52
|
+
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'build-tool/commands'
|
4
|
+
|
5
|
+
module BuildTool; module Commands; module Modules
|
6
|
+
|
7
|
+
#
|
8
|
+
# BuildCommand
|
9
|
+
#
|
10
|
+
class Disable < ModuleBasedCommand
|
11
|
+
|
12
|
+
name 'disable'
|
13
|
+
description 'Disable the given modules.'
|
14
|
+
long_description [ 'Sets the modules status.' ]
|
15
|
+
|
16
|
+
def initialize_options
|
17
|
+
options.banner = "Usage: #{self.fullname} [OPTIONS]... FEATURE..."
|
18
|
+
options.separator( "" )
|
19
|
+
options.separator( "Options" )
|
20
|
+
|
21
|
+
@default = false
|
22
|
+
options.on( "--default", "Set to use default state if possible." ) { |t|
|
23
|
+
@default = true
|
24
|
+
}
|
25
|
+
|
26
|
+
@remove_build_directory = false
|
27
|
+
options.on( "--rm-bld", "Remove the build directory." ) {
|
28
|
+
@remove_build_directory = true
|
29
|
+
}
|
30
|
+
|
31
|
+
@remove_source_directory = false
|
32
|
+
options.on( "--rm-src", "Remove the source directory." ) {
|
33
|
+
@remove_source_directory = true
|
34
|
+
}
|
35
|
+
|
36
|
+
options.on( "--rm-both", "Remove the source and build directory." ) {
|
37
|
+
@remove_source_directory = true
|
38
|
+
@remove_build_directory = true
|
39
|
+
}
|
40
|
+
|
41
|
+
super
|
42
|
+
|
43
|
+
# We want to allways match all modules here.
|
44
|
+
@all = true
|
45
|
+
end
|
46
|
+
|
47
|
+
def applicable?
|
48
|
+
BuildTool::Application.instance.has_recipe?
|
49
|
+
end
|
50
|
+
|
51
|
+
def do_execute( args )
|
52
|
+
super( args )
|
53
|
+
configuration.save()
|
54
|
+
return 0
|
55
|
+
end
|
56
|
+
|
57
|
+
def do_execute_module( mod )
|
58
|
+
if @default and mod.default_active? == false
|
59
|
+
info( '%s: using default (disabled).' % mod.name )
|
60
|
+
mod.active = nil
|
61
|
+
else
|
62
|
+
info( '%s: disabled explicitely.' % mod.name )
|
63
|
+
mod.active = false
|
64
|
+
end
|
65
|
+
|
66
|
+
if mod.source_directory.exist?
|
67
|
+
if @remove_source_directory
|
68
|
+
remove_source_directory( mod, true )
|
69
|
+
else
|
70
|
+
info( 'Source directory %s still exists.' % mod.source_directory )
|
71
|
+
verbose( 'module clean --rm-src to remove it' )
|
72
|
+
end
|
73
|
+
elsif @remove_source_directory
|
74
|
+
info( 'Source directory does not exist.' )
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
if mod.build_directory.exist?
|
79
|
+
if @remove_build_directory
|
80
|
+
remove_build_directory( mod, true )
|
81
|
+
else
|
82
|
+
info( 'Build directory %s still exists.' % mod.build_directory )
|
83
|
+
verbose( 'module clean --rm-bld to remove it' )
|
84
|
+
end
|
85
|
+
elsif @remove_build_directory
|
86
|
+
info( 'Build directory does not exist.' )
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end # class Activate
|
91
|
+
|
92
|
+
end; end; end # module BuildTool::Commands::Modules
|
93
|
+
|
94
|
+
|
95
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'build-tool/commands'
|
4
|
+
|
5
|
+
module BuildTool; module Commands; module Modules
|
6
|
+
|
7
|
+
#
|
8
|
+
# BuildCommand
|
9
|
+
#
|
10
|
+
class Enable < ModuleBasedCommand
|
11
|
+
|
12
|
+
name 'enable'
|
13
|
+
description 'Enable the given modules.'
|
14
|
+
long_description [ 'Sets the modules status.' ]
|
15
|
+
|
16
|
+
def initialize_options
|
17
|
+
options.banner = "Usage: #{self.fullname} [OPTIONS]... FEATURE..."
|
18
|
+
options.separator( "" )
|
19
|
+
options.separator( "Options" )
|
20
|
+
|
21
|
+
@default = false
|
22
|
+
options.on( "--default", "Set to use default state if possible." ) { |t|
|
23
|
+
@default = true
|
24
|
+
}
|
25
|
+
|
26
|
+
super
|
27
|
+
|
28
|
+
# We want to allways match all modules here.
|
29
|
+
@all = true
|
30
|
+
end
|
31
|
+
|
32
|
+
def applicable?
|
33
|
+
BuildTool::Application.instance.has_recipe?
|
34
|
+
end
|
35
|
+
|
36
|
+
def do_execute_module( mod )
|
37
|
+
|
38
|
+
if @default and mod.default_active? == true
|
39
|
+
info( '%-35s: using default (enabled).' % mod.name )
|
40
|
+
mod.active = nil
|
41
|
+
else
|
42
|
+
info( '%-35s: enabled explicitely.' % mod.name )
|
43
|
+
mod.active = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end # class Activate
|
48
|
+
|
49
|
+
end; end; end # module BuildTool::Commands::Modules
|
50
|
+
|
51
|
+
|
52
|
+
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'build-tool/commands'
|
2
4
|
|
3
5
|
module BuildTool; module Commands; module Modules
|
@@ -12,88 +14,95 @@ class Info < ModuleBasedCommand
|
|
12
14
|
|
13
15
|
def do_execute_module( mod )
|
14
16
|
if mod.description
|
15
|
-
|
16
|
-
|
17
|
+
info( mod.description )
|
18
|
+
info( "" )
|
17
19
|
else
|
18
|
-
|
19
|
-
|
20
|
+
info( "No description specified to the module" )
|
21
|
+
info( "" )
|
22
|
+
end
|
23
|
+
if mod.long_description
|
24
|
+
info( mod.long_description )
|
25
|
+
info( "" )
|
20
26
|
end
|
21
|
-
say mod.long_description if mod.long_description
|
22
27
|
|
23
|
-
|
28
|
+
info( "Active: #{mod.active?}" )
|
29
|
+
info( "Status: #{mod.state}" )
|
24
30
|
|
25
31
|
# if mod.repository
|
26
|
-
#
|
32
|
+
# info( "Repository: #{mod.repository.url}/#{mod.remote_path}" )
|
27
33
|
# if mod.repository.sshkey
|
28
|
-
#
|
34
|
+
# info( " SSH Key: '#{mod.repository.sshkey.name}' (#{mod.repository.sshkey.file})" )
|
29
35
|
# end
|
30
|
-
#
|
36
|
+
# info( "Apply Patches: #{mod.patches.join(", ")}" )
|
31
37
|
# else
|
32
|
-
#
|
38
|
+
# info( "Repository: not configured" )
|
33
39
|
# end
|
34
40
|
|
35
41
|
if mod.build_prefix
|
36
|
-
|
37
|
-
|
42
|
+
info( "Local Checkout: #{mod.vcs.local_path} #{mod.checkedout? ? '(EXISTS)' : '(TODO)' }" )
|
43
|
+
info( "Build Directory #{mod.build_directory} #{mod.configured? ? '(CONFIGURED)' : '(TODO)' }" )
|
38
44
|
else
|
39
|
-
|
45
|
+
info( "Local Checkout: build-prefix not configured" )
|
40
46
|
end
|
41
47
|
|
42
|
-
|
48
|
+
info( "Prefix: #{mod.install_prefix.to_s}" )
|
43
49
|
if mod.environment
|
44
|
-
|
50
|
+
info( "Environment: %s (%s)" % [ mod.environment.name, mod.environment.active? ? 'A' : 'I' ] )
|
45
51
|
mod.environment.vars.sort.each do |var|
|
46
|
-
|
52
|
+
info( " %-20s %s" % [ var + ":", mod.environment[var] ] )
|
47
53
|
end
|
48
54
|
else
|
49
|
-
|
55
|
+
info( "Environment: Not configured" )
|
50
56
|
end
|
51
57
|
|
52
|
-
|
58
|
+
info( "VCS: #{mod.vcs_configuration ? mod.vcs_configuration.name : 'not configured' }" )
|
53
59
|
if mod.vcs_configuration
|
54
60
|
case mod.vcs_configuration.name
|
55
61
|
when 'svn'
|
56
|
-
|
62
|
+
info( " Repository: %s/%s" % [ mod.vcs_configuration.repository.url, mod.vcs_configuration.remote_path ] )
|
57
63
|
when 'archive'
|
58
|
-
|
64
|
+
info( " URL: %s" % [ mod.vcs.archive_url ] )
|
59
65
|
when 'git'
|
60
|
-
mod.vcs_configuration.
|
66
|
+
mod.vcs_configuration.merged_remote.each do |key, val|
|
61
67
|
if val.push_url
|
62
|
-
|
68
|
+
info( " Remote: %s -> %s (push to %s)" % [ key, val.url, val.push_url ] )
|
63
69
|
else
|
64
|
-
|
70
|
+
info( " Remote: %s -> %s" % [ key, val.url ] )
|
65
71
|
end
|
66
72
|
end
|
67
|
-
|
73
|
+
info( " Track branch: #{mod.vcs_configuration.track_remote}/#{mod.vcs_configuration.track_branch}" )
|
68
74
|
when 'git-svn'
|
69
|
-
|
70
|
-
mod.vcs_configuration.
|
71
|
-
|
75
|
+
info( " Repository: %s/%s" % [ mod.vcs_configuration.repository.url, mod.vcs_configuration.remote_path ] )
|
76
|
+
mod.vcs_configuration.merged_remote.each do |key, val|
|
77
|
+
info( " Remote: %s -> %s" % [ key, val.url ] )
|
72
78
|
end
|
73
|
-
mod.vcs_configuration.
|
74
|
-
|
79
|
+
mod.vcs_configuration.merged_externals.each do |key, val|
|
80
|
+
info( " External: #{key} -> #{val}" )
|
75
81
|
end
|
76
82
|
else
|
77
|
-
|
83
|
+
warn( "Unknown vcs #{mod.vcs_configuration.name}" )
|
78
84
|
end
|
79
85
|
end # if mod.vcs_configuration
|
80
86
|
|
81
87
|
bs = mod.build_system
|
82
88
|
if bs
|
83
|
-
|
84
|
-
|
89
|
+
info( "Build System: #{bs.name}" )
|
90
|
+
info( " Out Of Source Build #{bs.out_of_source}" )
|
85
91
|
bs.option_names.sort.each do |var|
|
86
|
-
|
92
|
+
info( " %-28s %s" % [ var + ":", bs[var] ] )
|
87
93
|
end
|
88
94
|
else
|
89
|
-
|
95
|
+
info( "Build System: Not configured" )
|
90
96
|
end
|
91
97
|
|
92
98
|
return 0
|
93
99
|
end
|
94
100
|
|
95
101
|
def initialize_options
|
96
|
-
|
102
|
+
options.banner = "Usage: #{self.fullname} [OPTIONS]... MODULES..."
|
103
|
+
options.separator( "" )
|
104
|
+
options.separator( "Options" )
|
105
|
+
|
97
106
|
options.on( "--all", "Include inactive modules." ) {
|
98
107
|
@all = true
|
99
108
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'build-tool/commands'
|
2
4
|
|
3
5
|
module BuildTool; module Commands; module Modules
|
@@ -9,49 +11,99 @@ class List < Standard
|
|
9
11
|
|
10
12
|
name "list"
|
11
13
|
description "list modules"
|
12
|
-
long_description [
|
13
|
-
|
14
|
+
long_description [
|
15
|
+
"Shows a list of modules. Without a parameter all active modules are shown. When given",
|
16
|
+
"parameters list all modules matching them. The list is sorted alphabetically.",
|
17
|
+
"",
|
18
|
+
"The first two columns of the output are each one character wide:",
|
19
|
+
" First column: Is the module active?",
|
20
|
+
" 'A': Active",
|
21
|
+
" 'I': Inactive",
|
22
|
+
" Second column: State of the modules last build.",
|
23
|
+
" 'R': Running",
|
24
|
+
" 'C': Cancelled by user",
|
25
|
+
" 'S': Successfull",
|
26
|
+
" 'E': Had errors",
|
27
|
+
" Third column: The module name.",
|
28
|
+
" Fourth column: The modules short description." ]
|
14
29
|
cmdalias "lsmods"
|
15
30
|
|
16
31
|
def initialize_options
|
17
|
-
|
18
|
-
|
19
|
-
|
32
|
+
options.banner = "Usage: #{self.fullname} [OPTIONS]... [MODULE|GROUP]..."
|
33
|
+
options.separator( "" )
|
34
|
+
options.separator( "Options" )
|
20
35
|
|
21
|
-
@
|
36
|
+
@all = true
|
22
37
|
|
38
|
+
@active = true
|
39
|
+
@inactive = false
|
23
40
|
options.on( "--all", "Include inactive modules." ) {
|
24
|
-
@
|
41
|
+
@active = true
|
42
|
+
@inactive = true
|
25
43
|
}
|
26
44
|
|
45
|
+
options.on( "--disabled", "Only show inactive modules." ) {
|
46
|
+
@active = false
|
47
|
+
@inactive = true
|
48
|
+
}
|
49
|
+
|
50
|
+
@template = false
|
27
51
|
options.on( "--template", "Include template modules." ) {
|
28
52
|
@template = true
|
29
53
|
}
|
30
54
|
|
55
|
+
@broken = false
|
56
|
+
options.on( "--broken", "Show only broken modules." ) {
|
57
|
+
@broken = true
|
58
|
+
}
|
59
|
+
|
60
|
+
@sort = true
|
61
|
+
options.on( "--no-sort", "Show modules in order of declaration." ) {
|
62
|
+
@sort = false
|
63
|
+
}
|
64
|
+
|
31
65
|
super
|
32
66
|
end
|
33
67
|
|
34
68
|
def do_execute( args )
|
35
69
|
# *TODO* listing local and remote recipes
|
36
70
|
if args.length == 0
|
37
|
-
configuration.modules
|
38
|
-
if @template or not mod.is_template?
|
39
|
-
say "%-30s : %s" % [ mod.name, mod.description || "No description specified" ] if ( mod.active? || @all )
|
40
|
-
end
|
41
|
-
end
|
71
|
+
show_modules( configuration.modules )
|
42
72
|
else
|
43
73
|
args.each do |arg|
|
44
74
|
mods = complete_modules( arg, @template )
|
45
75
|
next if !mods
|
46
|
-
mods
|
47
|
-
say "%-30s : %s" % [ mod.name, mod.description || "No description specified" ] if ( mod.active? || @all )
|
48
|
-
end
|
76
|
+
show_modules( mods )
|
49
77
|
end
|
50
78
|
end
|
51
79
|
|
52
80
|
return 0
|
53
81
|
end
|
54
82
|
|
83
|
+
def show_modules( mods )
|
84
|
+
mods = mods.sort if @sort
|
85
|
+
mods.each do |mod|
|
86
|
+
show_module( mod )
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def show_module( mod )
|
91
|
+
return if @broken and not mod.broken?
|
92
|
+
if mod.active?
|
93
|
+
return if not @active
|
94
|
+
else
|
95
|
+
return if not @inactive
|
96
|
+
end
|
97
|
+
return if mod.is_template? and not @template
|
98
|
+
|
99
|
+
if @broken
|
100
|
+
info( "%s%s %-35s : %-25s" % [ mod.active_char, mod.state_char, mod.name, mod.state ] )
|
101
|
+
else
|
102
|
+
info( "%s%s %-35s : %s" % [ mod.active_char, mod.state_char, mod.name, mod.description || "No description specified" ] )
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
|
55
107
|
end # class
|
56
108
|
|
57
109
|
end; end; end # module BuildTool::Commands::Modules
|