fcshd 0.2 → 0.3

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/Makefile ADDED
@@ -0,0 +1,6 @@
1
+ build:
2
+ gem build fcshd.gemspec
3
+ clean:
4
+ rm *.gem
5
+ push: build
6
+ gem push fcshd-$(shell ruby -r lib/fcshd/version -e 'print FCSHD::VERSION').gem
data/bin/fcshc CHANGED
@@ -23,15 +23,6 @@ $extra_arguments = []
23
23
  OptionParser.new do |parser|
24
24
  parser.banner = "Usage: fcshc MAIN [SRCDIR|LIB]... -o OUTPUT"
25
25
 
26
- parser.on("--halo", "Use the Halo theme") do
27
- if ENV["FLEX_HOME"]
28
- $extra_arguments << "-theme=" +
29
- File.join(ENV["FLEX_HOME"], *%w(frameworks themes Halo halo.swc))
30
- else
31
- die "must set $FLEX_HOME to use --halo option"
32
- end
33
- end
34
-
35
26
  parser.on("-o", "--output FILENAME", "Write SWF to FILENAME") do |value|
36
27
  $output_filename = File.expand_path(value)
37
28
  end
@@ -40,7 +31,16 @@ OptionParser.new do |parser|
40
31
  $extra_arguments << "-compatibility-version=3"
41
32
  end
42
33
 
43
- parser.on("-X EXTRA-ARGUMENT", "Pass EXTRA-ARGUMENT to mxmlc") do |value|
34
+ parser.on("--no-flex", "Remove all runtime shared libraries (RSLs)") do
35
+ $extra_arguments << "-runtime-shared-library-path="
36
+ end
37
+
38
+ parser.on("--halo", "Use the Halo theme") do
39
+ die "must set $FLEX_HOME to use --halo option" if not FlexHome.known?
40
+ $extra_arguments << "-theme=#{FlexHome.halo_swc}"
41
+ end
42
+
43
+ parser.on("-X EXTRA-ARGUMENT", "Pass EXTRA-ARGUMENT to mxmlc (multiple allowed)") do |value|
44
44
  $extra_arguments << value
45
45
  end
46
46
 
@@ -68,6 +68,10 @@ if $source_filename == nil
68
68
  die "missing source file to compile"
69
69
  end
70
70
 
71
+ if $source_directories == []
72
+ $source_directories << File.dirname($source_filename)
73
+ end
74
+
71
75
  if $output_filename == nil
72
76
  $source_filename.sub(/\.(as|mxml)$/, ".swf").tap do |filename|
73
77
  local_filename = File.basename(filename)
@@ -79,6 +83,7 @@ $fcshd_arguments = ["mxmlc #$source_filename -output=#$output_filename"]
79
83
 
80
84
  for directory in $source_directories
81
85
  $fcshd_arguments << "-compiler.source-path+=#{directory}"
86
+ $fcshd_arguments << "-compiler.library-path+=#{directory}"
82
87
  end
83
88
 
84
89
  for filename in $library_filenames
@@ -88,10 +93,10 @@ end
88
93
  $fcshd_arguments.concat($extra_arguments)
89
94
 
90
95
  begin
91
- host, port = "localhost", 34345
96
+ host, port = "localhost", FCSHD::Server::PORT
92
97
  socket = TCPSocket.new(host, port)
93
98
  rescue Errno::ECONNREFUSED
94
- die "Could not connect to fcshd at #{host}:#{port}."
99
+ die "could not connect to fcshd at #{host}:#{port}"
95
100
  end
96
101
 
97
102
  basedir = File.join(File.expand_path("."), "")
data/bin/fcshd CHANGED
@@ -9,16 +9,24 @@ rescue LoadError
9
9
  end
10
10
 
11
11
  logger = FCSHD::Logger.new(STDERR)
12
+
13
+ logger.die <<"^D" if not FCSHD::FlexHome.known?
14
+ Please put the Flex SDK in #{FlexHome.default} or set $FLEX_HOME.
15
+ ^D
16
+
17
+ logger.log "This is fcshd #{FCSHD::VERSION}."
18
+ logger.log "Flex SDK: #{FCSHD::FlexHome}"
19
+
12
20
  compiler = FCSHD::Compiler.new(logger)
13
21
  compiler.start!
14
22
 
15
23
  Thread.abort_on_exception = true
16
24
 
17
- FCSHD_PORT = 34345
18
-
19
25
  begin
20
- logger.log "Listening to port #{FCSHD_PORT}."
21
- FCSHD::Server.new(FCSHD_PORT, compiler, logger).run!
26
+ FCSHD::Server.new(FCSHD::Server::PORT, compiler, logger).run!
27
+ logger.log "Now listening to port #{FCSHD_PORT}."
22
28
  rescue Interrupt
23
29
  logger.log "Exiting."
30
+ rescue Exception => error
31
+ logger.error "Could not listen to port #{FCSHD_PORT}: #{error}"
24
32
  end
data/lib/fcshd.rb CHANGED
@@ -1,6 +1,7 @@
1
- require "fcshd/compiler-output-writer"
2
- require "fcshd/compiler-output"
3
1
  require "fcshd/compiler"
2
+ require "fcshd/compiler-output"
3
+ require "fcshd/compiler-output-writer"
4
+ require "fcshd/flex-home"
4
5
  require "fcshd/logger"
5
6
  require "fcshd/problem"
6
7
  require "fcshd/server"
@@ -1,52 +1,6 @@
1
1
  require "find"
2
2
 
3
3
  module FCSHD
4
- module FlexHome
5
- extend self
6
-
7
- DEFAULT_FLEX_HOME = "/Library/Flex"
8
-
9
- def known?
10
- !!flex_home
11
- end
12
-
13
- def fcsh
14
- flex_path("bin", "fcsh")
15
- end
16
-
17
- def find_standard_component(name)
18
- Find.find(standard_source_directory_root) do |filename|
19
- if barename(filename) == name
20
- break File.dirname(filename).
21
- sub(%r{.+/src/}, "").gsub("/", ".")
22
- end
23
- end
24
- end
25
-
26
- private
27
-
28
- def flex_home
29
- ENV["FLEX_HOME"] or
30
- if File.directory? DEFAULT_FLEX_HOME
31
- DEFAULT_FLEX_HOME
32
- else
33
- nil
34
- end
35
- end
36
-
37
- def flex_path(*components)
38
- File.join(flex_home, *components)
39
- end
40
-
41
- def standard_source_directory_root
42
- flex_path("frameworks", "projects")
43
- end
44
-
45
- def barename(filename)
46
- File.basename(filename).sub(/\..*/, "")
47
- end
48
- end
49
-
50
4
  class Compiler
51
5
  def initialize(logger)
52
6
  @logger = logger
@@ -54,7 +8,6 @@ module FCSHD
54
8
  end
55
9
 
56
10
  def start!
57
- ensure_flex_home_known!
58
11
  start_fcsh_process!
59
12
  parse_fcsh_boilerplate!
60
13
  @logger.log "Started Flex #@flex_version compiler shell."
@@ -76,15 +29,6 @@ module FCSHD
76
29
 
77
30
  private
78
31
 
79
- def ensure_flex_home_known!
80
- if not FlexHome.known?
81
- @logger.log <<"^D"
82
- Please put the Flex SDK in #{FlexHome::DEFAULT_FLEX_HOME} or set $FLEX_HOME.
83
- ^D
84
- @logger.exit
85
- end
86
- end
87
-
88
32
  def start_fcsh_process!
89
33
  stop_fcsh_process!
90
34
  @fcsh_process = IO.popen("#{FlexHome.fcsh} 2>&1", "r+")
@@ -107,7 +51,7 @@ Please put the Flex SDK in #{FlexHome::DEFAULT_FLEX_HOME} or set $FLEX_HOME.
107
51
  end
108
52
 
109
53
  def compile_new!
110
- @frontend.puts "fcshd: Compiling from scratch..."
54
+ @frontend.puts "fcshd: compiling from scratch"
111
55
  @frontend.flush
112
56
  send_fcsh_command! @command
113
57
  parse_compilation_output!
@@ -115,6 +59,9 @@ Please put the Flex SDK in #{FlexHome::DEFAULT_FLEX_HOME} or set $FLEX_HOME.
115
59
  if not have_command_id?
116
60
  @logger.error "Could not determine compilation ID:"
117
61
  @logger.error @logger.format_command("(fcsh) #@command", @output)
62
+
63
+ @frontend.puts "fcshd: internal error"
64
+ @frontend.flush
118
65
  end
119
66
  end
120
67
 
@@ -0,0 +1,49 @@
1
+ module FCSHD
2
+ module FlexHome
3
+ extend self
4
+
5
+ def default
6
+ "/Library/Flex"
7
+ end
8
+
9
+ def known?
10
+ !value.nil?
11
+ end
12
+
13
+ def value
14
+ ENV["FLEX_HOME"] or
15
+ if File.directory? default
16
+ default
17
+ else
18
+ nil
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ value
24
+ end
25
+
26
+ def [](*components)
27
+ File.join(value, *components)
28
+ end
29
+
30
+ # ------------------------------------------------------
31
+
32
+ def fcsh
33
+ self["bin/fcsh"]
34
+ end
35
+
36
+ def halo_swc
37
+ self["frameworks/themes/Halo/halo.swc"]
38
+ end
39
+
40
+ # ------------------------------------------------------
41
+
42
+ def find_component(name)
43
+ Find.find(self["frameworks/projects"]) do |filename|
44
+ break File.dirname(filename).sub(%r{.+/src/}, "").gsub("/", ".") if
45
+ File.basename(filename).sub(/\..*/, "") == name
46
+ end
47
+ end
48
+ end
49
+ end
data/lib/fcshd/server.rb CHANGED
@@ -2,6 +2,8 @@ require "socket"
2
2
 
3
3
  module FCSHD
4
4
  class Server
5
+ PORT = 34345
6
+
5
7
  def initialize(port, compiler, logger)
6
8
  @server = TCPServer.new("localhost", port)
7
9
  @compiler = compiler
@@ -22,7 +24,7 @@ module FCSHD
22
24
  when /^mxmlc /
23
25
  compiler.compile! command, socket
24
26
  else
25
- sockets.puts "fcshd: Unrecognized command: #{command}"
27
+ sockets.puts "fcshd: unrecognized command: #{command}"
26
28
  end
27
29
  rescue Errno::EPIPE
28
30
  logger.log "Broken pipe."
data/lib/fcshd/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  unless defined? FCSHD::VERSION
2
2
  module FCSHD
3
- VERSION = "0.2"
3
+ VERSION = "0.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fcshd
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- version: "0.2"
8
+ - 3
9
+ version: "0.3"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Daniel Brockman
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-11-01 00:00:00 Z
17
+ date: 2011-11-02 00:00:00 Z
18
18
  dependencies: []
19
19
 
20
20
  description: |
@@ -35,6 +35,7 @@ files:
35
35
  - .gitignore
36
36
  - Gemfile
37
37
  - Gemfile.lock
38
+ - Makefile
38
39
  - README
39
40
  - bin/fcshc
40
41
  - bin/fcshd
@@ -43,6 +44,7 @@ files:
43
44
  - lib/fcshd/compiler-output-writer.rb
44
45
  - lib/fcshd/compiler-output.rb
45
46
  - lib/fcshd/compiler.rb
47
+ - lib/fcshd/flex-home.rb
46
48
  - lib/fcshd/logger.rb
47
49
  - lib/fcshd/problem.rb
48
50
  - lib/fcshd/server.rb
@@ -77,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
79
  requirements: []
78
80
 
79
81
  rubyforge_project:
80
- rubygems_version: 1.8.11
82
+ rubygems_version: 1.8.10
81
83
  signing_key:
82
84
  specification_version: 3
83
85
  summary: Usable CLI for the Adobe Flex compiler shell (fcsh)