diff --git a/data/export/launchd/launchd.plist.erb b/data/export/launchd/launchd.plist.erb index faf2db6..fe02308 100644 --- a/data/export/launchd/launchd.plist.erb +++ b/data/export/launchd/launchd.plist.erb @@ -4,14 +4,25 @@ Label <%= "#{app}-#{name}-#{num}" %> + EnvironmentVariables + + <%- engine.env.merge("PORT" => port).each_pair do |var,env| -%> + <%= var.upcase %> + <%= env %> + <%- end -%> + ProgramArguments - <%= process.command %> + <%- command_args.each do |command| -%> + <%= command %> + <%- end -%> KeepAlive RunAtLoad + StandardOutPath + <%= log %>/<%= app %>-<%= name %>-<%=num%>.log StandardErrorPath <%= log %>/<%= app %>-<%= name %>-<%=num%>.log UserName diff --git a/lib/foreman/export/base.rb b/lib/foreman/export/base.rb index d55fe23..72dd464 100644 --- a/lib/foreman/export/base.rb +++ b/lib/foreman/export/base.rb @@ -119,7 +119,7 @@ private ###################################################################### end def write_template(name, target, binding) - compiled = ERB.new(export_template(name)).result(binding) + compiled = ERB.new(export_template(name), nil, '-').result(binding) write_file target, compiled end diff --git a/lib/foreman/export/launchd.rb b/lib/foreman/export/launchd.rb index fd73681..ceee3a8 100644 --- a/lib/foreman/export/launchd.rb +++ b/lib/foreman/export/launchd.rb @@ -7,6 +7,8 @@ class Foreman::Export::Launchd < Foreman::Export::Base super engine.each_process do |name, process| 1.upto(engine.formation[name]) do |num| + port = engine.port_for(process, num) + command_args = process.command.split(" ") write_template "launchd/launchd.plist.erb", "#{app}-#{name}-#{num}.plist", binding end end diff --git a/spec/foreman/export/launchd_spec.rb b/spec/foreman/export/launchd_spec.rb index 984b35c..3a22b5a 100644 --- a/spec/foreman/export/launchd_spec.rb +++ b/spec/foreman/export/launchd_spec.rb @@ -18,4 +18,14 @@ describe Foreman::Export::Launchd, :fakefs do File.read("/tmp/init/app-bravo-1.plist").should == example_export_file("launchd/launchd-b.default") end + context "with multiple command arguments" do + let(:procfile) { FileUtils.mkdir_p("/tmp/app"); write_procfile("/tmp/app/Procfile", "charlie") } + + it "splits each command argument" do + launchd.export + File.read("/tmp/init/app-alpha-1.plist").should == example_export_file("launchd/launchd-c.default") + end + + end + end diff --git a/spec/resources/export/launchd/launchd-a.default b/spec/resources/export/launchd/launchd-a.default index 05675ea..7342302 100644 --- a/spec/resources/export/launchd/launchd-a.default +++ b/spec/resources/export/launchd/launchd-a.default @@ -4,6 +4,11 @@ Label app-alpha-1 + EnvironmentVariables + + PORT + 5000 + ProgramArguments ./alpha @@ -12,6 +17,8 @@ RunAtLoad + StandardOutPath + /var/log/app/app-alpha-1.log StandardErrorPath /var/log/app/app-alpha-1.log UserName diff --git a/spec/resources/export/launchd/launchd-b.default b/spec/resources/export/launchd/launchd-b.default index 99d5a04..51b6363 100644 --- a/spec/resources/export/launchd/launchd-b.default +++ b/spec/resources/export/launchd/launchd-b.default @@ -4,6 +4,11 @@ Label app-bravo-1 + EnvironmentVariables + + PORT + 5100 + ProgramArguments ./bravo @@ -12,6 +17,8 @@ RunAtLoad + StandardOutPath + /var/log/app/app-bravo-1.log StandardErrorPath /var/log/app/app-bravo-1.log UserName diff --git a/spec/resources/export/launchd/launchd-c.default b/spec/resources/export/launchd/launchd-c.default new file mode 100644 index 0000000..b157d84 --- /dev/null +++ b/spec/resources/export/launchd/launchd-c.default @@ -0,0 +1,30 @@ + + + + + Label + app-alpha-1 + EnvironmentVariables + + PORT + 5000 + + ProgramArguments + + ./alpha + charlie + + KeepAlive + + RunAtLoad + + StandardOutPath + /var/log/app/app-alpha-1.log + StandardErrorPath + /var/log/app/app-alpha-1.log + UserName + app + WorkingDirectory + /tmp/app + +