Interpret the current branch to push to Heroku
This commit is contained in:
parent
1f49b7ef62
commit
b9e8f6e892
|
@ -10,6 +10,9 @@ module VagrantPlugins
|
||||||
# Expand any paths relative to the root
|
# Expand any paths relative to the root
|
||||||
dir = File.expand_path(config.dir, env.root_path)
|
dir = File.expand_path(config.dir, env.root_path)
|
||||||
|
|
||||||
|
# Get the current branch
|
||||||
|
branch = git_branch(dir)
|
||||||
|
|
||||||
# Verify git is installed
|
# Verify git is installed
|
||||||
verify_git_bin!(config.git_bin)
|
verify_git_bin!(config.git_bin)
|
||||||
|
|
||||||
|
@ -22,7 +25,7 @@ module VagrantPlugins
|
||||||
end
|
end
|
||||||
|
|
||||||
# Push to Heroku
|
# Push to Heroku
|
||||||
git_push_heroku(config.remote, config.branch, dir)
|
git_push_heroku(config.remote, branch, dir)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Verify that git is installed.
|
# Verify that git is installed.
|
||||||
|
@ -49,6 +52,20 @@ module VagrantPlugins
|
||||||
"#{path}/.git"
|
"#{path}/.git"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# The name of the current git branch.
|
||||||
|
# @param [String] path
|
||||||
|
# @return [String]
|
||||||
|
def git_branch(path)
|
||||||
|
result = execute!("git",
|
||||||
|
"--git-dir", git_dir(path),
|
||||||
|
"--work-tree", path,
|
||||||
|
"branch",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Returns something like "* master"
|
||||||
|
result.stdout.sub("*", "").strip
|
||||||
|
end
|
||||||
|
|
||||||
# Push to the Heroku remote.
|
# Push to the Heroku remote.
|
||||||
# @param [String] remote
|
# @param [String] remote
|
||||||
# @param [String] branch
|
# @param [String] branch
|
||||||
|
@ -56,7 +73,7 @@ module VagrantPlugins
|
||||||
execute!("git",
|
execute!("git",
|
||||||
"--git-dir", git_dir(path),
|
"--git-dir", git_dir(path),
|
||||||
"--work-tree", path,
|
"--work-tree", path,
|
||||||
"push", remote, branch,
|
"push", remote, "#{branch}:master",
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -17,17 +17,20 @@ describe VagrantPlugins::HerokuPush::Push do
|
||||||
dir: "lib",
|
dir: "lib",
|
||||||
git_bin: "git",
|
git_bin: "git",
|
||||||
remote: "heroku",
|
remote: "heroku",
|
||||||
branch: "master",
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(env, config) }
|
subject { described_class.new(env, config) }
|
||||||
|
|
||||||
describe "#push" do
|
describe "#push" do
|
||||||
|
let(:branch) { "master" }
|
||||||
|
|
||||||
let(:root_path) { "/handy/dandy" }
|
let(:root_path) { "/handy/dandy" }
|
||||||
let(:dir) { "#{root_path}/#{config.dir}" }
|
let(:dir) { "#{root_path}/#{config.dir}" }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
allow(subject).to receive(:git_branch)
|
||||||
|
.and_return(branch)
|
||||||
allow(subject).to receive(:verify_git_bin!)
|
allow(subject).to receive(:verify_git_bin!)
|
||||||
allow(subject).to receive(:verify_git_repo!)
|
allow(subject).to receive(:verify_git_repo!)
|
||||||
allow(subject).to receive(:has_git_remote?)
|
allow(subject).to receive(:has_git_remote?)
|
||||||
|
@ -78,7 +81,7 @@ describe VagrantPlugins::HerokuPush::Push do
|
||||||
|
|
||||||
it "pushes to heroku" do
|
it "pushes to heroku" do
|
||||||
expect(subject).to receive(:git_push_heroku)
|
expect(subject).to receive(:git_push_heroku)
|
||||||
.with(config.remote, config.branch, dir)
|
.with(config.remote, branch, dir)
|
||||||
subject.push
|
subject.push
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -157,7 +160,7 @@ describe VagrantPlugins::HerokuPush::Push do
|
||||||
.with("git",
|
.with("git",
|
||||||
"--git-dir", "#{dir}/.git",
|
"--git-dir", "#{dir}/.git",
|
||||||
"--work-tree", dir,
|
"--work-tree", dir,
|
||||||
"push", "bacon", "hamlet",
|
"push", "bacon", "hamlet:master",
|
||||||
)
|
)
|
||||||
subject.git_push_heroku("bacon", "hamlet", dir)
|
subject.git_push_heroku("bacon", "hamlet", dir)
|
||||||
end
|
end
|
||||||
|
@ -232,6 +235,42 @@ describe VagrantPlugins::HerokuPush::Push do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#git_branch" do
|
||||||
|
let(:stdout) { "" }
|
||||||
|
let(:process) { double("process", stdout: stdout) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
allow(subject).to receive(:execute!)
|
||||||
|
.and_return(process)
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:branch) { subject.git_branch("/path") }
|
||||||
|
|
||||||
|
context "when the branch is prefixed with a star" do
|
||||||
|
let(:stdout) { "*bacon" }
|
||||||
|
|
||||||
|
it "returns the correct name" do
|
||||||
|
expect(branch).to eq("bacon")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the branch is prefixed with a star space" do
|
||||||
|
let(:stdout) { "* bacon" }
|
||||||
|
|
||||||
|
it "returns the correct name" do
|
||||||
|
expect(branch).to eq("bacon")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the branch is not prefixed" do
|
||||||
|
let(:stdout) { "bacon" }
|
||||||
|
|
||||||
|
it "returns the correct name" do
|
||||||
|
expect(branch).to eq("bacon")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#execute!" do
|
describe "#execute!" do
|
||||||
let(:exit_code) { 0 }
|
let(:exit_code) { 0 }
|
||||||
let(:stdout) { "This is the output" }
|
let(:stdout) { "This is the output" }
|
||||||
|
|
Loading…
Reference in New Issue