foreman 0.40.0-mingw32 → 0.41.0-mingw32
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/data/export/supervisord/app.conf.erb +21 -0
 - data/lib/foreman/color.rb +40 -0
 - data/lib/foreman/engine.rb +9 -17
 - data/lib/foreman/export.rb +2 -0
 - data/lib/foreman/export/supervisord.rb +26 -0
 - data/lib/foreman/version.rb +1 -1
 - data/spec/foreman/color_spec.rb +31 -0
 - data/spec/foreman/export/supervisord_spec.rb +75 -0
 - data/spec/resources/export/supervisord/app-alpha-2.conf +21 -0
 - data/spec/resources/export/supervisord/app.conf +21 -0
 - metadata +13 -17
 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%
         
     | 
| 
      
 2 
     | 
    
         
            +
            engine.procfile.entries.each do |process|
         
     | 
| 
      
 3 
     | 
    
         
            +
              next if (conc = self.concurrency[process.name]) < 1
         
     | 
| 
      
 4 
     | 
    
         
            +
              1.upto(self.concurrency[process.name]) do |num|
         
     | 
| 
      
 5 
     | 
    
         
            +
                port = engine.port_for(process, num, self.port)
         
     | 
| 
      
 6 
     | 
    
         
            +
                name = if (conc > 1); "#{process.name}-#{num}" else process.name; end
         
     | 
| 
      
 7 
     | 
    
         
            +
                environment = (engine.environment.each_pair { |var,env| "#{var.upcase}=#{env}" }.to_a << "PORT=#{port}")
         
     | 
| 
      
 8 
     | 
    
         
            +
            %>
         
     | 
| 
      
 9 
     | 
    
         
            +
            [program:<%= app %>-<%= name %>]
         
     | 
| 
      
 10 
     | 
    
         
            +
            command=<%= process.command %>
         
     | 
| 
      
 11 
     | 
    
         
            +
            autostart=true
         
     | 
| 
      
 12 
     | 
    
         
            +
            autorestart=true
         
     | 
| 
      
 13 
     | 
    
         
            +
            stopsignal=QUIT
         
     | 
| 
      
 14 
     | 
    
         
            +
            stdout_logfile=<%= log_root %>/<%=process.name%>-<%=num%>-out.log
         
     | 
| 
      
 15 
     | 
    
         
            +
            stderr_logfile=<%= log_root %>/<%=process.name%>-<%=num%>-err.log
         
     | 
| 
      
 16 
     | 
    
         
            +
            user=<%= user %>
         
     | 
| 
      
 17 
     | 
    
         
            +
            directory=<%= engine.directory %>
         
     | 
| 
      
 18 
     | 
    
         
            +
            environment=<%= environment.join(',') %><%
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
            %>
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "foreman"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Foreman::Color
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              ANSI = {
         
     | 
| 
      
 6 
     | 
    
         
            +
                :reset          => 0,
         
     | 
| 
      
 7 
     | 
    
         
            +
                :black          => 30,
         
     | 
| 
      
 8 
     | 
    
         
            +
                :red            => 31,
         
     | 
| 
      
 9 
     | 
    
         
            +
                :green          => 32,
         
     | 
| 
      
 10 
     | 
    
         
            +
                :yellow         => 33,
         
     | 
| 
      
 11 
     | 
    
         
            +
                :blue           => 34,
         
     | 
| 
      
 12 
     | 
    
         
            +
                :magenta        => 35,
         
     | 
| 
      
 13 
     | 
    
         
            +
                :cyan           => 36,
         
     | 
| 
      
 14 
     | 
    
         
            +
                :white          => 37,
         
     | 
| 
      
 15 
     | 
    
         
            +
                :bright_black   => 30,
         
     | 
| 
      
 16 
     | 
    
         
            +
                :bright_red     => 31,
         
     | 
| 
      
 17 
     | 
    
         
            +
                :bright_green   => 32,
         
     | 
| 
      
 18 
     | 
    
         
            +
                :bright_yellow  => 33,
         
     | 
| 
      
 19 
     | 
    
         
            +
                :bright_blue    => 34,
         
     | 
| 
      
 20 
     | 
    
         
            +
                :bright_magenta => 35,
         
     | 
| 
      
 21 
     | 
    
         
            +
                :bright_cyan    => 36,
         
     | 
| 
      
 22 
     | 
    
         
            +
                :bright_white   => 37,
         
     | 
| 
      
 23 
     | 
    
         
            +
              }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def self.enable(io)
         
     | 
| 
      
 26 
     | 
    
         
            +
                io.extend(self)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def color?
         
     | 
| 
      
 30 
     | 
    
         
            +
                return false unless self.respond_to?(:isatty)
         
     | 
| 
      
 31 
     | 
    
         
            +
                self.isatty && ENV["TERM"]
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def color(name)
         
     | 
| 
      
 35 
     | 
    
         
            +
                return "" unless color?
         
     | 
| 
      
 36 
     | 
    
         
            +
                return "" unless ansi = ANSI[name.to_sym]
         
     | 
| 
      
 37 
     | 
    
         
            +
                "\e[#{ansi}m"
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/foreman/engine.rb
    CHANGED
    
    | 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "foreman"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "foreman/color"
         
     | 
| 
       2 
3 
     | 
    
         
             
            require "foreman/process"
         
     | 
| 
       3 
4 
     | 
    
         
             
            require "foreman/procfile"
         
     | 
| 
       4 
5 
     | 
    
         
             
            require "foreman/utils"
         
     | 
| 
       5 
6 
     | 
    
         
             
            require "tempfile"
         
     | 
| 
       6 
7 
     | 
    
         
             
            require "timeout"
         
     | 
| 
       7 
     | 
    
         
            -
            require "term/ansicolor"
         
     | 
| 
       8 
8 
     | 
    
         
             
            require "fileutils"
         
     | 
| 
       9 
9 
     | 
    
         
             
            require "thread"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
         @@ -15,11 +15,10 @@ class Foreman::Engine 
     | 
|
| 
       15 
15 
     | 
    
         
             
              attr_reader :directory
         
     | 
| 
       16 
16 
     | 
    
         
             
              attr_reader :options
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
      
 18 
     | 
    
         
            +
              COLORS = %w( cyan yellow green magenta red blue intense_cyan intense_yellow
         
     | 
| 
      
 19 
     | 
    
         
            +
                           intense_green intense_magenta intense_red, intense_blue )
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
               
     | 
| 
       21 
     | 
    
         
            -
                         intense_cyan, intense_yellow, intense_green, intense_magenta,
         
     | 
| 
       22 
     | 
    
         
            -
                         intense_red, intense_blue ]
         
     | 
| 
      
 21 
     | 
    
         
            +
              Foreman::Color.enable($stdout)
         
     | 
| 
       23 
22 
     | 
    
         | 
| 
       24 
23 
     | 
    
         
             
              def initialize(procfile, options={})
         
     | 
| 
       25 
24 
     | 
    
         
             
                @procfile  = Foreman::Procfile.new(procfile)
         
     | 
| 
         @@ -128,11 +127,11 @@ private ###################################################################### 
     | 
|
| 
       128 
127 
     | 
    
         
             
              rescue Errno::ECHILD
         
     | 
| 
       129 
128 
     | 
    
         
             
              end
         
     | 
| 
       130 
129 
     | 
    
         | 
| 
       131 
     | 
    
         
            -
              def info(message, name="system", color 
     | 
| 
      
 130 
     | 
    
         
            +
              def info(message, name="system", color=:white)
         
     | 
| 
       132 
131 
     | 
    
         
             
                output  = ""
         
     | 
| 
       133 
     | 
    
         
            -
                output += color
         
     | 
| 
      
 132 
     | 
    
         
            +
                output += $stdout.color(color)
         
     | 
| 
       134 
133 
     | 
    
         
             
                output += "#{Time.now.strftime("%H:%M:%S")} #{pad_process_name(name)} | "
         
     | 
| 
       135 
     | 
    
         
            -
                output +=  
     | 
| 
      
 134 
     | 
    
         
            +
                output += $stdout.color(:reset)
         
     | 
| 
       136 
135 
     | 
    
         
             
                output += message.chomp
         
     | 
| 
       137 
136 
     | 
    
         
             
                puts output
         
     | 
| 
       138 
137 
     | 
    
         
             
              end
         
     | 
| 
         @@ -182,8 +181,8 @@ private ###################################################################### 
     | 
|
| 
       182 
181 
     | 
    
         
             
              end
         
     | 
| 
       183 
182 
     | 
    
         | 
| 
       184 
183 
     | 
    
         
             
              def assign_colors
         
     | 
| 
       185 
     | 
    
         
            -
                procfile.entries. 
     | 
| 
       186 
     | 
    
         
            -
                  colors[entry.name] =  
     | 
| 
      
 184 
     | 
    
         
            +
                procfile.entries.each_with_index do |entry, idx|
         
     | 
| 
      
 185 
     | 
    
         
            +
                  colors[entry.name] = COLORS[idx % COLORS.length]
         
     | 
| 
       187 
186 
     | 
    
         
             
                end
         
     | 
| 
       188 
187 
     | 
    
         
             
              end
         
     | 
| 
       189 
188 
     | 
    
         | 
| 
         @@ -191,13 +190,6 @@ private ###################################################################### 
     | 
|
| 
       191 
190 
     | 
    
         
             
                readers.invert[reader]
         
     | 
| 
       192 
191 
     | 
    
         
             
              end
         
     | 
| 
       193 
192 
     | 
    
         | 
| 
       194 
     | 
    
         
            -
              def next_color
         
     | 
| 
       195 
     | 
    
         
            -
                @current_color ||= -1
         
     | 
| 
       196 
     | 
    
         
            -
                @current_color  +=  1
         
     | 
| 
       197 
     | 
    
         
            -
                @current_color = 0 if COLORS.length < @current_color
         
     | 
| 
       198 
     | 
    
         
            -
                COLORS[@current_color]
         
     | 
| 
       199 
     | 
    
         
            -
              end
         
     | 
| 
       200 
     | 
    
         
            -
             
     | 
| 
       201 
193 
     | 
    
         
             
              def read_environment_files(filenames)
         
     | 
| 
       202 
194 
     | 
    
         
             
                environment = {}
         
     | 
| 
       203 
195 
     | 
    
         | 
    
        data/lib/foreman/export.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "erb"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "foreman/export"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            class Foreman::Export::Supervisord < Foreman::Export::Base
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              def export
         
     | 
| 
      
 7 
     | 
    
         
            +
                error("Must specify a location") unless location
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                FileUtils.mkdir_p location
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                app = self.app || File.basename(engine.directory)
         
     | 
| 
      
 12 
     | 
    
         
            +
                user = self.user || app
         
     | 
| 
      
 13 
     | 
    
         
            +
                log_root = self.log || "/var/log/#{app}"
         
     | 
| 
      
 14 
     | 
    
         
            +
                template_root = self.template
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                Dir["#{location}/#{app}*.conf"].each do |file|
         
     | 
| 
      
 17 
     | 
    
         
            +
                  say "cleaning up: #{file}"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  FileUtils.rm(file)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                app_template = export_template("supervisord", "app.conf.erb", template_root)
         
     | 
| 
      
 22 
     | 
    
         
            +
                app_config   = ERB.new(app_template, 0, '<').result(binding)
         
     | 
| 
      
 23 
     | 
    
         
            +
                write_file "#{location}/#{app}.conf", app_config
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/foreman/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "spec_helper"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "foreman/color"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe Foreman::Color do
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              let(:io) { Object.new }
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              it "should extend an object with colorization" do
         
     | 
| 
      
 9 
     | 
    
         
            +
                Foreman::Color.enable(io)
         
     | 
| 
      
 10 
     | 
    
         
            +
                io.should respond_to(:color)
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              it "should not colorize if the object does not respond to isatty" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                mock(io).respond_to?(:isatty) { false }
         
     | 
| 
      
 15 
     | 
    
         
            +
                Foreman::Color.enable(io)
         
     | 
| 
      
 16 
     | 
    
         
            +
                io.color(:white).should == ""
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              it "should not colorize if the object is not a tty" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                mock(io).isatty { false }
         
     | 
| 
      
 21 
     | 
    
         
            +
                Foreman::Color.enable(io)
         
     | 
| 
      
 22 
     | 
    
         
            +
                io.color(:white).should == ""
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              it "should colorize if the object is a tty" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                mock(io).isatty { true }
         
     | 
| 
      
 27 
     | 
    
         
            +
                Foreman::Color.enable(io)
         
     | 
| 
      
 28 
     | 
    
         
            +
                io.color(:white).should == "\e[37m"
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,75 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "spec_helper"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "foreman/engine"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "foreman/export/supervisord"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "tmpdir"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            describe Foreman::Export::Supervisord, :fakefs do
         
     | 
| 
      
 7 
     | 
    
         
            +
              let(:procfile) { FileUtils.mkdir_p("/tmp/app"); write_procfile("/tmp/app/Procfile") }
         
     | 
| 
      
 8 
     | 
    
         
            +
              let(:engine)   { Foreman::Engine.new(procfile) }
         
     | 
| 
      
 9 
     | 
    
         
            +
              let(:options)  { Hash.new }
         
     | 
| 
      
 10 
     | 
    
         
            +
              let(:supervisord)  { Foreman::Export::Supervisord.new("/tmp/init", engine, options) }
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              before(:each) { load_export_templates_into_fakefs("supervisord") }
         
     | 
| 
      
 13 
     | 
    
         
            +
              before(:each) { stub(supervisord).say }
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it "exports to the filesystem" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                supervisord.export
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                File.read("/tmp/init/app.conf").should         == example_export_file("supervisord/app.conf")
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              it "cleans up if exporting into an existing dir" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                mock(FileUtils).rm("/tmp/init/app.conf")
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                supervisord.export
         
     | 
| 
      
 25 
     | 
    
         
            +
                supervisord.export
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              context "with concurrency" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                let(:options) { Hash[:concurrency => "alpha=2"] }
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                it "exports to the filesystem with concurrency" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  supervisord.export
         
     | 
| 
      
 33 
     | 
    
         
            +
                  
         
     | 
| 
      
 34 
     | 
    
         
            +
                  File.read("/tmp/init/app.conf").should            == example_export_file("supervisord/app-alpha-2.conf")
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              context "with alternate templates" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                let(:template_root) { "/tmp/alternate" }
         
     | 
| 
      
 40 
     | 
    
         
            +
                let(:supervisord) { Foreman::Export::Supervisord.new("/tmp/init", engine, :template => template_root) }
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                before do
         
     | 
| 
      
 43 
     | 
    
         
            +
                  FileUtils.mkdir_p template_root
         
     | 
| 
      
 44 
     | 
    
         
            +
                  File.open("#{template_root}/app.conf.erb", "w") { |f| f.puts "alternate_template" }
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                it "can export with alternate template files" do
         
     | 
| 
      
 48 
     | 
    
         
            +
                  supervisord.export
         
     | 
| 
      
 49 
     | 
    
         
            +
                  
         
     | 
| 
      
 50 
     | 
    
         
            +
                  File.read("/tmp/init/app.conf").should == "alternate_template\n"
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              context "with alternate templates from home dir" do
         
     | 
| 
      
 55 
     | 
    
         
            +
                let(:default_template_root) {File.expand_path("#{ENV['HOME']}/.foreman/templates")}
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                before do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  ENV['_FOREMAN_SPEC_HOME'] = ENV['HOME']
         
     | 
| 
      
 59 
     | 
    
         
            +
                  ENV['HOME'] = "/home/appuser"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  FileUtils.mkdir_p default_template_root
         
     | 
| 
      
 61 
     | 
    
         
            +
                  File.open("#{default_template_root}/app.conf.erb", "w") { |f| f.puts "default_alternate_template" }
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                after do
         
     | 
| 
      
 65 
     | 
    
         
            +
                  ENV['HOME'] = ENV.delete('_FOREMAN_SPEC_HOME')
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                it "can export with alternate template files" do
         
     | 
| 
      
 69 
     | 
    
         
            +
                  supervisord.export
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  File.read("/tmp/init/app.conf").should == "default_alternate_template\n"
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            [program:app-alpha-1]
         
     | 
| 
      
 3 
     | 
    
         
            +
            command=./alpha
         
     | 
| 
      
 4 
     | 
    
         
            +
            autostart=true
         
     | 
| 
      
 5 
     | 
    
         
            +
            autorestart=true
         
     | 
| 
      
 6 
     | 
    
         
            +
            stopsignal=QUIT
         
     | 
| 
      
 7 
     | 
    
         
            +
            stdout_logfile=/var/log/app/alpha-1-out.log
         
     | 
| 
      
 8 
     | 
    
         
            +
            stderr_logfile=/var/log/app/alpha-1-err.log
         
     | 
| 
      
 9 
     | 
    
         
            +
            user=app
         
     | 
| 
      
 10 
     | 
    
         
            +
            directory=/tmp/app
         
     | 
| 
      
 11 
     | 
    
         
            +
            environment=PORT=5000
         
     | 
| 
      
 12 
     | 
    
         
            +
            [program:app-alpha-2]
         
     | 
| 
      
 13 
     | 
    
         
            +
            command=./alpha
         
     | 
| 
      
 14 
     | 
    
         
            +
            autostart=true
         
     | 
| 
      
 15 
     | 
    
         
            +
            autorestart=true
         
     | 
| 
      
 16 
     | 
    
         
            +
            stopsignal=QUIT
         
     | 
| 
      
 17 
     | 
    
         
            +
            stdout_logfile=/var/log/app/alpha-2-out.log
         
     | 
| 
      
 18 
     | 
    
         
            +
            stderr_logfile=/var/log/app/alpha-2-err.log
         
     | 
| 
      
 19 
     | 
    
         
            +
            user=app
         
     | 
| 
      
 20 
     | 
    
         
            +
            directory=/tmp/app
         
     | 
| 
      
 21 
     | 
    
         
            +
            environment=PORT=5001
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            [program:app-alpha]
         
     | 
| 
      
 3 
     | 
    
         
            +
            command=./alpha
         
     | 
| 
      
 4 
     | 
    
         
            +
            autostart=true
         
     | 
| 
      
 5 
     | 
    
         
            +
            autorestart=true
         
     | 
| 
      
 6 
     | 
    
         
            +
            stopsignal=QUIT
         
     | 
| 
      
 7 
     | 
    
         
            +
            stdout_logfile=/var/log/app/alpha-1-out.log
         
     | 
| 
      
 8 
     | 
    
         
            +
            stderr_logfile=/var/log/app/alpha-1-err.log
         
     | 
| 
      
 9 
     | 
    
         
            +
            user=app
         
     | 
| 
      
 10 
     | 
    
         
            +
            directory=/tmp/app
         
     | 
| 
      
 11 
     | 
    
         
            +
            environment=PORT=5000
         
     | 
| 
      
 12 
     | 
    
         
            +
            [program:app-bravo]
         
     | 
| 
      
 13 
     | 
    
         
            +
            command=./bravo
         
     | 
| 
      
 14 
     | 
    
         
            +
            autostart=true
         
     | 
| 
      
 15 
     | 
    
         
            +
            autorestart=true
         
     | 
| 
      
 16 
     | 
    
         
            +
            stopsignal=QUIT
         
     | 
| 
      
 17 
     | 
    
         
            +
            stdout_logfile=/var/log/app/bravo-1-out.log
         
     | 
| 
      
 18 
     | 
    
         
            +
            stderr_logfile=/var/log/app/bravo-1-err.log
         
     | 
| 
      
 19 
     | 
    
         
            +
            user=app
         
     | 
| 
      
 20 
     | 
    
         
            +
            directory=/tmp/app
         
     | 
| 
      
 21 
     | 
    
         
            +
            environment=PORT=5100
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: foreman
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.41.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: mingw32
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,22 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-03-16 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
     | 
    
         
            -
              name: term-ansicolor
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: &70287555411520 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
     | 
    
         
            -
                none: false
         
     | 
| 
       18 
     | 
    
         
            -
                requirements:
         
     | 
| 
       19 
     | 
    
         
            -
                - - ~>
         
     | 
| 
       20 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       21 
     | 
    
         
            -
                    version: 1.0.7
         
     | 
| 
       22 
     | 
    
         
            -
              type: :runtime
         
     | 
| 
       23 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: *70287555411520
         
     | 
| 
       25 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
15 
     | 
    
         
             
              name: thor
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &70292585295960 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +21,10 @@ dependencies: 
     | 
|
| 
       32 
21 
     | 
    
         
             
                    version: 0.13.6
         
     | 
| 
       33 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *70292585295960
         
     | 
| 
       36 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
26 
     | 
    
         
             
              name: win32console
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &70292585295160 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
28 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
30 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -43,7 +32,7 @@ dependencies: 
     | 
|
| 
       43 
32 
     | 
    
         
             
                    version: 1.3.0
         
     | 
| 
       44 
33 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       45 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *70292585295160
         
     | 
| 
       47 
36 
     | 
    
         
             
            description: Process manager for applications with multiple components
         
     | 
| 
       48 
37 
     | 
    
         
             
            email: ddollar@gmail.com
         
     | 
| 
       49 
38 
     | 
    
         
             
            executables:
         
     | 
| 
         @@ -62,16 +51,19 @@ files: 
     | 
|
| 
       62 
51 
     | 
    
         
             
            - data/export/bluepill/master.pill.erb
         
     | 
| 
       63 
52 
     | 
    
         
             
            - data/export/runit/log_run.erb
         
     | 
| 
       64 
53 
     | 
    
         
             
            - data/export/runit/run.erb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - data/export/supervisord/app.conf.erb
         
     | 
| 
       65 
55 
     | 
    
         
             
            - data/export/upstart/master.conf.erb
         
     | 
| 
       66 
56 
     | 
    
         
             
            - data/export/upstart/process.conf.erb
         
     | 
| 
       67 
57 
     | 
    
         
             
            - data/export/upstart/process_master.conf.erb
         
     | 
| 
       68 
58 
     | 
    
         
             
            - lib/foreman/cli.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - lib/foreman/color.rb
         
     | 
| 
       69 
60 
     | 
    
         
             
            - lib/foreman/distribution.rb
         
     | 
| 
       70 
61 
     | 
    
         
             
            - lib/foreman/engine.rb
         
     | 
| 
       71 
62 
     | 
    
         
             
            - lib/foreman/export/base.rb
         
     | 
| 
       72 
63 
     | 
    
         
             
            - lib/foreman/export/bluepill.rb
         
     | 
| 
       73 
64 
     | 
    
         
             
            - lib/foreman/export/inittab.rb
         
     | 
| 
       74 
65 
     | 
    
         
             
            - lib/foreman/export/runit.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - lib/foreman/export/supervisord.rb
         
     | 
| 
       75 
67 
     | 
    
         
             
            - lib/foreman/export/upstart.rb
         
     | 
| 
       76 
68 
     | 
    
         
             
            - lib/foreman/export.rb
         
     | 
| 
       77 
69 
     | 
    
         
             
            - lib/foreman/helpers.rb
         
     | 
| 
         @@ -83,11 +75,13 @@ files: 
     | 
|
| 
       83 
75 
     | 
    
         
             
            - lib/foreman.rb
         
     | 
| 
       84 
76 
     | 
    
         
             
            - README.md
         
     | 
| 
       85 
77 
     | 
    
         
             
            - spec/foreman/cli_spec.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            - spec/foreman/color_spec.rb
         
     | 
| 
       86 
79 
     | 
    
         
             
            - spec/foreman/engine_spec.rb
         
     | 
| 
       87 
80 
     | 
    
         
             
            - spec/foreman/export/base_spec.rb
         
     | 
| 
       88 
81 
     | 
    
         
             
            - spec/foreman/export/bluepill_spec.rb
         
     | 
| 
       89 
82 
     | 
    
         
             
            - spec/foreman/export/inittab_spec.rb
         
     | 
| 
       90 
83 
     | 
    
         
             
            - spec/foreman/export/runit_spec.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - spec/foreman/export/supervisord_spec.rb
         
     | 
| 
       91 
85 
     | 
    
         
             
            - spec/foreman/export/upstart_spec.rb
         
     | 
| 
       92 
86 
     | 
    
         
             
            - spec/foreman/export_spec.rb
         
     | 
| 
       93 
87 
     | 
    
         
             
            - spec/foreman/helpers_spec.rb
         
     | 
| 
         @@ -105,6 +99,8 @@ files: 
     | 
|
| 
       105 
99 
     | 
    
         
             
            - spec/resources/export/runit/app-alpha-2-run
         
     | 
| 
       106 
100 
     | 
    
         
             
            - spec/resources/export/runit/app-bravo-1-log-run
         
     | 
| 
       107 
101 
     | 
    
         
             
            - spec/resources/export/runit/app-bravo-1-run
         
     | 
| 
      
 102 
     | 
    
         
            +
            - spec/resources/export/supervisord/app-alpha-2.conf
         
     | 
| 
      
 103 
     | 
    
         
            +
            - spec/resources/export/supervisord/app.conf
         
     | 
| 
       108 
104 
     | 
    
         
             
            - spec/resources/export/upstart/app-alpha-1.conf
         
     | 
| 
       109 
105 
     | 
    
         
             
            - spec/resources/export/upstart/app-alpha-2.conf
         
     | 
| 
       110 
106 
     | 
    
         
             
            - spec/resources/export/upstart/app-alpha.conf
         
     |