Sha256: 579a4bcfc39eb88365e5f80fe630792cc38f8603008b85af4d05151ea8993b25

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module Groundskeeper
  # Wraps Sentry CLI executable.
  class Sentry
    COMMAND = "sentry-cli"
    # sentry-cli arguments
    RELEASE = "releases new -p %<project>s \"%<version>s\""
    ASSOCIATE = "releases set-commits --auto \"%<version>s\""
    DEPLOY = "releases deploys \"%<version>s\" new -e %<environment>s"

    attr_reader :sentry, :project_name, :version_prefix

    def self.build(project_name:, version_prefix:)
      new(
        sentry: Executable.new(COMMAND),
        project_name: project_name,
        version_prefix: version_prefix
      )
    end

    def initialize(sentry:, project_name:, version_prefix:)
      @sentry = sentry
      @project_name = project_name
      @version_prefix = version_prefix
    end

    # Notify Sentry about release
    def create_release(version)
      sentry.execute(format(RELEASE,
                            project: project_name,
                            version: version_name(version)))
    end

    # Associate commits with the release
    def associate_commits(version)
      sentry.execute(format(ASSOCIATE, version: version_name(version)))
    end

    # Announce deployment to an environment
    def deploy(version, environment)
      sentry.execute(format(DEPLOY,
                            version: version_name(version),
                            environment: environment))
    end

    def version_name(version)
      "#{version_prefix} #{version}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
groundskeeper-bitcore-0.3.3 lib/groundskeeper/sentry.rb