18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/anvil/cli.rb', line 18
def build(source=nil)
if options[:pipeline]
old_stdout = $stdout.dup
$stdout = $stderr
end
source ||= "."
build_options = {
:buildpack => prepare_buildpack(options[:buildpack].to_s)
}
builder = if is_url?(source)
Anvil::Builder.new(source)
else
manifest = Anvil::Manifest.new(File.expand_path(source))
print "Checking for files to sync... "
missing = manifest.missing
puts "done, #{missing.length} files needed"
if missing.length > 0
Progress.start("Uploading", missing.map { |hash, file| file["size"].to_i }.inject(&:+))
manifest.upload(missing.keys) do |file|
Progress.step file["size"].to_i
end
puts "Uploading... done "
end
manifest
end
slug_url = builder.build(build_options) do |chunk|
print chunk
end
old_stdout.puts slug_url if options[:pipeline]
rescue Anvil::Builder::BuildError => ex
error "Build Error: #{ex.message}"
end
|