fig 0.1.65 → 0.1.67
Sign up to get free protection for your applications and to get access to all the features.
- data/Changes +29 -0
- data/bin/fig +1 -1
- data/bin/fig-debug +1 -1
- data/lib/fig.rb +3 -0
- data/lib/fig/{applicationconfiguration.rb → application_configuration.rb} +0 -0
- data/lib/fig/{atexit.rb → at_exit.rb} +0 -0
- data/lib/fig/command.rb +190 -200
- data/lib/fig/command/action.rb +83 -0
- data/lib/fig/command/action/clean.rb +33 -0
- data/lib/fig/command/action/get.rb +48 -0
- data/lib/fig/command/action/help.rb +29 -0
- data/lib/fig/command/action/list_configs.rb +39 -0
- data/lib/fig/command/action/list_dependencies.rb +19 -0
- data/lib/fig/command/action/list_dependencies/all_configs.rb +44 -0
- data/lib/fig/command/action/list_dependencies/default.rb +40 -0
- data/lib/fig/command/action/list_dependencies/tree.rb +40 -0
- data/lib/fig/command/action/list_dependencies/tree_all_configs.rb +40 -0
- data/lib/fig/command/action/list_local.rb +29 -0
- data/lib/fig/command/action/list_remote.rb +33 -0
- data/lib/fig/command/action/list_variables.rb +23 -0
- data/lib/fig/command/action/list_variables/all_configs.rb +61 -0
- data/lib/fig/command/action/list_variables/default.rb +48 -0
- data/lib/fig/command/action/list_variables/tree.rb +20 -0
- data/lib/fig/command/action/list_variables/tree_all_configs.rb +20 -0
- data/lib/fig/command/action/publish.rb +52 -0
- data/lib/fig/command/action/publish_local.rb +29 -0
- data/lib/fig/command/action/role/has_no_sub_action.rb +10 -0
- data/lib/fig/command/action/role/has_sub_action.rb +58 -0
- data/lib/fig/command/action/role/list_all_configs.rb +14 -0
- data/lib/fig/command/action/role/list_base_config.rb +14 -0
- data/lib/fig/command/action/role/list_dependencies_flat.rb +22 -0
- data/lib/fig/command/action/role/list_dependencies_in_a_tree.rb +21 -0
- data/lib/fig/command/action/role/list_variables_in_a_tree.rb +150 -0
- data/lib/fig/command/action/role/list_walking_dependency_tree.rb +90 -0
- data/lib/fig/command/action/role/publish.rb +90 -0
- data/lib/fig/command/action/role/update.rb +46 -0
- data/lib/fig/command/action/run_command_line.rb +45 -0
- data/lib/fig/command/action/run_command_statement.rb +52 -0
- data/lib/fig/command/action/update.rb +17 -0
- data/lib/fig/command/action/update_if_missing.rb +17 -0
- data/lib/fig/command/action/version.rb +27 -0
- data/lib/fig/command/{coveragesupport.rb → coverage_support.rb} +0 -0
- data/lib/fig/command/{optionerror.rb → option_error.rb} +1 -1
- data/lib/fig/command/options.rb +185 -127
- data/lib/fig/command/package_applier.rb +140 -0
- data/lib/fig/command/package_loader.rb +124 -0
- data/lib/fig/{configfileerror.rb → config_file_error.rb} +1 -1
- data/lib/fig/{environmentvariables.rb → environment_variables.rb} +0 -0
- data/lib/fig/{environmentvariables/caseinsensitive.rb → environment_variables/case_insensitive.rb} +1 -1
- data/lib/fig/{environmentvariables/casesensitive.rb → environment_variables/case_sensitive.rb} +1 -1
- data/lib/fig/figrc.rb +3 -3
- data/lib/fig/grammar.treetop +1 -1
- data/lib/fig/{backtrace.rb → include_backtrace.rb} +7 -2
- data/lib/fig/log4r/outputter.rb +1 -1
- data/lib/fig/{log4rconfigerror.rb → log4r_config_error.rb} +1 -1
- data/lib/fig/logging.rb +2 -2
- data/lib/fig/{networkerror.rb → network_error.rb} +1 -1
- data/lib/fig/{nosuchpackageconfigerror.rb → no_such_package_config_error.rb} +2 -2
- data/lib/fig/{notfounderror.rb → not_found_error.rb} +0 -0
- data/lib/fig/{operatingsystem.rb → operating_system.rb} +5 -5
- data/lib/fig/package.rb +3 -3
- data/lib/fig/{packagecache.rb → package_cache.rb} +0 -0
- data/lib/fig/{packagedescriptor.rb → package_descriptor.rb} +1 -1
- data/lib/fig/{packagedescriptorparseerror.rb → package_descriptor_parse_error.rb} +1 -1
- data/lib/fig/{packageparseerror.rb → package_parse_error.rb} +1 -1
- data/lib/fig/parser.rb +4 -4
- data/lib/fig/{parserpackagebuildstate.rb → parser_package_build_state.rb} +1 -1
- data/lib/fig/repository.rb +17 -17
- data/lib/fig/{repositoryerror.rb → repository_error.rb} +1 -1
- data/lib/fig/{environment.rb → runtime_environment.rb} +15 -8
- data/lib/fig/statement/include.rb +1 -1
- data/lib/fig/statement/override.rb +1 -1
- data/lib/fig/{urlaccesserror.rb → url_access_error.rb} +1 -1
- data/lib/fig/{userinputerror.rb → user_input_error.rb} +0 -0
- data/lib/fig/{workingdirectorymaintainer.rb → working_directory_maintainer.rb} +4 -4
- data/lib/fig/{workingdirectorymetadata.rb → working_directory_metadata.rb} +0 -0
- metadata +88 -54
- data/VERSION +0 -1
- data/lib/fig/command/listing.rb +0 -363
- data/lib/fig/command/packageload.rb +0 -236
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/command/action/role/has_no_sub_action'
|
3
|
+
|
4
|
+
module Fig; end
|
5
|
+
class Fig::Command; end
|
6
|
+
module Fig::Command::Action; end
|
7
|
+
|
8
|
+
class Fig::Command::Action::ListRemote
|
9
|
+
include Fig::Command::Action
|
10
|
+
include Fig::Command::Action::Role::HasNoSubAction
|
11
|
+
|
12
|
+
def options()
|
13
|
+
return %w<--list-remote>
|
14
|
+
end
|
15
|
+
|
16
|
+
def descriptor_requirement()
|
17
|
+
return :warn
|
18
|
+
end
|
19
|
+
|
20
|
+
def load_base_package?()
|
21
|
+
return nil # Don't care.
|
22
|
+
end
|
23
|
+
|
24
|
+
def remote_operation_necessary?()
|
25
|
+
return true
|
26
|
+
end
|
27
|
+
|
28
|
+
def execute()
|
29
|
+
@execution_context.repository.list_remote_packages.sort.each {|item| puts item}
|
30
|
+
|
31
|
+
return EXIT_SUCCESS
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/command/action/role/has_sub_action'
|
3
|
+
|
4
|
+
module Fig; end
|
5
|
+
class Fig::Command; end
|
6
|
+
module Fig::Command::Action; end
|
7
|
+
|
8
|
+
class Fig::Command::Action::ListVariables
|
9
|
+
include Fig::Command::Action
|
10
|
+
include Fig::Command::Action::Role::HasSubAction
|
11
|
+
|
12
|
+
def options()
|
13
|
+
if sub_action
|
14
|
+
return sub_action.options
|
15
|
+
end
|
16
|
+
|
17
|
+
return %w<--list-variables>
|
18
|
+
end
|
19
|
+
|
20
|
+
def reset_environment?()
|
21
|
+
return true
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
require 'fig/command/action'
|
4
|
+
require 'fig/command/action/role/list_all_configs'
|
5
|
+
require 'fig/command/action/role/list_walking_dependency_tree'
|
6
|
+
require 'fig/statement/path'
|
7
|
+
require 'fig/statement/set'
|
8
|
+
|
9
|
+
module Fig; end
|
10
|
+
class Fig::Command; end
|
11
|
+
module Fig::Command::Action; end
|
12
|
+
class Fig::Command::Action::ListVariables; end
|
13
|
+
|
14
|
+
class Fig::Command::Action::ListVariables::AllConfigs
|
15
|
+
include Fig::Command::Action
|
16
|
+
include Fig::Command::Action::Role::ListAllConfigs
|
17
|
+
include Fig::Command::Action::Role::ListWalkingDependencyTree
|
18
|
+
|
19
|
+
def options()
|
20
|
+
return %w<--list-variables --list-all-configs>
|
21
|
+
end
|
22
|
+
|
23
|
+
def descriptor_requirement()
|
24
|
+
return nil
|
25
|
+
end
|
26
|
+
|
27
|
+
def load_base_package?()
|
28
|
+
return true
|
29
|
+
end
|
30
|
+
|
31
|
+
def register_base_package?()
|
32
|
+
return nil # don't care
|
33
|
+
end
|
34
|
+
|
35
|
+
def apply_config?()
|
36
|
+
return nil # don't care
|
37
|
+
end
|
38
|
+
|
39
|
+
def execute()
|
40
|
+
variable_names = Set.new()
|
41
|
+
|
42
|
+
walk_dependency_tree(
|
43
|
+
@execution_context.base_package, base_display_config_names(), nil, 0
|
44
|
+
) do
|
45
|
+
|package, config_name, depth|
|
46
|
+
|
47
|
+
package[config_name].walk_statements() do |statement|
|
48
|
+
case statement
|
49
|
+
when Fig::Statement::Path
|
50
|
+
variable_names << statement.name()
|
51
|
+
when Fig::Statement::Set
|
52
|
+
variable_names << statement.name()
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
variable_names.sort.each { |name| puts name }
|
58
|
+
|
59
|
+
return EXIT_SUCCESS
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
|
3
|
+
module Fig; end
|
4
|
+
class Fig::Command; end
|
5
|
+
module Fig::Command::Action; end
|
6
|
+
class Fig::Command::Action::ListVariables; end
|
7
|
+
|
8
|
+
class Fig::Command::Action::ListVariables::Default
|
9
|
+
include Fig::Command::Action
|
10
|
+
|
11
|
+
def options()
|
12
|
+
return %w<--list-variables>
|
13
|
+
end
|
14
|
+
|
15
|
+
def descriptor_requirement()
|
16
|
+
return nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def load_base_package?()
|
20
|
+
return true
|
21
|
+
end
|
22
|
+
|
23
|
+
def register_base_package?()
|
24
|
+
return true
|
25
|
+
end
|
26
|
+
|
27
|
+
def apply_config?()
|
28
|
+
return true
|
29
|
+
end
|
30
|
+
|
31
|
+
def apply_base_config?()
|
32
|
+
return true
|
33
|
+
end
|
34
|
+
|
35
|
+
def execute()
|
36
|
+
variables = @execution_context.environment.variables()
|
37
|
+
|
38
|
+
if variables.empty? and $stdout.tty?
|
39
|
+
puts '<no variables>'
|
40
|
+
else
|
41
|
+
variables.keys.sort.each do |variable|
|
42
|
+
puts variable + "=" + variables[variable]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
return EXIT_SUCCESS
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/command/action/role/list_base_config'
|
3
|
+
require 'fig/command/action/role/list_variables_in_a_tree'
|
4
|
+
require 'fig/command/action/role/list_walking_dependency_tree'
|
5
|
+
|
6
|
+
module Fig; end
|
7
|
+
class Fig::Command; end
|
8
|
+
module Fig::Command::Action; end
|
9
|
+
class Fig::Command::Action::ListVariables; end
|
10
|
+
|
11
|
+
class Fig::Command::Action::ListVariables::Tree
|
12
|
+
include Fig::Command::Action
|
13
|
+
include Fig::Command::Action::Role::ListBaseConfig
|
14
|
+
include Fig::Command::Action::Role::ListVariablesInATree
|
15
|
+
include Fig::Command::Action::Role::ListWalkingDependencyTree
|
16
|
+
|
17
|
+
def options()
|
18
|
+
return %w<--list-variables --list-tree>
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/command/action/role/list_all_configs'
|
3
|
+
require 'fig/command/action/role/list_variables_in_a_tree'
|
4
|
+
require 'fig/command/action/role/list_walking_dependency_tree'
|
5
|
+
|
6
|
+
module Fig; end
|
7
|
+
class Fig::Command; end
|
8
|
+
module Fig::Command::Action; end
|
9
|
+
class Fig::Command::Action::ListVariables; end
|
10
|
+
|
11
|
+
class Fig::Command::Action::ListVariables::TreeAllConfigs
|
12
|
+
include Fig::Command::Action
|
13
|
+
include Fig::Command::Action::Role::ListAllConfigs
|
14
|
+
include Fig::Command::Action::Role::ListVariablesInATree
|
15
|
+
include Fig::Command::Action::Role::ListWalkingDependencyTree
|
16
|
+
|
17
|
+
def options()
|
18
|
+
return %w<--list-variables --list-tree --list-all-configs>
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/command/action/role/has_no_sub_action'
|
3
|
+
require 'fig/command/action/role/publish'
|
4
|
+
require 'fig/logging'
|
5
|
+
require 'fig/user_input_error'
|
6
|
+
|
7
|
+
module Fig; end
|
8
|
+
class Fig::Command; end
|
9
|
+
module Fig::Command::Action; end
|
10
|
+
|
11
|
+
class Fig::Command::Action::Publish
|
12
|
+
include Fig::Command::Action
|
13
|
+
include Fig::Command::Action::Role::HasNoSubAction
|
14
|
+
include Fig::Command::Action::Role::Publish
|
15
|
+
|
16
|
+
def options()
|
17
|
+
return %w<--publish>
|
18
|
+
end
|
19
|
+
|
20
|
+
def remote_operation_necessary?()
|
21
|
+
return true
|
22
|
+
end
|
23
|
+
|
24
|
+
def execute()
|
25
|
+
publish_preflight()
|
26
|
+
|
27
|
+
Fig::Logging.info "Checking status of #{@descriptor.to_string()}..."
|
28
|
+
|
29
|
+
package_description =
|
30
|
+
Fig::PackageDescriptor.format(@descriptor.name, @descriptor.version, nil)
|
31
|
+
if @execution_context.repository.list_remote_packages.include?(
|
32
|
+
package_description
|
33
|
+
)
|
34
|
+
Fig::Logging.info "#{@descriptor.to_string()} has already been published."
|
35
|
+
|
36
|
+
if not @force
|
37
|
+
raise UserInputError.new(
|
38
|
+
'Use the --force option if you really want to overwrite.'
|
39
|
+
)
|
40
|
+
else
|
41
|
+
Fig::Logging.info 'Overwriting...'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
Fig::Logging.info "Publishing #{@descriptor.to_string()}."
|
46
|
+
@execution_context.repository.publish_package(
|
47
|
+
@publish_statements, @descriptor, false
|
48
|
+
)
|
49
|
+
|
50
|
+
return EXIT_SUCCESS
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/command/action/role/has_no_sub_action'
|
3
|
+
require 'fig/command/action/role/publish'
|
4
|
+
require 'fig/logging'
|
5
|
+
|
6
|
+
module Fig; end
|
7
|
+
class Fig::Command; end
|
8
|
+
module Fig::Command::Action; end
|
9
|
+
|
10
|
+
class Fig::Command::Action::PublishLocal
|
11
|
+
include Fig::Command::Action
|
12
|
+
include Fig::Command::Action::Role::HasNoSubAction
|
13
|
+
include Fig::Command::Action::Role::Publish
|
14
|
+
|
15
|
+
def options()
|
16
|
+
return %w<--publish-local>
|
17
|
+
end
|
18
|
+
|
19
|
+
def execute()
|
20
|
+
publish_preflight()
|
21
|
+
|
22
|
+
Fig::Logging.info "Publishing #{@descriptor.to_string()}."
|
23
|
+
@execution_context.repository.publish_package(
|
24
|
+
@publish_statements, @descriptor, :publish_local
|
25
|
+
)
|
26
|
+
|
27
|
+
return EXIT_SUCCESS
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Fig; end
|
2
|
+
class Fig::Command; end
|
3
|
+
module Fig::Command::Action; end
|
4
|
+
module Fig::Command::Action::Role; end
|
5
|
+
|
6
|
+
module Fig::Command::Action::Role::HasSubAction
|
7
|
+
attr_accessor :sub_action
|
8
|
+
|
9
|
+
def sub_action?()
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
13
|
+
def check_sub_action_presence()
|
14
|
+
return if sub_action
|
15
|
+
|
16
|
+
raise 'Bug in code. Sub-action missing.'
|
17
|
+
end
|
18
|
+
|
19
|
+
def descriptor_requirement()
|
20
|
+
check_sub_action_presence()
|
21
|
+
return sub_action.descriptor_requirement()
|
22
|
+
end
|
23
|
+
|
24
|
+
def load_base_package?()
|
25
|
+
check_sub_action_presence()
|
26
|
+
return sub_action.load_base_package?
|
27
|
+
end
|
28
|
+
|
29
|
+
def register_base_package?()
|
30
|
+
check_sub_action_presence()
|
31
|
+
return sub_action.register_base_package?
|
32
|
+
end
|
33
|
+
|
34
|
+
def apply_config?()
|
35
|
+
check_sub_action_presence()
|
36
|
+
return sub_action.apply_config?
|
37
|
+
end
|
38
|
+
|
39
|
+
def apply_base_config?()
|
40
|
+
check_sub_action_presence()
|
41
|
+
return sub_action.apply_base_config?
|
42
|
+
end
|
43
|
+
|
44
|
+
def configure(options)
|
45
|
+
check_sub_action_presence()
|
46
|
+
return sub_action.configure(options)
|
47
|
+
end
|
48
|
+
|
49
|
+
def execution_context=(context)
|
50
|
+
check_sub_action_presence()
|
51
|
+
sub_action.execution_context = context
|
52
|
+
end
|
53
|
+
|
54
|
+
def execute()
|
55
|
+
check_sub_action_presence()
|
56
|
+
return sub_action.execute()
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Fig; end
|
2
|
+
class Fig::Command; end
|
3
|
+
module Fig::Command::Action; end
|
4
|
+
module Fig::Command::Action::Role; end
|
5
|
+
|
6
|
+
module Fig::Command::Action::Role::ListAllConfigs
|
7
|
+
def list_all_configs?
|
8
|
+
return true
|
9
|
+
end
|
10
|
+
|
11
|
+
def base_display_config_names()
|
12
|
+
return @execution_context.base_package.config_names
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Fig; end
|
2
|
+
class Fig::Command; end
|
3
|
+
module Fig::Command::Action; end
|
4
|
+
module Fig::Command::Action::Role; end
|
5
|
+
|
6
|
+
module Fig::Command::Action::Role::ListBaseConfig
|
7
|
+
def list_all_configs?
|
8
|
+
return false
|
9
|
+
end
|
10
|
+
|
11
|
+
def base_display_config_names()
|
12
|
+
return [@execution_context.base_config]
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
|
3
|
+
module Fig; end
|
4
|
+
class Fig::Command; end
|
5
|
+
module Fig::Command::Action; end
|
6
|
+
module Fig::Command::Action::Role; end
|
7
|
+
|
8
|
+
module Fig::Command::Action::Role::ListDependenciesFlat
|
9
|
+
def execute()
|
10
|
+
packages = gather_package_dependency_configurations()
|
11
|
+
|
12
|
+
if packages.empty? and $stdout.tty?
|
13
|
+
puts '<no dependencies>'
|
14
|
+
else
|
15
|
+
strings = derive_package_strings(packages)
|
16
|
+
|
17
|
+
puts strings.uniq.sort.join("\n")
|
18
|
+
end
|
19
|
+
|
20
|
+
return Fig::Command::Action::EXIT_SUCCESS
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
|
3
|
+
module Fig; end
|
4
|
+
class Fig::Command; end
|
5
|
+
module Fig::Command::Action; end
|
6
|
+
module Fig::Command::Action::Role; end
|
7
|
+
|
8
|
+
module Fig::Command::Action::Role::ListDependenciesInATree
|
9
|
+
def execute()
|
10
|
+
walk_dependency_tree(
|
11
|
+
@execution_context.base_package, base_display_config_names(), nil, 0
|
12
|
+
) do
|
13
|
+
|package, config_name, depth|
|
14
|
+
|
15
|
+
print ' ' * (depth * 4)
|
16
|
+
puts package.to_s_with_config(config_name)
|
17
|
+
end
|
18
|
+
|
19
|
+
return Fig::Command::Action::EXIT_SUCCESS
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'fig/command/action'
|
2
|
+
require 'fig/statement/path'
|
3
|
+
require 'fig/statement/set'
|
4
|
+
|
5
|
+
module Fig; end
|
6
|
+
class Fig::Command; end
|
7
|
+
module Fig::Command::Action; end
|
8
|
+
module Fig::Command::Action::Role; end
|
9
|
+
|
10
|
+
module Fig::Command::Action::Role::ListVariablesInATree
|
11
|
+
def descriptor_requirement()
|
12
|
+
return nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def load_base_package?()
|
16
|
+
return true
|
17
|
+
end
|
18
|
+
|
19
|
+
def register_base_package?()
|
20
|
+
return nil # don't care
|
21
|
+
end
|
22
|
+
|
23
|
+
def apply_config?()
|
24
|
+
return nil # don't care
|
25
|
+
end
|
26
|
+
|
27
|
+
def execute()
|
28
|
+
# We can't just display as we walk the dependency tree because we need to
|
29
|
+
# know in advance how many configurations we're going display under
|
30
|
+
# another.
|
31
|
+
tree = build_variable_tree()
|
32
|
+
|
33
|
+
tree.child_configs().each do
|
34
|
+
|child|
|
35
|
+
|
36
|
+
display_variable_tree_level(child, '', '')
|
37
|
+
end
|
38
|
+
|
39
|
+
return Fig::Command::Action::EXIT_SUCCESS
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
VariableTreePackageConfig =
|
45
|
+
Struct.new(
|
46
|
+
:package, :config_name, :variable_statements, :child_configs, :parent
|
47
|
+
)
|
48
|
+
|
49
|
+
def build_variable_tree()
|
50
|
+
tree = VariableTreePackageConfig.new(nil, nil, nil, [], nil)
|
51
|
+
prior_depth = 0
|
52
|
+
prior_node = nil
|
53
|
+
current_parent = tree
|
54
|
+
|
55
|
+
walk_dependency_tree(
|
56
|
+
@execution_context.base_package, base_display_config_names(), nil, 0
|
57
|
+
) do
|
58
|
+
|package, config_name, depth|
|
59
|
+
|
60
|
+
if depth < prior_depth
|
61
|
+
(depth .. (prior_depth - 1)).each do
|
62
|
+
current_parent = current_parent.parent
|
63
|
+
end
|
64
|
+
elsif depth == prior_depth + 1
|
65
|
+
current_parent = prior_node
|
66
|
+
elsif depth > prior_depth
|
67
|
+
raise "Bug in code! Descended more than one level! (#{prior_depth} to #{depth}"
|
68
|
+
end
|
69
|
+
|
70
|
+
variable_statements = gather_variable_statements(package[config_name])
|
71
|
+
node = VariableTreePackageConfig.new(
|
72
|
+
package, config_name, variable_statements, [], current_parent
|
73
|
+
)
|
74
|
+
current_parent.child_configs() << node
|
75
|
+
|
76
|
+
prior_depth = depth
|
77
|
+
prior_node = node
|
78
|
+
end
|
79
|
+
|
80
|
+
return tree
|
81
|
+
end
|
82
|
+
|
83
|
+
def gather_variable_statements(config_statement)
|
84
|
+
variable_statements = []
|
85
|
+
config_statement.walk_statements() do |statement|
|
86
|
+
case statement
|
87
|
+
when Fig::Statement::Path
|
88
|
+
variable_statements << statement
|
89
|
+
when Fig::Statement::Set
|
90
|
+
variable_statements << statement
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
return variable_statements
|
95
|
+
end
|
96
|
+
|
97
|
+
def display_variable_tree_level(node, base_indent, package_indent)
|
98
|
+
print package_indent
|
99
|
+
puts node.package().to_s_with_config(node.config_name())
|
100
|
+
|
101
|
+
display_variable_tree_level_variables(node, base_indent)
|
102
|
+
|
103
|
+
child_configs = node.child_configs()
|
104
|
+
child_count = child_configs.size()
|
105
|
+
|
106
|
+
new_indent = base_indent + (child_count > 0 ? '|' : ' ') + ' ' * 3
|
107
|
+
new_package_indent = base_indent + %q<'--->
|
108
|
+
|
109
|
+
(0 .. (child_count - 2)).each do
|
110
|
+
|child_index|
|
111
|
+
|
112
|
+
display_variable_tree_level(
|
113
|
+
child_configs[child_index], new_indent, new_package_indent
|
114
|
+
)
|
115
|
+
end
|
116
|
+
|
117
|
+
if child_count > 0
|
118
|
+
display_variable_tree_level(
|
119
|
+
child_configs[-1], (base_indent + ' ' * 4), new_package_indent
|
120
|
+
)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def display_variable_tree_level_variables(node, base_indent)
|
125
|
+
if node.child_configs().size() > 0
|
126
|
+
variable_indent = base_indent + '|' + ' ' * 3
|
127
|
+
else
|
128
|
+
variable_indent = base_indent + ' ' * 4
|
129
|
+
end
|
130
|
+
|
131
|
+
variable_statements = node.variable_statements()
|
132
|
+
|
133
|
+
name_width =
|
134
|
+
(variable_statements.map { |statement| statement.name().length() }).max()
|
135
|
+
|
136
|
+
variable_statements.each do
|
137
|
+
|statement|
|
138
|
+
|
139
|
+
print "#{variable_indent}"
|
140
|
+
print "#{statement.name().ljust(name_width)}"
|
141
|
+
print " = #{statement.value}"
|
142
|
+
if statement.is_a?(Fig::Statement::Path)
|
143
|
+
print ":$#{statement.name}"
|
144
|
+
end
|
145
|
+
print "\n"
|
146
|
+
end
|
147
|
+
|
148
|
+
return
|
149
|
+
end
|
150
|
+
end
|