Sha256: d2fc100f68a3bdde75399eca1240a06a326041bcb837576b50db0a43a05dc0c5

Contents?: true

Size: 1.6 KB

Versions: 7

Compression:

Stored size: 1.6 KB

Contents

module Codepipe::Dsl::Pipeline
  module Codebuild
    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

    def codebuild_prefix(v)
      @codebuild_prefix = v
    end

    def codebuild_suffix(v)
      @codebuild_suffix = v
    end

  private
    def adjusted_project_name(name)
      [@codebuild_prefix, name, @codebuild_suffix].compact.join
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
codepipeline-0.3.4 lib/codepipe/dsl/pipeline/codebuild.rb
codepipeline-0.3.3 lib/codepipe/dsl/pipeline/codebuild.rb
codepipeline-0.3.2 lib/codepipe/dsl/pipeline/codebuild.rb
codepipeline-0.3.1 lib/codepipe/dsl/pipeline/codebuild.rb
codepipeline-0.3.0 lib/codepipe/dsl/pipeline/codebuild.rb
codepipeline-0.2.1 lib/codepipe/dsl/pipeline/codebuild.rb
codepipeline-0.2.0 lib/codepipe/dsl/pipeline/codebuild.rb