fig 0.1.65 → 0.1.67

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.
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