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.
- data/Changes +156 -0
- data/VERSION +1 -1
- data/bin/fig +9 -2
- data/bin/fig-debug +9 -2
- data/lib/fig/applicationconfiguration.rb +3 -2
- data/lib/fig/atexit.rb +37 -0
- data/lib/fig/backtrace.rb +23 -6
- data/lib/fig/command.rb +131 -31
- data/lib/fig/command/coveragesupport.rb +40 -0
- data/lib/fig/command/listing.rb +8 -8
- data/lib/fig/command/optionerror.rb +8 -0
- data/lib/fig/{options.rb → command/options.rb} +248 -144
- data/lib/fig/command/packageload.rb +161 -62
- data/lib/fig/configfileerror.rb +2 -0
- data/lib/fig/environment.rb +350 -246
- data/lib/fig/environmentvariables/casesensitive.rb +1 -1
- data/lib/fig/figrc.rb +78 -78
- data/lib/fig/grammar.treetop +204 -219
- data/lib/fig/log4rconfigerror.rb +2 -0
- data/lib/fig/operatingsystem.rb +382 -334
- data/lib/fig/package.rb +11 -33
- data/lib/fig/packagecache.rb +1 -1
- data/lib/fig/packagedescriptor.rb +103 -21
- data/lib/fig/packagedescriptorparseerror.rb +16 -0
- data/lib/fig/parser.rb +36 -19
- data/lib/fig/parserpackagebuildstate.rb +56 -0
- data/lib/fig/repository.rb +504 -259
- data/lib/fig/statement.rb +30 -12
- data/lib/fig/statement/archive.rb +8 -5
- data/lib/fig/statement/asset.rb +19 -0
- data/lib/fig/statement/command.rb +2 -2
- data/lib/fig/statement/configuration.rb +20 -20
- data/lib/fig/statement/include.rb +13 -34
- data/lib/fig/statement/override.rb +21 -7
- data/lib/fig/statement/path.rb +22 -2
- data/lib/fig/statement/resource.rb +14 -4
- data/lib/fig/statement/retrieve.rb +34 -4
- data/lib/fig/statement/set.rb +22 -2
- data/lib/fig/workingdirectorymaintainer.rb +197 -0
- data/lib/fig/workingdirectorymetadata.rb +45 -0
- metadata +52 -46
- data/lib/fig/retriever.rb +0 -141
- data/lib/fig/statement/publish.rb +0 -15
data/lib/fig/retriever.rb
DELETED
@@ -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
|