fig 0.1.65 → 0.1.67

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/Changes +29 -0
  2. data/bin/fig +1 -1
  3. data/bin/fig-debug +1 -1
  4. data/lib/fig.rb +3 -0
  5. data/lib/fig/{applicationconfiguration.rb → application_configuration.rb} +0 -0
  6. data/lib/fig/{atexit.rb → at_exit.rb} +0 -0
  7. data/lib/fig/command.rb +190 -200
  8. data/lib/fig/command/action.rb +83 -0
  9. data/lib/fig/command/action/clean.rb +33 -0
  10. data/lib/fig/command/action/get.rb +48 -0
  11. data/lib/fig/command/action/help.rb +29 -0
  12. data/lib/fig/command/action/list_configs.rb +39 -0
  13. data/lib/fig/command/action/list_dependencies.rb +19 -0
  14. data/lib/fig/command/action/list_dependencies/all_configs.rb +44 -0
  15. data/lib/fig/command/action/list_dependencies/default.rb +40 -0
  16. data/lib/fig/command/action/list_dependencies/tree.rb +40 -0
  17. data/lib/fig/command/action/list_dependencies/tree_all_configs.rb +40 -0
  18. data/lib/fig/command/action/list_local.rb +29 -0
  19. data/lib/fig/command/action/list_remote.rb +33 -0
  20. data/lib/fig/command/action/list_variables.rb +23 -0
  21. data/lib/fig/command/action/list_variables/all_configs.rb +61 -0
  22. data/lib/fig/command/action/list_variables/default.rb +48 -0
  23. data/lib/fig/command/action/list_variables/tree.rb +20 -0
  24. data/lib/fig/command/action/list_variables/tree_all_configs.rb +20 -0
  25. data/lib/fig/command/action/publish.rb +52 -0
  26. data/lib/fig/command/action/publish_local.rb +29 -0
  27. data/lib/fig/command/action/role/has_no_sub_action.rb +10 -0
  28. data/lib/fig/command/action/role/has_sub_action.rb +58 -0
  29. data/lib/fig/command/action/role/list_all_configs.rb +14 -0
  30. data/lib/fig/command/action/role/list_base_config.rb +14 -0
  31. data/lib/fig/command/action/role/list_dependencies_flat.rb +22 -0
  32. data/lib/fig/command/action/role/list_dependencies_in_a_tree.rb +21 -0
  33. data/lib/fig/command/action/role/list_variables_in_a_tree.rb +150 -0
  34. data/lib/fig/command/action/role/list_walking_dependency_tree.rb +90 -0
  35. data/lib/fig/command/action/role/publish.rb +90 -0
  36. data/lib/fig/command/action/role/update.rb +46 -0
  37. data/lib/fig/command/action/run_command_line.rb +45 -0
  38. data/lib/fig/command/action/run_command_statement.rb +52 -0
  39. data/lib/fig/command/action/update.rb +17 -0
  40. data/lib/fig/command/action/update_if_missing.rb +17 -0
  41. data/lib/fig/command/action/version.rb +27 -0
  42. data/lib/fig/command/{coveragesupport.rb → coverage_support.rb} +0 -0
  43. data/lib/fig/command/{optionerror.rb → option_error.rb} +1 -1
  44. data/lib/fig/command/options.rb +185 -127
  45. data/lib/fig/command/package_applier.rb +140 -0
  46. data/lib/fig/command/package_loader.rb +124 -0
  47. data/lib/fig/{configfileerror.rb → config_file_error.rb} +1 -1
  48. data/lib/fig/{environmentvariables.rb → environment_variables.rb} +0 -0
  49. data/lib/fig/{environmentvariables/caseinsensitive.rb → environment_variables/case_insensitive.rb} +1 -1
  50. data/lib/fig/{environmentvariables/casesensitive.rb → environment_variables/case_sensitive.rb} +1 -1
  51. data/lib/fig/figrc.rb +3 -3
  52. data/lib/fig/grammar.treetop +1 -1
  53. data/lib/fig/{backtrace.rb → include_backtrace.rb} +7 -2
  54. data/lib/fig/log4r/outputter.rb +1 -1
  55. data/lib/fig/{log4rconfigerror.rb → log4r_config_error.rb} +1 -1
  56. data/lib/fig/logging.rb +2 -2
  57. data/lib/fig/{networkerror.rb → network_error.rb} +1 -1
  58. data/lib/fig/{nosuchpackageconfigerror.rb → no_such_package_config_error.rb} +2 -2
  59. data/lib/fig/{notfounderror.rb → not_found_error.rb} +0 -0
  60. data/lib/fig/{operatingsystem.rb → operating_system.rb} +5 -5
  61. data/lib/fig/package.rb +3 -3
  62. data/lib/fig/{packagecache.rb → package_cache.rb} +0 -0
  63. data/lib/fig/{packagedescriptor.rb → package_descriptor.rb} +1 -1
  64. data/lib/fig/{packagedescriptorparseerror.rb → package_descriptor_parse_error.rb} +1 -1
  65. data/lib/fig/{packageparseerror.rb → package_parse_error.rb} +1 -1
  66. data/lib/fig/parser.rb +4 -4
  67. data/lib/fig/{parserpackagebuildstate.rb → parser_package_build_state.rb} +1 -1
  68. data/lib/fig/repository.rb +17 -17
  69. data/lib/fig/{repositoryerror.rb → repository_error.rb} +1 -1
  70. data/lib/fig/{environment.rb → runtime_environment.rb} +15 -8
  71. data/lib/fig/statement/include.rb +1 -1
  72. data/lib/fig/statement/override.rb +1 -1
  73. data/lib/fig/{urlaccesserror.rb → url_access_error.rb} +1 -1
  74. data/lib/fig/{userinputerror.rb → user_input_error.rb} +0 -0
  75. data/lib/fig/{workingdirectorymaintainer.rb → working_directory_maintainer.rb} +4 -4
  76. data/lib/fig/{workingdirectorymetadata.rb → working_directory_metadata.rb} +0 -0
  77. metadata +88 -54
  78. data/VERSION +0 -1
  79. data/lib/fig/command/listing.rb +0 -363
  80. data/lib/fig/command/packageload.rb +0 -236
@@ -0,0 +1,140 @@
1
+ require 'fig/package'
2
+ require 'fig/package_descriptor'
3
+
4
+ module Fig; end
5
+ class Fig::Command; end
6
+
7
+ class Fig::Command::PackageApplier
8
+ def initialize(
9
+ base_package,
10
+ environment,
11
+ options,
12
+ descriptor,
13
+ base_config,
14
+ package_source_description
15
+ )
16
+ @base_package = base_package
17
+ @environment = environment
18
+ @options = options
19
+ @descriptor = descriptor
20
+ @base_config = base_config
21
+ @package_source_description = package_source_description
22
+ end
23
+
24
+ def activate_retrieves()
25
+ @base_package.retrieves.each do |statement|
26
+ @environment.add_retrieve(statement)
27
+ end
28
+
29
+ return
30
+ end
31
+
32
+ def register_package_with_environment()
33
+ @environment.register_package(@base_package)
34
+
35
+ return
36
+ end
37
+
38
+ def apply_config_to_environment(ignore_base_config)
39
+ begin
40
+ @environment.apply_config(
41
+ synthesize_package_for_command_line_options(ignore_base_config),
42
+ Fig::Package::DEFAULT_CONFIG,
43
+ nil
44
+ )
45
+ rescue Fig::NoSuchPackageConfigError => exception
46
+ make_no_such_package_exception_descriptive(exception)
47
+ end
48
+
49
+ return
50
+ end
51
+
52
+ private
53
+
54
+ def config_was_specified_by_user()
55
+ return ! @options.config().nil? ||
56
+ @descriptor && ! @descriptor.config().nil?
57
+ end
58
+
59
+ def synthesize_package_for_command_line_options(ignore_base_config)
60
+ configuration_statements = []
61
+
62
+ if not ignore_base_config
63
+ configuration_statements << Fig::Statement::Include.new(
64
+ nil,
65
+ %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>,
66
+ Fig::PackageDescriptor.new(
67
+ @base_package.name(), @base_package.version(), @base_config
68
+ ),
69
+ nil
70
+ )
71
+ end
72
+
73
+ configuration_statements << @options.environment_statements()
74
+
75
+ configuration_statement =
76
+ Fig::Statement::Configuration.new(
77
+ nil,
78
+ %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>,
79
+ Fig::Package::DEFAULT_CONFIG,
80
+ configuration_statements.flatten()
81
+ )
82
+
83
+ return Fig::Package.new(nil, nil, '.', [configuration_statement])
84
+ end
85
+
86
+ def make_no_such_package_exception_descriptive(exception)
87
+ if not @descriptor
88
+ make_no_such_package_exception_descriptive_without_descriptor(exception)
89
+ end
90
+
91
+ check_no_such_package_exception_is_for_command_line_package(exception)
92
+ source = derive_exception_source()
93
+
94
+ message = %Q<There's no "#{@base_config}" config#{source}.>
95
+ message += %q< Specify one that does like this: ">
96
+ message +=
97
+ Fig::PackageDescriptor.format(@descriptor.name, @descriptor.version, 'some_existing_config')
98
+ message += %q<".>
99
+
100
+ raise Fig::UserInputError.new(message)
101
+ end
102
+
103
+ def make_no_such_package_exception_descriptive_without_descriptor(exception)
104
+ raise exception if config_was_specified_by_user()
105
+ raise exception if not exception.descriptor.nil?
106
+
107
+ source = derive_exception_source()
108
+ message =
109
+ %Q<No config was specified and there's no "#{Fig::Package::DEFAULT_CONFIG}" config#{source}.>
110
+ config_names = @base_package.config_names()
111
+ if config_names.size > 1
112
+ message +=
113
+ %Q< The valid configs are "#{config_names.join('", "')}".>
114
+ elsif config_names.size == 1
115
+ message += %Q< The only config is "#{config_names[0]}".>
116
+ else
117
+ message += ' Actually, there are no configs.'
118
+ end
119
+
120
+ raise Fig::UserInputError.new(message)
121
+ end
122
+
123
+ def check_no_such_package_exception_is_for_command_line_package(exception)
124
+ descriptor = exception.descriptor
125
+
126
+ raise exception if
127
+ descriptor.name && descriptor.name != @descriptor.name
128
+ raise exception if
129
+ descriptor.version && descriptor.version != @descriptor.version
130
+ raise exception if descriptor.config != @base_config
131
+
132
+ return
133
+ end
134
+
135
+ def derive_exception_source()
136
+ source = @package_source_description
137
+
138
+ return source ? %Q< in #{source}> : ''
139
+ end
140
+ end
@@ -0,0 +1,124 @@
1
+ require 'fig/package_descriptor'
2
+ require 'fig/parser'
3
+
4
+ module Fig; end
5
+ class Fig::Command; end
6
+
7
+ class Fig::Command::PackageLoader
8
+ DEFAULT_FIG_FILE = 'package.fig'
9
+
10
+ def initialize(
11
+ application_configuration,
12
+ descriptor,
13
+ package_definition_file,
14
+ base_config,
15
+ repository
16
+ )
17
+ @application_configuration = application_configuration
18
+ @descriptor = descriptor
19
+ @package_definition_file = package_definition_file
20
+ @base_config = base_config
21
+ @repository = repository
22
+ end
23
+
24
+ def load_package_object_from_file()
25
+ definition_text = load_package_definition_file_contents()
26
+
27
+ parse_package_definition_file(definition_text)
28
+
29
+ return @base_package
30
+ end
31
+
32
+ def load_package_object()
33
+ if @descriptor.nil?
34
+ load_package_object_from_file()
35
+ else
36
+ @base_package = @repository.get_package(@descriptor)
37
+ end
38
+
39
+ return @base_package
40
+ end
41
+
42
+ def package_source_description()
43
+ if @package_loaded_from_path
44
+ return @package_loaded_from_path
45
+ elsif @descriptor
46
+ return
47
+ Fig::PackageDescriptor.format(@descriptor.name, @descriptor.version, nil)
48
+ end
49
+
50
+ return nil
51
+ end
52
+
53
+ private
54
+
55
+ def load_package_definition_file_contents()
56
+ if @package_definition_file == :none
57
+ return nil
58
+ elsif @package_definition_file == '-'
59
+ @package_loaded_from_path = '<standard input>'
60
+
61
+ return $stdin.read
62
+ elsif @package_definition_file.nil?
63
+ if File.exist?(DEFAULT_FIG_FILE)
64
+ @package_loaded_from_path = DEFAULT_FIG_FILE
65
+
66
+ return File.read(DEFAULT_FIG_FILE)
67
+ end
68
+ else
69
+ return read_in_package_definition_file(@package_definition_file)
70
+ end
71
+
72
+ return
73
+ end
74
+
75
+ def read_in_package_definition_file(config_file)
76
+ if File.exist?(config_file)
77
+ @package_loaded_from_path = config_file
78
+
79
+ return File.read(config_file)
80
+ else
81
+ raise Fig::UserInputError.new(%Q<File "#{config_file}" does not exist.>)
82
+ end
83
+ end
84
+
85
+ def parse_package_definition_file(definition_text)
86
+ if definition_text.nil?
87
+ # This package gets a free ride in terms of requiring a base config; we
88
+ # synthesize it.
89
+ set_base_package_to_empty_synthetic_one()
90
+ return
91
+ end
92
+
93
+ source_description = package_source_description()
94
+ @base_package =
95
+ Fig::Parser.new(@application_configuration, :check_include_versions).parse_package(
96
+ Fig::PackageDescriptor.new(
97
+ nil, nil, nil, :source_description => source_description
98
+ ),
99
+ '.',
100
+ source_description,
101
+ definition_text
102
+ )
103
+
104
+ return
105
+ end
106
+
107
+ def set_base_package_to_empty_synthetic_one()
108
+ @base_package = Fig::Package.new(
109
+ nil,
110
+ nil,
111
+ '.',
112
+ [
113
+ Fig::Statement::Configuration.new(
114
+ nil,
115
+ %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>,
116
+ @base_config,
117
+ []
118
+ )
119
+ ]
120
+ )
121
+
122
+ return
123
+ end
124
+ end
@@ -1,4 +1,4 @@
1
- require 'fig/userinputerror'
1
+ require 'fig/user_input_error'
2
2
 
3
3
  module Fig
4
4
  # Could not determine some kind of information from a configuration file,
@@ -1,4 +1,4 @@
1
- require 'fig/environmentvariables'
1
+ require 'fig/environment_variables'
2
2
 
3
3
  module Fig; end;
4
4
  module EnvironmentVariables; end
@@ -1,4 +1,4 @@
1
- require 'fig/environmentvariables'
1
+ require 'fig/environment_variables'
2
2
 
3
3
  module Fig; end;
4
4
  module EnvironmentVariables; end
@@ -1,8 +1,8 @@
1
1
  require 'json'
2
2
 
3
- require 'fig/applicationconfiguration'
4
- require 'fig/configfileerror'
5
- require 'fig/operatingsystem'
3
+ require 'fig/application_configuration'
4
+ require 'fig/config_file_error'
5
+ require 'fig/operating_system'
6
6
  require 'fig/repository'
7
7
 
8
8
  module Fig; end
@@ -1,7 +1,7 @@
1
1
  # Treetop (http://treetop.rubyforge.org/) grammar for package definitions.
2
2
 
3
3
  require 'fig/package'
4
- require 'fig/packagedescriptor'
4
+ require 'fig/package_descriptor'
5
5
  require 'fig/parser'
6
6
  require 'fig/statement/archive'
7
7
  require 'fig/statement/command'
@@ -1,9 +1,14 @@
1
- require 'fig/repositoryerror'
1
+ require 'fig/repository_error'
2
2
 
3
3
  module Fig; end
4
4
 
5
+ # Stack of applied "include" statements.
6
+ #
5
7
  # Keeps track of overrides and can produce package definition stack traces.
6
- class Fig::Backtrace
8
+ #
9
+ # Pushing and popping actually happens via instances being held/let go by
10
+ # recursive method calls on RuntimeEnvironment.
11
+ class Fig::IncludeBacktrace
7
12
  attr_reader :overrides
8
13
 
9
14
  def initialize(parent, descriptor)
@@ -3,7 +3,7 @@ require 'log4r/logger'
3
3
  require 'log4r/outputter/iooutputter'
4
4
 
5
5
  require 'fig/logging/colorizable'
6
- require 'fig/operatingsystem'
6
+ require 'fig/operating_system'
7
7
 
8
8
  module Fig; end
9
9
  module Fig::Log4r; end
@@ -1,4 +1,4 @@
1
- require 'fig/userinputerror'
1
+ require 'fig/user_input_error'
2
2
 
3
3
  module Fig
4
4
  # A problem with configuring Log4r.
@@ -2,8 +2,8 @@ require 'log4r'
2
2
  require 'log4r/configurator'
3
3
  require 'log4r/yamlconfigurator'
4
4
 
5
- require 'fig/configfileerror'
6
- require 'fig/log4rconfigerror'
5
+ require 'fig/config_file_error'
6
+ require 'fig/log4r_config_error'
7
7
  require 'fig/log4r/outputter'
8
8
 
9
9
  module Fig; end
@@ -1,4 +1,4 @@
1
- require 'fig/userinputerror'
1
+ require 'fig/user_input_error'
2
2
 
3
3
  module Fig
4
4
  # A problem with file transfer over the network.
@@ -1,5 +1,5 @@
1
- require 'fig/packagedescriptor'
2
- require 'fig/userinputerror'
1
+ require 'fig/package_descriptor'
2
+ require 'fig/user_input_error'
3
3
 
4
4
  module Fig
5
5
  # User specified a configuration for a Package that does not exist.
@@ -13,12 +13,12 @@ require 'uri'
13
13
 
14
14
  require 'highline/import'
15
15
 
16
- require 'fig/atexit'
17
- require 'fig/environmentvariables/caseinsensitive'
18
- require 'fig/environmentvariables/casesensitive'
16
+ require 'fig/at_exit'
17
+ require 'fig/environment_variables/case_insensitive'
18
+ require 'fig/environment_variables/case_sensitive'
19
19
  require 'fig/logging'
20
- require 'fig/networkerror'
21
- require 'fig/notfounderror'
20
+ require 'fig/network_error'
21
+ require 'fig/not_found_error'
22
22
 
23
23
  module Fig; end
24
24
 
@@ -1,6 +1,6 @@
1
1
  require 'fig/logging'
2
- require 'fig/nosuchpackageconfigerror'
3
- require 'fig/packagedescriptor'
2
+ require 'fig/no_such_package_config_error'
3
+ require 'fig/package_descriptor'
4
4
  require 'fig/statement/archive'
5
5
  require 'fig/statement/configuration'
6
6
  require 'fig/statement/resource'
@@ -124,7 +124,7 @@ class Fig::Package
124
124
  end
125
125
 
126
126
  def to_s
127
- name = @name || '<empty>'
127
+ name = @name || UNPUBLISHED
128
128
  version = @version || '<empty>'
129
129
  return Fig::PackageDescriptor.format(name, version, nil)
130
130
  end
@@ -1,4 +1,4 @@
1
- require 'fig/packagedescriptorparseerror'
1
+ require 'fig/package_descriptor_parse_error'
2
2
 
3
3
  module Fig; end
4
4
 
@@ -1,4 +1,4 @@
1
- require 'fig/userinputerror'
1
+ require 'fig/user_input_error'
2
2
 
3
3
  module Fig
4
4
  # Could not turn a string into a PackageDescriptor.
@@ -1,4 +1,4 @@
1
- require 'fig/userinputerror'
1
+ require 'fig/user_input_error'
2
2
 
3
3
  module Fig
4
4
  # An issue with parsing a .fig file.
@@ -2,12 +2,12 @@ require 'treetop'
2
2
 
3
3
  require 'fig/grammar' # this is grammar.treetop, not grammar.rb.
4
4
  require 'fig/logging'
5
- require 'fig/packageparseerror'
6
- require 'fig/parserpackagebuildstate'
5
+ require 'fig/package_parse_error'
6
+ require 'fig/parser_package_build_state'
7
7
  require 'fig/repository'
8
8
  require 'fig/statement'
9
- require 'fig/urlaccesserror'
10
- require 'fig/userinputerror'
9
+ require 'fig/url_access_error'
10
+ require 'fig/user_input_error'
11
11
 
12
12
  module Fig; end
13
13