module Codepipe::Dsl::Pipeline::Codebuild

Public Instance Methods

codebuild(*projects) click to toggle source
# File lib/codepipe/dsl/pipeline/codebuild.rb, line 3
def codebuild(*projects)
  default = {
    # name: '', # will be set
    action_type_id: {
      category: "Build",
      owner: "AWS",
      provider: "CodeBuild",
      version: "1",
    },
    run_order: @run_order,
    # configuration: { project_name: '' }, # will be set
    # output_artifacts: [name: "BuildArtifact#{name}"], # TODO: maybe make this configurable with a setting
    input_artifacts: [name: "SourceArtifact"],
  }

  actions = projects.map do |item|
    if item.is_a?(String)
      name = item.underscore.camelize
      project_name = adjusted_project_name(item) # add prefix and suffix
      default.deep_merge(
        name: name,
        configuration: { project_name: project_name },
      )
    else # Hash
      # With the hash, the user needs to set: name and configuration.project_name

      # Handy shorthands
      # The project name will allow this syntax
      #   codebuild(name: "action-name", project_name: "codebuild-project-names")
      project_name = item.delete(:project_name)
      if project_name
        item[:configuration] = { project_name: project_name }
      end

      item.reverse_merge(default)
    end
  end

  action(*actions)
end
codebuild_prefix(v) click to toggle source
# File lib/codepipe/dsl/pipeline/codebuild.rb, line 44
def codebuild_prefix(v)
  @codebuild_prefix = v
end
codebuild_suffix(v) click to toggle source
# File lib/codepipe/dsl/pipeline/codebuild.rb, line 48
def codebuild_suffix(v)
  @codebuild_suffix = v
end

Private Instance Methods

adjusted_project_name(name) click to toggle source
# File lib/codepipe/dsl/pipeline/codebuild.rb, line 53
def adjusted_project_name(name)
  [@codebuild_prefix, name, @codebuild_suffix].compact.join
end