change to Pstypes

This commit is contained in:
David Dollar
2010-10-15 15:50:40 -07:00
parent d41a8726bd
commit 8446528f5a
6 changed files with 44 additions and 44 deletions

View File

@@ -5,7 +5,7 @@ require "thor"
class Foreman::CLI < Thor
class_option :procfile, :type => :string, :aliases => "-f", :desc => "Default: ./Procfile"
class_option :pstypes, :type => :string, :aliases => "-f", :desc => "Default: Pstypes"
desc "start [PROCESS]", "Start the application, or a specific process"
@@ -14,7 +14,7 @@ class Foreman::CLI < Thor
:banner => '"alpha=5,bar=3"'
def start(process=nil)
check_procfile!
check_pstypes!
if process
engine.execute(process, options)
@@ -33,7 +33,7 @@ class Foreman::CLI < Thor
:banner => '"alpha=5,bar=3"'
def export(format, location=nil)
check_procfile!
check_pstypes!
formatter = case format
when "upstart" then Foreman::Export::Upstart
@@ -49,16 +49,16 @@ class Foreman::CLI < Thor
private ######################################################################
def check_procfile!
error("Procfile does not exist.") unless File.exist?(procfile)
def check_pstypes!
error("#{pstypes} does not exist.") unless File.exist?(pstypes)
end
def engine
@engine ||= Foreman::Engine.new(procfile)
@engine ||= Foreman::Engine.new(pstypes)
end
def procfile
options[:procfile] || "./Procfile"
def pstypes
options[:pstypes] || "Pstypes"
end
private ######################################################################
@@ -68,8 +68,8 @@ private ######################################################################
exit 1
end
def procfile_exists?(procfile)
File.exist?(procfile)
def pstypes_exists?(pstypes)
File.exist?(pstypes)
end
end

View File

@@ -8,21 +8,21 @@ require "fileutils"
class Foreman::Engine
attr_reader :procfile
attr_reader :pstypes
attr_reader :directory
extend Term::ANSIColor
COLORS = [ cyan, yellow, green, magenta, red ]
def initialize(procfile)
@procfile = read_procfile(procfile)
@directory = File.expand_path(File.dirname(procfile))
def initialize(pstypes)
@pstypes = read_pstypes(pstypes)
@directory = File.expand_path(File.dirname(pstypes))
end
def processes
@processes ||= begin
procfile.split("\n").inject({}) do |hash, line|
pstypes.split("\n").inject({}) do |hash, line|
next if line.strip == ""
name, command = line.split(" ", 2)
process = Foreman::Process.new(name, command)
@@ -140,8 +140,8 @@ private ######################################################################
$0 = title
end
def read_procfile(procfile)
File.read(procfile)
def read_pstypes(pstypes)
File.read(pstypes)
end
def watch_for_termination

View File

@@ -1,4 +1,4 @@
foreman(1) -- manage Procfile-based applications
foreman(1) -- manage Pstypes-based applications
================================================
## SYNOPSIS
@@ -8,8 +8,8 @@ foreman(1) -- manage Procfile-based applications
## DESCRIPTION
**Foreman** is a manager for Procfile-based applications. Its aim is to
abstract away the details of the Procfile format, and allow you to either run
**Foreman** is a manager for Pstypes-based applications. Its aim is to
abstract away the details of the Pstypes format, and allow you to either run
your application directly or export it to some other process management
format.
@@ -18,7 +18,7 @@ format.
`foreman start` is used to run your application directly from the command line.
If no additional parameters are passed, foreman will run one instance of each
type of process defined in your Procfile.
type of process defined in your Pstypes.
If a parameter is passed, foreman will run one instance of the specified
application type.
@@ -66,8 +66,8 @@ The following options control how the application is run:
These options control all modes of foreman's operation.
* `-f`, `--procfile`:
Specify an alternate location for the application's Procfile. This file's
* `-f`, `--pstypes`:
Specify an alternate location for the application's Pstypes. This file's
containing directory will be assumed to be the root directory of the
application.
@@ -99,9 +99,9 @@ will be structured to make the following commands valid:
`restart appname-processname-3`
## PROCFILE
## PSTYPES
A Procfile should contain both a name for the process and the command used
A Pstyes file should contain both a name for the process and the command used
to run it.
web bundle exec thin start
@@ -117,9 +117,9 @@ Export the application in upstart format:
$ foreman export upstart /etc/init
Run one process type from the application defined in a specific Procfile:
Run one process type from the application defined in a specific Pstypes:
$ foreman start alpha -p ~/app/Procfile
$ foreman start alpha -p ~/app/Pstypes
## COPYRIGHT

View File

@@ -5,17 +5,17 @@ describe "Foreman::CLI" do
subject { Foreman::CLI.new }
describe "start" do
describe "with a non-existent Procfile" do
describe "with a non-existent Pstypes" do
it "prints an error" do
mock_error(subject, "Procfile does not exist.") do
mock_error(subject, "Pstypes does not exist.") do
dont_allow.instance_of(Foreman::Engine).start
subject.start
end
end
end
describe "with a Procfile" do
before(:each) { write_procfile }
describe "with a Pstypes" do
before(:each) { write_pstypes }
it "runs successfully" do
dont_allow(subject).error
@@ -26,17 +26,17 @@ describe "Foreman::CLI" do
end
describe "export" do
describe "with a non-existent Procfile" do
describe "with a non-existent Pstypes" do
it "prints an error" do
mock_error(subject, "Procfile does not exist.") do
mock_error(subject, "Pstypes does not exist.") do
dont_allow.instance_of(Foreman::Engine).export
subject.export("testapp")
end
end
end
describe "with a Procfile" do
before(:each) { write_procfile }
describe "with a Pstypes" do
before(:each) { write_pstypes }
describe "with an invalid formatter" do
it "prints an error" do

View File

@@ -2,18 +2,18 @@ require "spec_helper"
require "foreman/engine"
describe "Foreman::Engine" do
subject { Foreman::Engine.new("Procfile") }
subject { Foreman::Engine.new("Pstypes") }
describe "initialize" do
describe "without an existing Procfile" do
describe "without an existing Pstypes" do
it "raises an error" do
lambda { subject }.should raise_error
end
end
describe "with a Procfile" do
describe "with a Pstypes" do
it "reads the processes" do
write_procfile
write_pstypes
subject.processes["alpha"].command.should == "./alpha"
subject.processes["bravo"].command.should == "./bravo"
end
@@ -22,7 +22,7 @@ describe "Foreman::Engine" do
describe "start" do
it "forks the processes" do
write_procfile
write_pstypes
mock(subject).fork(subject.processes["alpha"], {})
mock(subject).fork(subject.processes["bravo"], {})
mock(subject).watch_for_termination
@@ -30,7 +30,7 @@ describe "Foreman::Engine" do
end
it "handles concurrency" do
write_procfile
write_pstypes
mock(subject).fork_individual(subject.processes["alpha"], 5000)
mock(subject).fork_individual(subject.processes["alpha"], 5001)
mock(subject).fork_individual(subject.processes["bravo"], 5100)
@@ -41,7 +41,7 @@ describe "Foreman::Engine" do
describe "execute" do
it "runs the processes" do
write_procfile
write_pstypes
mock(subject).fork(subject.processes["alpha"], {})
mock(subject).watch_for_termination
subject.execute("alpha")

View File

@@ -24,8 +24,8 @@ def write_foreman_config(app)
end
end
def write_procfile(procfile="Procfile")
File.open(procfile, "w") do |file|
def write_pstypes(pstypes="Pstypes")
File.open(pstypes, "w") do |file|
file.puts "alpha ./alpha"
file.puts "bravo ./bravo"
end