vagrant/plugins/pushes/atlas/push.rb

58 lines
1.7 KiB
Ruby
Raw Normal View History

require "vagrant/util/safe_exec"
require "vagrant/util/subprocess"
require "vagrant/util/which"
2014-10-29 03:54:16 +00:00
module VagrantPlugins
module AtlasPush
2014-10-29 03:54:16 +00:00
class Push < Vagrant.plugin("2", :push)
UPLOADER_BIN = "atlas-upload".freeze
2014-10-29 03:54:16 +00:00
def push
uploader = self.uploader_path
# If we didn't find the uploader binary it is a critical error
raise Errors::UploaderNotFound if !uploader
# We found it. Build up the command and the args.
execute(uploader)
return 0
end
# Executes the uploader with the proper flags based on the configuration.
# This function shouldn't return since it will exec, but might return
# if we're on a system that doesn't support exec, so handle that properly.
def execute(uploader)
cmd = []
2014-11-11 23:58:02 +00:00
cmd << "-vcs" if config.vcs
cmd += config.includes.map { |v| ["-include", v] }
cmd += config.excludes.map { |v| ["-exclude", v] }
cmd += ["-address", config.address] if config.address
2014-12-09 00:54:19 +00:00
cmd += ["-token", config.token] if config.token
2014-11-11 23:58:02 +00:00
cmd << config.app
cmd << File.expand_path(config.dir, env.root_path)
Vagrant::Util::SafeExec.exec(uploader, *cmd.flatten)
end
# This returns the path to the uploader binary, or nil if it can't
# be found.
#
# @return [String]
def uploader_path
# Determine the uploader path
2014-11-11 23:58:02 +00:00
uploader = config.uploader_path
if uploader
return uploader
end
if Vagrant.in_installer?
path = File.join(
Vagrant.installer_embedded_dir, "bin", UPLOADER_BIN)
return path if File.file?(path)
end
return Vagrant::Util::Which.which(UPLOADER_BIN)
2014-10-29 03:54:16 +00:00
end
end
end
end