Add Bamboo support

This commit is contained in:
chaseshak
2023-08-10 09:20:45 -05:00
parent 4789d65f19
commit 8e7b2472e2
6 changed files with 149 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
# frozen_string_literal: true
module Bamboo
class Audit
include IssueParser
def initialize(issue_content, _)
@project = parameter_from_issue("Project", issue_content)
end
def to_a
args = []
args.push(["--project", @project]) unless @project.nil?
return args unless args.empty?
end
end
end
+20
View File
@@ -0,0 +1,20 @@
# frozen_string_literal: true
module Bamboo
class DryRun
include IssueParser
def initialize(issue_content, command)
@plan_slug = parameter_from_issue("Plan Slug", issue_content)
@plan_type = command.options.fetch("plan-type", "build")
end
def to_a
args = [@plan_type]
args.push(["--plan-slug", @plan_slug]) unless @plan_slug.nil?
return args unless args.empty?
end
end
end
+22
View File
@@ -0,0 +1,22 @@
# frozen_string_literal: true
module Bamboo
class Migrate
include IssueParser
def initialize(issue_content, command)
@plan_slug = parameter_from_issue("Plan Slug", issue_content)
@plan_type = command.options.fetch("plan-type", "build")
@target_url = command.options["target-url"]
end
def to_a
args = [@plan_type]
args.push(["--plan-slug", @plan_slug]) unless @plan_slug.nil?
args.push(["--target-url", @target_url]) unless @target_url.nil?
return args unless args.empty?
end
end
end
+29
View File
@@ -0,0 +1,29 @@
# frozen_string_literal: true
RSpec.describe Bamboo::Audit do
let(:audit) { described_class.new(issue_content, nil) }
describe "#to_a" do
subject { audit.to_a }
context "when issue_content contains no args" do
let(:issue_content) do
<<~ISSUE
Project:
ISSUE
end
it { is_expected.to be_nil }
end
context "when issue_content contains a project" do
let(:issue_content) do
<<~ISSUE
Project: Demo
ISSUE
end
it { is_expected.to eq([["--project", "Demo"]]) }
end
end
end
+27
View File
@@ -0,0 +1,27 @@
# frozen_string_literal: true
RSpec.describe Bamboo::DryRun do
let(:dry_run) { described_class.new(issue_content, command) }
let(:command) { Command.new(comment_body) }
describe "#to_a" do
subject { dry_run.to_a }
let(:issue_content) do
<<~ISSUE
Plan Slug: PAN-PLAN
ISSUE
end
context "when the comment body does not contain a plan type" do
let(:comment_body) { "/dry-run" }
it { is_expected.to eq(["build", ["--plan-slug", "PAN-PLAN"]]) }
end
context "when the comment body contains a plan type" do
let(:comment_body) { "/dry-run --plan-type deployment" }
it { is_expected.to eq(["deployment", ["--plan-slug", "PAN-PLAN"]]) }
end
end
end
+33
View File
@@ -0,0 +1,33 @@
# frozen_string_literal: true
RSpec.describe Bamboo::Migrate do
let(:dry_run) { described_class.new(issue_content, command) }
let(:command) { Command.new(comment_body) }
describe "#to_a" do
subject { dry_run.to_a }
let(:issue_content) do
<<~ISSUE
Plan Slug: PAN-PLAN
ISSUE
end
context "when the comment body does not contain a pipeline type" do
let(:comment_body) { "/migrate" }
it { is_expected.to eq(["build", ["--plan-slug", "PAN-PLAN"]]) }
end
context "when the comment body contains a plan type" do
let(:comment_body) { "/dry-run --plan-type deployment" }
it { is_expected.to eq(["deployment", ["--plan-slug", "PAN-PLAN"]]) }
end
context "with a target-url" do
let(:comment_body) { "/migrate --target-url https://github.com/valet" }
it { is_expected.to eq(["build", ["--plan-slug", "PAN-PLAN"], ["--target-url", "https://github.com/valet"]]) }
end
end
end