Sha256: 201d10c8534bafa8d7c74396ee17426bc79ce7d61a1c712411a8c7c2d385ef82

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 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\""

    attr_reader :sentry, :project_name, :version_prefix

    # Wraps the "sentry-cli" shell command.
    class Executable
      def execute(arguments)
        `#{COMMAND} #{arguments}`
      end
    end

    def self.build(project_name:, version_prefix:)
      new(
        sentry: Executable.new,
        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)
      name = "#{version_prefix} #{version}"

      sentry.execute(format(RELEASE, project: project_name, version: name))
    end

    # Associate commits with the release
    def associate_commits(version)
      name = "#{version_prefix} #{version}"

      sentry.execute(format(ASSOCIATE, version: name))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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