Sha256: a1c0ab69afc98d93109decfcc8d633e65596d43816e84038691eaffd7b99ac13

Contents?: true

Size: 1.73 KB

Versions: 4

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

module Script
  module Loaders
    module Project
      def self.load(directory:, api_key:, uuid:, api_secret:, context: ShopifyCLI::Context.new)
        env_overrides = {
          "SHOPIFY_API_KEY" => api_key,
          "SHOPIFY_API_SECRET" => api_secret,
          "UUID" => uuid,
        }.compact
        env_file_present = env_file_exists?(directory)
        env = if env_file_present
          ShopifyCLI::Resources::EnvFile.read(directory, overrides: env_overrides)
        else
          ShopifyCLI::Resources::EnvFile.from_hash(env_overrides)
        end

        project = ShopifyCLI::Project.at(directory)
        project.env = env
        project
      rescue SmartProperties::InitializationError, SmartProperties::InvalidValueError => error
        handle_error(error, context: context, env_file_present: env_file_present)
      end

      def self.handle_error(error, context:, env_file_present:)
        if env_file_present
          properties_hash = { api_key: "SHOPIFY_API_KEY", secret: "SHOPIFY_API_SECRET" }
          missing_env_variables = error.properties.map { |p| properties_hash[p.name] }.compact.join(", ")
          raise ShopifyCLI::Abort,
            context.message("script.error.missing_env_file_variables", missing_env_variables, ShopifyCLI::TOOL_NAME)
        else
          properties_hash = { api_key: "--api-key", secret: "--api-secret" }
          missing_options = error.properties.map { |p| properties_hash[p.name] }.compact.join(", ")
          raise ShopifyCLI::Abort, context.message("script.error.missing_push_options", missing_options)
        end
      end

      def self.env_file_exists?(directory)
        File.exist?(ShopifyCLI::Resources::EnvFile.path(directory))
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
shopify-cli-2.10.2 lib/project_types/script/loaders/project.rb
shopify-cli-2.10.1 lib/project_types/script/loaders/project.rb
shopify-cli-2.10.0 lib/project_types/script/loaders/project.rb
shopify-cli-2.9.0 lib/project_types/script/loaders/project.rb