Sha256: 393acd9d835ec25b7a10bc09de6604940e83501d4f626b69bd48249318e7c519

Contents?: true

Size: 1.26 KB

Versions: 77

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true
require "shopify_cli"

module Extension
  module Tasks
    module UserErrors
      USER_ERRORS_FIELD = "userErrors"
      MESSAGE_FIELD = "message"
      USER_ERRORS_PARSE_ERROR = "Unable to parse errors from server."

      def abort_if_user_errors(context, response)
        return if response.nil?

        user_errors = response.dig(USER_ERRORS_FIELD)
        output_all_user_errors(context, user_errors)
      end

      private

      def output_all_user_errors(context, user_errors)
        return if user_errors.nil? || user_errors.empty?
        last_user_error = user_errors.pop

        user_errors.each { |user_error| puts_user_error(context, user_error) }
        abort_user_error(context, last_user_error)
      end

      def puts_user_error(context, user_error)
        output_user_error(context, user_error) { |message| context.puts("{{x}} #{message}") }
      end

      def abort_user_error(context, user_error)
        output_user_error(context, user_error) { |message| context.abort(message) }
      end

      def output_user_error(context, user_error)
        if user_error.key?(MESSAGE_FIELD)
          yield(user_error[MESSAGE_FIELD])
        else
          context.abort(USER_ERRORS_PARSE_ERROR)
        end
      end
    end
  end
end

Version data entries

77 entries across 77 versions & 1 rubygems

Version Path
shopify-cli-2.36.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.35.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.34.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.33.1 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.33.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.32.1 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.32.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.31.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.30.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.29.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.28.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.27.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.26.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.25.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.24.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.23.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.22.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.21.0 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.20.1 lib/project_types/extension/tasks/user_errors.rb
shopify-cli-2.20.0 lib/project_types/extension/tasks/user_errors.rb