fcshd 0.5.2 → 0.6
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/Rakefile +29 -0
- data/bin/fcshc +113 -54
- data/bin/fcshd +4 -5
- data/lib/fcshd/compiler.rb +54 -45
- data/lib/fcshd/flex-home.rb +8 -2
- data/lib/fcshd/logger.rb +6 -19
- data/lib/fcshd/server.rb +4 -1
- data/lib/fcshd/transcript-item.rb +12 -4
- data/lib/fcshd/transcript-parser.rb +2 -1
- data/lib/fcshd/version.rb +1 -1
- metadata +5 -6
- data/Makefile +0 -12
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require "./lib/fcshd/version"
|
2
|
+
|
3
|
+
name, version = "fcshd", FCSHD::VERSION
|
4
|
+
|
5
|
+
gem = "#{name}-#{version}.gem"
|
6
|
+
gemspec = "#{name}.gemspec"
|
7
|
+
sources = FileList["{bin,lib}/**/*"]
|
8
|
+
|
9
|
+
task :default => [:uninstall, :install]
|
10
|
+
|
11
|
+
task :install => gem do
|
12
|
+
sh "sudo gem install #{gem}"
|
13
|
+
end
|
14
|
+
|
15
|
+
task :uninstall do
|
16
|
+
sh "sudo gem uninstall #{name} -v #{version}"
|
17
|
+
end
|
18
|
+
|
19
|
+
file gem => FileList[gemspec, sources] do
|
20
|
+
sh "gem build #{gemspec}"
|
21
|
+
end
|
22
|
+
|
23
|
+
task :push => gem do
|
24
|
+
sh "gem push #{gem}"
|
25
|
+
end
|
26
|
+
|
27
|
+
require "rake/clean"
|
28
|
+
|
29
|
+
CLEAN << "*.gem"
|
data/bin/fcshc
CHANGED
@@ -18,17 +18,20 @@ end
|
|
18
18
|
|
19
19
|
$output_file = nil
|
20
20
|
$source_files = []
|
21
|
+
$libraries = []
|
21
22
|
$library_files = []
|
22
23
|
$directories = []
|
23
24
|
$production = false
|
24
25
|
$extra_arguments = []
|
25
26
|
$verbose = false
|
27
|
+
$restart_compiler = false
|
28
|
+
$run_compilation = nil
|
26
29
|
$dry_run = false
|
27
30
|
|
28
31
|
OptionParser.new do |parser|
|
29
32
|
parser.banner = <<EOF
|
30
|
-
Usage: fcshc MAIN.[as|mxml] [SRCDIR|SWCDIR|SWC]... [-o
|
31
|
-
fcshc -o
|
33
|
+
Usage: fcshc MAIN.[as|mxml] [-l LIB] [SRCDIR|SWCDIR|SWC]... [-o OUT.swf]
|
34
|
+
fcshc -o OUT.swc SRCDIR... [-l LIB]... [SWCDIR|SWC]...
|
32
35
|
|
33
36
|
To compile an SWF, name the main application source file, then any
|
34
37
|
additional source directories, SWC directories, or SWC files.
|
@@ -36,37 +39,53 @@ additional source directories, SWC directories, or SWC files.
|
|
36
39
|
To compile an SWC using `compc', you must provide the `-o' option, and
|
37
40
|
then at least one source directory, SWC directory, or SWC file.
|
38
41
|
|
42
|
+
Dependencies can also be specified by name using the `-l LIB' option,
|
43
|
+
which will search for LIB or LIB.swc in `~/.fcshd-lib'. Both source
|
44
|
+
directories, SWC directories, and SWC files can be named in this way.
|
45
|
+
|
39
46
|
To pass extra arguments, use e.g. `-X -include-file -X NAME -X FILE'.
|
40
47
|
|
41
48
|
EOF
|
42
49
|
|
43
50
|
parser.on("-o", "--output OUTPUT.[swf|swc]", "Name of the resulting binary") do |value|
|
51
|
+
$run_compilation = true
|
44
52
|
$output_file = File.expand_path(value)
|
45
53
|
end
|
46
54
|
|
55
|
+
parser.on("-l", "--library LIBRARY", "Search LIBRARY when compiling") do |value|
|
56
|
+
$run_compilation = true
|
57
|
+
$libraries << value
|
58
|
+
end
|
59
|
+
|
47
60
|
parser.on("-X", "--extra-argument ARGUMENT", "Pass ARGUMENT to the compiler") do |value|
|
61
|
+
$run_compilation = true
|
48
62
|
$extra_arguments << value
|
49
63
|
end
|
50
64
|
|
51
65
|
parser.on("-p", "--production", "Leave out debugging metadata") do
|
66
|
+
$run_compilation = true
|
52
67
|
$production = true
|
53
68
|
end
|
54
69
|
|
55
70
|
parser.on("--static-rsls", "Use static linking for RSLs") do
|
71
|
+
$run_compilation = true
|
56
72
|
$extra_arguments << "-static-link-runtime-shared-libraries=true"
|
57
73
|
end
|
58
74
|
|
59
75
|
parser.on("--no-rsls", "Remove all runtime shared libraries") do
|
76
|
+
$run_compilation = true
|
60
77
|
$extra_arguments << "-runtime-shared-library-path="
|
61
78
|
end
|
62
79
|
|
63
80
|
parser.separator ""
|
64
81
|
|
65
82
|
parser.on("-3", "--flex-3", "Use -compatibility-version=3") do |value|
|
83
|
+
$run_compilation = true
|
66
84
|
$extra_arguments << "-compatibility-version=3"
|
67
85
|
end
|
68
86
|
|
69
87
|
parser.on("--halo", "Use the Halo theme") do
|
88
|
+
$run_compilation = true
|
70
89
|
if FCSHD::FlexHome.known?
|
71
90
|
$extra_arguments << "-theme=#{FCSHD::FlexHome.halo_swc}"
|
72
91
|
else
|
@@ -76,8 +95,15 @@ EOF
|
|
76
95
|
|
77
96
|
parser.separator ""
|
78
97
|
|
98
|
+
parser.on("-R", "--restart", "Restart the compiler first") do
|
99
|
+
$run_compilation = false if $run_compilation == nil
|
100
|
+
$restart_compiler = true
|
101
|
+
end
|
102
|
+
|
79
103
|
parser.on("-n", "--dry-run", "Only print the compiler command") do
|
104
|
+
$run_compilation = true
|
80
105
|
$dry_run = true
|
106
|
+
$verbose = true
|
81
107
|
end
|
82
108
|
|
83
109
|
parser.on("--verbose", "Also print the compiler command") do
|
@@ -98,6 +124,7 @@ EOF
|
|
98
124
|
parser.separator "TL;DR: $ fcshc src/my_app.mxml"
|
99
125
|
end.parse!
|
100
126
|
|
127
|
+
$run_compilation = true unless $run_compilation == false
|
101
128
|
$extra_arguments << "-debug" unless $production
|
102
129
|
|
103
130
|
for name in ARGV
|
@@ -114,66 +141,96 @@ for name in ARGV
|
|
114
141
|
end
|
115
142
|
end
|
116
143
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
144
|
+
ENV["FCSHD_LIBRARY_PATH"] ||= ""
|
145
|
+
ENV["FCSHD_LIBRARY_PATH"] += ":~/.fcshd-lib"
|
146
|
+
|
147
|
+
def find_library(name)
|
148
|
+
nil.tap do
|
149
|
+
for x in ENV["FCSHD_LIBRARY_PATH"].split(":")
|
150
|
+
next if x == ""
|
151
|
+
x = File.expand_path(x)
|
152
|
+
if File.basename(x) == "#{name}.swc" and File.file? x
|
153
|
+
return :file, x
|
154
|
+
elsif File.directory? File.join(x, name)
|
155
|
+
return :directory, File.join(x, name)
|
156
|
+
elsif File.file? File.join(x, "#{name}.swc")
|
157
|
+
return :file, File.join(x, "#{name}.swc")
|
158
|
+
end
|
159
|
+
end
|
128
160
|
end
|
161
|
+
end
|
129
162
|
|
130
|
-
|
131
|
-
|
163
|
+
for library in $libraries
|
164
|
+
type, filename = find_library(library)
|
165
|
+
case type
|
166
|
+
when :directory
|
167
|
+
$directories << name
|
168
|
+
when :file
|
169
|
+
$library_files << filename
|
170
|
+
else
|
171
|
+
die "library not found: #{library}"
|
132
172
|
end
|
173
|
+
end
|
133
174
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
175
|
+
if $run_compilation
|
176
|
+
$compiling_swc = $output_file && $output_file.end_with?(".swc")
|
177
|
+
|
178
|
+
if $compiling_swc
|
179
|
+
if [$source_files, $directories, $library_files] == [[], [], []]
|
180
|
+
die "must include at least one source file, directory, or SWC"
|
181
|
+
end
|
182
|
+
|
183
|
+
$compilation_command = ["compc"]
|
184
|
+
|
185
|
+
for file in $source_files
|
186
|
+
$compilation_command << "-include-sources+=#{file}"
|
187
|
+
end
|
188
|
+
|
189
|
+
for directory in $directories
|
190
|
+
$compilation_command << "-include-sources+=#{directory}"
|
191
|
+
end
|
192
|
+
|
193
|
+
if FCSHD::FlexHome.known?
|
194
|
+
for dir in FCSHD::FlexHome.framework_lib_dirs
|
195
|
+
$extra_arguments << "-external-library-path+=#{dir}"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
else
|
199
|
+
case $source_files.size
|
200
|
+
when 0
|
201
|
+
die "missing main application source file"
|
202
|
+
when 1: $source_file = $source_files.first
|
203
|
+
else die "multiple source files not allowed when compiling SWF"
|
204
|
+
end
|
205
|
+
|
206
|
+
if $directories.empty?
|
207
|
+
$directories << File.dirname($source_file)
|
208
|
+
end
|
209
|
+
|
210
|
+
if $output_file == nil
|
211
|
+
$source_file.sub(/\.(as|mxml)$/, ".swf").tap do |x|
|
212
|
+
$output_file = File.expand_path(File.basename(x))
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
$compilation_command = ["mxmlc", "#$source_file"]
|
142
217
|
end
|
143
|
-
|
144
|
-
|
145
|
-
|
218
|
+
|
219
|
+
$compilation_command << "-output=#$output_file"
|
220
|
+
|
221
|
+
for directory in $directories
|
222
|
+
$compilation_command << "-compiler.source-path+=#{directory}"
|
223
|
+
$compilation_command << "-compiler.library-path+=#{directory}"
|
146
224
|
end
|
147
|
-
|
148
|
-
|
149
|
-
$
|
150
|
-
$output_file = File.expand_path(File.basename(x))
|
151
|
-
end
|
225
|
+
|
226
|
+
for file in $library_files
|
227
|
+
$compilation_command << "-compiler.library-path+=#{file}"
|
152
228
|
end
|
153
|
-
|
154
|
-
$
|
155
|
-
end
|
156
|
-
|
157
|
-
$fcshd_arguments << "-output=#$output_file"
|
158
|
-
|
159
|
-
for directory in $directories
|
160
|
-
$fcshd_arguments << "-compiler.source-path+=#{directory}"
|
161
|
-
$fcshd_arguments << "-compiler.library-path+=#{directory}"
|
162
|
-
end
|
163
|
-
|
164
|
-
for file in $library_files
|
165
|
-
$fcshd_arguments << "-compiler.library-path+=#{file}"
|
166
|
-
end
|
167
|
-
|
168
|
-
$fcshd_arguments.concat($extra_arguments)
|
169
|
-
|
170
|
-
basedir = File.join(File.expand_path("."), "")
|
171
|
-
fcshd_command = $fcshd_arguments.join(" ")
|
172
|
-
|
173
|
-
if $verbose || $dry_run
|
174
|
-
warn fcshd_command.gsub(basedir, "")
|
229
|
+
|
230
|
+
$compilation_command.concat($extra_arguments)
|
175
231
|
end
|
176
232
|
|
233
|
+
warn $compilation_command.join(" ") if $verbose
|
177
234
|
exit if $dry_run
|
178
235
|
|
179
236
|
begin
|
@@ -183,7 +240,8 @@ rescue Errno::ECONNREFUSED
|
|
183
240
|
die "could not connect to fcshd at #{host}:#{port}"
|
184
241
|
end
|
185
242
|
|
186
|
-
socket.puts
|
243
|
+
socket.puts "restart" if $restart_compiler
|
244
|
+
socket.puts $compilation_command.join(" ") if $run_compilation
|
187
245
|
|
188
246
|
compiler_output = ""
|
189
247
|
socket.each_line do |line|
|
@@ -196,5 +254,6 @@ socket.each_line do |line|
|
|
196
254
|
end
|
197
255
|
|
198
256
|
transcript = FCSHD::Transcript[compiler_output]
|
257
|
+
basedir = File.join(File.expand_path("."), "")
|
199
258
|
STDOUT.write transcript.to_s(basedir)
|
200
259
|
exit 1 if not transcript.succeeded?
|
data/bin/fcshd
CHANGED
@@ -13,14 +13,13 @@ if ARGV == ["-v"] || ARGV == ["--version"]
|
|
13
13
|
exit
|
14
14
|
end
|
15
15
|
|
16
|
-
logger = FCSHD::Logger.new(
|
16
|
+
logger = FCSHD::Logger.new(STDOUT)
|
17
17
|
|
18
|
-
logger.die <<
|
18
|
+
logger.die <<EOF if not FCSHD::FlexHome.known?
|
19
19
|
Please put the Flex SDK in #{FlexHome.default} or set $FLEX_HOME.
|
20
|
-
|
20
|
+
EOF
|
21
21
|
|
22
|
-
logger.log "
|
23
|
-
logger.log "Flex SDK: #{FCSHD::FlexHome}"
|
22
|
+
logger.log "fcshd #{FCSHD::VERSION}"
|
24
23
|
|
25
24
|
compiler = FCSHD::Compiler.new(logger)
|
26
25
|
compiler.start!
|
data/lib/fcshd/compiler.rb
CHANGED
@@ -1,25 +1,20 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# -*- coding: utf-8 -*-
|
3
2
|
module FCSHD
|
4
3
|
class Compiler
|
5
4
|
def initialize(logger)
|
6
5
|
@logger = logger
|
7
6
|
@output_buffer = ""
|
7
|
+
@command_ids = {}
|
8
8
|
end
|
9
9
|
|
10
|
-
def start!
|
11
|
-
|
12
|
-
parse_fcsh_boilerplate!
|
13
|
-
@logger.log "Started Flex #@flex_version compiler shell."
|
14
|
-
rescue PromptNotFound => error
|
15
|
-
@logger.error "Could not find fcsh prompt:"
|
16
|
-
@logger.error @logger.format_command(FlexHome.fcsh, error.message)
|
17
|
-
@logger.exit
|
18
|
-
end
|
10
|
+
def start!; restart_fcsh_process! end
|
11
|
+
def restart!; restart_fcsh_process! end
|
19
12
|
|
20
13
|
def compile! command, frontend
|
21
14
|
@command, @frontend = command, frontend
|
22
15
|
|
16
|
+
log_horizontal_line
|
17
|
+
|
23
18
|
if have_command_id?
|
24
19
|
recompile!
|
25
20
|
else
|
@@ -29,87 +24,101 @@ module FCSHD
|
|
29
24
|
|
30
25
|
private
|
31
26
|
|
32
|
-
def
|
27
|
+
def log_horizontal_line
|
28
|
+
@logger.log("—" * 60)
|
29
|
+
end
|
30
|
+
|
31
|
+
def have_command_id?
|
32
|
+
@command_ids.include? @command
|
33
|
+
end
|
34
|
+
|
35
|
+
def restart_fcsh_process!
|
33
36
|
stop_fcsh_process!
|
37
|
+
@logger.log "starting #{FlexHome.fcsh}"
|
34
38
|
@fcsh_process = IO.popen("#{FlexHome.fcsh} 2>&1", "r+")
|
35
|
-
|
39
|
+
read_until_prompt!
|
36
40
|
end
|
37
41
|
|
38
42
|
def stop_fcsh_process!
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
def parse_fcsh_boilerplate!
|
45
|
-
case @output
|
46
|
-
when /Version (\S+)/
|
47
|
-
@flex_version = $1
|
48
|
-
else
|
49
|
-
@flex_version = "(unknown version)"
|
43
|
+
if @fcsh_process
|
44
|
+
@logger.log "killing fcsh process"
|
45
|
+
@fcsh_process.close
|
46
|
+
@fcsh_process = nil
|
47
|
+
@command_ids = {}
|
50
48
|
end
|
51
49
|
end
|
52
50
|
|
53
51
|
def compile_new!
|
54
|
-
@frontend.puts "fcshd: Compiling from scratch"
|
55
52
|
@frontend.flush
|
56
53
|
send_fcsh_command! @command
|
57
|
-
|
54
|
+
process_compilation_output!
|
58
55
|
ensure
|
59
56
|
if not have_command_id?
|
60
|
-
|
61
|
-
@logger.error @logger.format_command("(fcsh) #@command", @output)
|
62
|
-
|
63
|
-
@frontend.puts "fcshd: internal error"
|
64
|
-
@frontend.flush
|
57
|
+
report_internal_error "could not determine compilation ID"
|
65
58
|
end
|
66
59
|
end
|
67
60
|
|
68
61
|
def recompile!
|
69
62
|
send_fcsh_command! "compile #{command_id}"
|
70
|
-
|
63
|
+
process_compilation_output!
|
64
|
+
rescue FCSHError => error
|
65
|
+
case error.message
|
66
|
+
when "Error: null"
|
67
|
+
@frontend.puts "fcshd: Adobe-internal error; restarting fcsh..."
|
68
|
+
restart_fcsh_process!
|
69
|
+
@frontend.puts "fcshd: retrying your compilation"
|
70
|
+
compile_new!
|
71
|
+
else
|
72
|
+
report_internal_error "unknown fcsh error: #{error.message}"
|
73
|
+
end
|
71
74
|
end
|
72
75
|
|
73
76
|
def command_id
|
74
77
|
@command_ids[@command]
|
75
78
|
end
|
76
79
|
|
77
|
-
|
78
|
-
@command_ids[@command] = id
|
79
|
-
end
|
80
|
+
class FCSHError < StandardError; end
|
80
81
|
|
81
|
-
def
|
82
|
-
@
|
82
|
+
def report_internal_error(message)
|
83
|
+
@logger.error(message)
|
84
|
+
@frontend.puts "fcshd: internal error; see fcshd log"
|
85
|
+
@frontend.flush
|
83
86
|
end
|
84
87
|
|
85
|
-
def
|
86
|
-
for line in @output.lines
|
88
|
+
def process_compilation_output!
|
89
|
+
for line in @output.lines.map(&:chomp)
|
87
90
|
case line
|
88
91
|
when /^fcsh: Assigned (\d+) as the compile target id$/
|
89
92
|
self.command_id = $1
|
93
|
+
when "Error: null"
|
94
|
+
raise FCSHError, line
|
90
95
|
else
|
91
96
|
@frontend.puts(line)
|
92
|
-
@logger.log_raw(line) if line =~ /^fcsh: /
|
93
97
|
end
|
94
98
|
end
|
95
99
|
end
|
96
100
|
|
101
|
+
def command_id= id
|
102
|
+
@command_ids[@command] = id
|
103
|
+
end
|
104
|
+
|
97
105
|
def send_fcsh_command! command
|
98
|
-
@logger.
|
106
|
+
@logger.log(command)
|
99
107
|
@fcsh_process.puts(command)
|
100
|
-
|
108
|
+
read_until_prompt!
|
101
109
|
end
|
102
110
|
|
103
111
|
FCSH_PROMPT = "\n(fcsh) "
|
104
|
-
class PromptNotFound < Exception ; end
|
105
112
|
|
106
|
-
def
|
113
|
+
def read_until_prompt!
|
107
114
|
@output_buffer << @fcsh_process.readpartial(256) until
|
108
115
|
@output_buffer.include? FCSH_PROMPT
|
109
116
|
@output, @output_buffer =
|
110
117
|
@output_buffer.split(FCSH_PROMPT, 2)
|
118
|
+
@logger.dump @output
|
111
119
|
rescue EOFError
|
112
|
-
|
120
|
+
@logger.dump @output_buffer
|
121
|
+
@logger.die "could not find fcsh prompt"
|
113
122
|
end
|
114
123
|
end
|
115
124
|
end
|
data/lib/fcshd/flex-home.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "find"
|
2
|
+
|
1
3
|
module FCSHD
|
2
4
|
module FlexHome
|
3
5
|
extend self
|
@@ -33,8 +35,12 @@ module FCSHD
|
|
33
35
|
self["bin/fcsh"]
|
34
36
|
end
|
35
37
|
|
36
|
-
def
|
37
|
-
|
38
|
+
def framework_lib_dirs
|
39
|
+
[].tap do |result|
|
40
|
+
Find.find(self["frameworks/libs"]) do |file|
|
41
|
+
result << file if File.directory? file
|
42
|
+
end
|
43
|
+
end
|
38
44
|
end
|
39
45
|
|
40
46
|
def halo_swc
|
data/lib/fcshd/logger.rb
CHANGED
@@ -1,21 +1,17 @@
|
|
1
1
|
module FCSHD
|
2
2
|
class Logger
|
3
3
|
def initialize(output)
|
4
|
-
@
|
5
|
-
end
|
6
|
-
|
7
|
-
def log_raw(message)
|
8
|
-
@stderr.puts message
|
4
|
+
@output = output
|
9
5
|
end
|
10
6
|
|
11
7
|
def log(message)
|
12
8
|
for line in message.lines
|
13
|
-
|
9
|
+
@output.puts "#{File.basename($0)}: #{line.chomp}"
|
14
10
|
end
|
15
11
|
end
|
16
12
|
|
17
|
-
def
|
18
|
-
|
13
|
+
def dump(output)
|
14
|
+
@output.puts output.chomp
|
19
15
|
end
|
20
16
|
|
21
17
|
def error(message)
|
@@ -25,17 +21,8 @@ module FCSHD
|
|
25
21
|
end
|
26
22
|
|
27
23
|
def die(message)
|
28
|
-
error message
|
29
|
-
|
30
|
-
|
31
|
-
def exit(code=1)
|
32
|
-
Kernel.exit code
|
33
|
-
end
|
34
|
-
|
35
|
-
def format_command(command, output)
|
36
|
-
["$ #{command}", *output.lines].
|
37
|
-
map { |line| " #{line.chomp}" }.
|
38
|
-
join("\n")
|
24
|
+
error message
|
25
|
+
exit 1
|
39
26
|
end
|
40
27
|
end
|
41
28
|
end
|
data/lib/fcshd/server.rb
CHANGED
@@ -20,9 +20,12 @@ module FCSHD
|
|
20
20
|
|
21
21
|
class Client < Struct.new(:socket, :compiler)
|
22
22
|
def run!
|
23
|
-
case command = socket.gets
|
23
|
+
case command = socket.gets.chomp
|
24
24
|
when /^(mxmlc|compc) /
|
25
25
|
compiler.compile! command, socket
|
26
|
+
when "restart"
|
27
|
+
compiler.restart!
|
28
|
+
socket.puts "fcshd: compiler restarted"
|
26
29
|
else
|
27
30
|
socket.puts "fcshd: unrecognized command: #{command}"
|
28
31
|
end
|
@@ -33,6 +33,15 @@ module FCSHD
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
def format_type(type)
|
37
|
+
case type
|
38
|
+
when /^__AS3__\.vec:Vector\.<(.*)>$/
|
39
|
+
"Vector.<#{$1.sub(/.+:/, "")}>"
|
40
|
+
else
|
41
|
+
type.sub(/.+:/, "")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
36
45
|
def parsed_message
|
37
46
|
case FCSHD.trim(mxmlc_message).sub(/^Error: /, "")
|
38
47
|
when "Unable to resolve MXML language version. Please specify the language namespace on the root document tag.": <<EOF
|
@@ -78,10 +87,9 @@ error: #{quote $1} not found
|
|
78
87
|
EOF
|
79
88
|
when /^Implicit coercion of a value of type (.+) to an unrelated type (.+)\.$/, /^Implicit coercion of a value with static type (.+) to a possibly unrelated type (.+)\./
|
80
89
|
actual, expected = $1, $2
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
error: expected #{expected_local} (got #{actual_local})
|
90
|
+
if format_type(actual) != format_type(expected)
|
91
|
+
then <<EOF else <<EOF end
|
92
|
+
error: expected #{format_type(expected)} (got #{format_type(actual)})
|
85
93
|
EOF
|
86
94
|
error: expected #{expected} (got #{actual})
|
87
95
|
EOF
|
@@ -29,8 +29,9 @@ module FCSHD
|
|
29
29
|
when /^Required RSLs:$/
|
30
30
|
skip_indented_lines! # Does anybody care about this?
|
31
31
|
|
32
|
-
when /^(Recompile|Reason): /
|
32
|
+
when /^(Recompile|Reason|Updated): /
|
33
33
|
when /^Loading configuration file /
|
34
|
+
when "Detected configuration changes. Recompile..."
|
34
35
|
|
35
36
|
else
|
36
37
|
# Let unrecognized lines pass through verbatim.
|
data/lib/fcshd/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fcshd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
|
10
|
-
version: 0.5.2
|
8
|
+
- 6
|
9
|
+
version: "0.6"
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Daniel Brockman
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-12-
|
17
|
+
date: 2011-12-19 00:00:00 Z
|
19
18
|
dependencies: []
|
20
19
|
|
21
20
|
description: |
|
@@ -36,8 +35,8 @@ files:
|
|
36
35
|
- .gitignore
|
37
36
|
- Gemfile
|
38
37
|
- Gemfile.lock
|
39
|
-
- Makefile
|
40
38
|
- README
|
39
|
+
- Rakefile
|
41
40
|
- bin/fcshc
|
42
41
|
- bin/fcshd
|
43
42
|
- fcshd.gemspec
|
data/Makefile
DELETED