Add Profile load/write/append API

This commit is contained in:
Michael Granger
2012-05-02 09:30:57 -07:00
parent af58af1c60
commit 053ae8f0be
4 changed files with 72 additions and 4 deletions
+24 -4
View File
@@ -13,8 +13,9 @@ class Foreman::Procfile
attr_reader :entries
def initialize(filename)
@entries = parse_procfile(filename)
def initialize(filename=nil)
@entries = []
load(filename) if filename
end
def [](name)
@@ -25,12 +26,31 @@ class Foreman::Procfile
entries.map(&:name)
end
private
def load(filename)
entries.clear
parse_procfile(filename)
end
def write(filename)
File.open(filename, 'w') do |io|
entries.each do |ent|
io.puts(ent)
end
end
end
def <<(entry)
entries << Foreman::ProcfileEntry.new(*entry)
self
end
protected
def parse_procfile(filename)
File.read(filename).split("\n").map do |line|
if line =~ /^([A-Za-z0-9_]+):\s*(.+)$/
Foreman::ProcfileEntry.new($1, $2)
self << [ $1, $2 ]
end
end.compact
end
+4
View File
@@ -19,4 +19,8 @@ class Foreman::ProcfileEntry
end
end
def to_s
"#{name}: #{command}"
end
end