fig 0.1.62 → 0.1.64

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 (43) hide show
  1. data/Changes +156 -0
  2. data/VERSION +1 -1
  3. data/bin/fig +9 -2
  4. data/bin/fig-debug +9 -2
  5. data/lib/fig/applicationconfiguration.rb +3 -2
  6. data/lib/fig/atexit.rb +37 -0
  7. data/lib/fig/backtrace.rb +23 -6
  8. data/lib/fig/command.rb +131 -31
  9. data/lib/fig/command/coveragesupport.rb +40 -0
  10. data/lib/fig/command/listing.rb +8 -8
  11. data/lib/fig/command/optionerror.rb +8 -0
  12. data/lib/fig/{options.rb → command/options.rb} +248 -144
  13. data/lib/fig/command/packageload.rb +161 -62
  14. data/lib/fig/configfileerror.rb +2 -0
  15. data/lib/fig/environment.rb +350 -246
  16. data/lib/fig/environmentvariables/casesensitive.rb +1 -1
  17. data/lib/fig/figrc.rb +78 -78
  18. data/lib/fig/grammar.treetop +204 -219
  19. data/lib/fig/log4rconfigerror.rb +2 -0
  20. data/lib/fig/operatingsystem.rb +382 -334
  21. data/lib/fig/package.rb +11 -33
  22. data/lib/fig/packagecache.rb +1 -1
  23. data/lib/fig/packagedescriptor.rb +103 -21
  24. data/lib/fig/packagedescriptorparseerror.rb +16 -0
  25. data/lib/fig/parser.rb +36 -19
  26. data/lib/fig/parserpackagebuildstate.rb +56 -0
  27. data/lib/fig/repository.rb +504 -259
  28. data/lib/fig/statement.rb +30 -12
  29. data/lib/fig/statement/archive.rb +8 -5
  30. data/lib/fig/statement/asset.rb +19 -0
  31. data/lib/fig/statement/command.rb +2 -2
  32. data/lib/fig/statement/configuration.rb +20 -20
  33. data/lib/fig/statement/include.rb +13 -34
  34. data/lib/fig/statement/override.rb +21 -7
  35. data/lib/fig/statement/path.rb +22 -2
  36. data/lib/fig/statement/resource.rb +14 -4
  37. data/lib/fig/statement/retrieve.rb +34 -4
  38. data/lib/fig/statement/set.rb +22 -2
  39. data/lib/fig/workingdirectorymaintainer.rb +197 -0
  40. data/lib/fig/workingdirectorymetadata.rb +45 -0
  41. metadata +52 -46
  42. data/lib/fig/retriever.rb +0 -141
  43. data/lib/fig/statement/publish.rb +0 -15
@@ -1,141 +0,0 @@
1
- require 'ostruct'
2
- require 'set'
3
-
4
- require 'fig/logging'
5
- require 'fig/logging/colorizable'
6
- require 'fig/packagedescriptor'
7
-
8
- module Fig; end
9
-
10
- # Copies files from the project directories in FIG_HOME to the user's working
11
- # directory. It keeps track of which files have already been copied, and which
12
- # package/versions they came from, and deletes files as necessary to ensure
13
- # that we never have files from two different versions of the same package in
14
- # the user's working directory.
15
- class Fig::Retriever
16
- def initialize(base_dir)
17
- @base_dir = base_dir
18
- @package_metadata_by_name = {}
19
- @local_fig_data_directory = File.join(@base_dir, '.fig')
20
-
21
- file = File.join(@local_fig_data_directory, 'retrieve')
22
- if File.exist?(file)
23
- load_metadata(file)
24
- end
25
- end
26
-
27
- def with_package_version(name, version)
28
- if name and version
29
- @package_meta = @package_metadata_by_name[name]
30
- if @package_meta && @package_meta.version != version
31
- @package_meta.files.each do |relpath|
32
- Fig::Logging.info(
33
- Fig::Logging::Colorizable.new(
34
- "- [#{formatted_meta()}] #{relpath}",
35
- :magenta,
36
- nil
37
- )
38
- )
39
- FileUtils.rm_f(File.join(@base_dir, relpath))
40
- end
41
- @package_meta = nil
42
- end
43
- if not @package_meta
44
- @package_meta = new_package_metadata(name, version)
45
- @package_metadata_by_name[name] = @package_meta
46
- end
47
- else
48
- @package_meta = nil
49
- end
50
- yield
51
- end
52
-
53
- def retrieve(source, relpath)
54
- copy(source, relpath)
55
- end
56
-
57
- def save_metadata
58
- FileUtils.mkdir_p(@local_fig_data_directory)
59
- File.open(File.join(@local_fig_data_directory, 'retrieve'), 'w') do |f|
60
- @package_metadata_by_name.each do |name, package_meta|
61
- package_meta.files.each do |target|
62
- f << target << '=' << formatted_meta(package_meta) << "\n"
63
- end
64
- end
65
- end
66
- end
67
-
68
- private
69
-
70
- def load_metadata(file)
71
- File.open(file).each_line do |line|
72
- line = line.strip()
73
- if line =~ /^(.+)=(.+)\/(.+)$/
74
- target = $1
75
- package_name = $2
76
- package_version = $3
77
- package_meta = @package_metadata_by_name[package_name]
78
- if package_meta
79
- if package_meta.version != package_version
80
- raise 'version mismatch in .figretrieve'
81
- end
82
- else
83
- package_meta = new_package_metadata(package_name, package_version)
84
- @package_metadata_by_name[package_name] = package_meta
85
- end
86
- package_meta.files << target
87
- else
88
- raise "parse error in #{file}: #{line}"
89
- end
90
- end
91
- end
92
-
93
- def new_package_metadata(name, version)
94
- package_meta = OpenStruct.new
95
- package_meta.name = name
96
- package_meta.version = version
97
- package_meta.files = Set.new()
98
-
99
- return package_meta
100
- end
101
-
102
- def copy(source, relpath)
103
- target = File.join(@base_dir, relpath)
104
- if File.directory?(source)
105
- FileUtils.mkdir_p(target)
106
- Dir.foreach(source) do |child|
107
- if child != '.' and child != '..'
108
- source_file = File.join(source, child)
109
- target_file = File.join(relpath, child)
110
- Fig::Logging.debug "Copying #{source_file} to #{target_file}."
111
- copy(source_file, target_file)
112
- end
113
- end
114
- else
115
- if ! File.exist?(target) || File.mtime(source) > File.mtime(target)
116
- if Fig::Logging.debug?
117
- Fig::Logging.debug \
118
- "Copying package [#{formatted_meta()}] from #{source} to #{target}."
119
- else
120
- Fig::Logging.info(
121
- Fig::Logging::Colorizable.new(
122
- "+ [#{formatted_meta()}] #{relpath}",
123
- :green,
124
- nil
125
- )
126
- )
127
- end
128
- FileUtils.mkdir_p(File.dirname(target))
129
-
130
- FileUtils.cp(source, target, :preserve => true)
131
- end
132
- @package_meta.files << relpath if @package_meta
133
- end
134
- end
135
-
136
- def formatted_meta(package_meta = @package_meta)
137
- return Fig::PackageDescriptor.format(
138
- package_meta.name, package_meta.version, nil
139
- )
140
- end
141
- end
@@ -1,15 +0,0 @@
1
- require 'fig/statement'
2
-
3
- module Fig; end
4
-
5
- # Artificial statement (it's not in the grammar) used to handle default
6
- # publishing.
7
- class Fig::Statement::Publish < Fig::Statement
8
- def initialize()
9
- super(nil)
10
- end
11
-
12
- def unparse(indent)
13
- "#{indent}publish"
14
- end
15
- end