69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/vmc/cli/app/files.rb', line 69
def tail
app = input[:app]
lines = Queue.new
max_len = 0
if path = input[:path]
max_len = path.size
app.instances.each do |i|
Thread.new do
stream_path(lines, i, path.split("/"))
end
end
else
app.instances.each do |i|
i.files("logs").each do |path|
len = path.join("/").size
max_len = len if len > max_len
Thread.new do
stream_path(lines, i, path)
end
end
end
end
while line = lines.pop
instance, path, log = line
unless log.end_with?("\n")
log += i("%") if color?
log += "\n"
end
print "\##{c(instance.id, :instance)} "
print "#{c(path.join("/").ljust(max_len), :name)} "
print log
end
rescue CFoundry::NotFound
fail "Invalid path #{b(path)} for app #{b(app.name)}"
rescue CFoundry::FileError => e
fail e.description
end
|