Sha256: 8224031003ce70fb933e476b7f079d152fb0451ce464fb3b263bcd114f722d24

Contents?: true

Size: 1.1 KB

Versions: 50

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true
require "json"

module Extension
  module Tasks
    class FindPackageFromJson < ShopifyCLI::Task
      include SmartProperties

      property! :context, accepts: ShopifyCLI::Context

      def self.call(package_name, **config)
        new(**config).call(package_name)
      end

      def call(package_name)
        ShopifyCLI::Result.success(resolve_package_json(package_name))
          .then { |file| File.read(file) }
          .then { |file| JSON.parse(file) }
          .then { |file| file.dig("version") }
          .then { |version| return Models::NpmPackage.new(name: package_name, version: version) }
          .unwrap do |error|
            context.debug(error)
            context.abort(context.message("errors.module_not_found", package_name))
          end
      end

      private

      def resolve_package_json(package_name)
        path = "path.join(require.resolve('#{package_name}'), '../package.json')"
        package_json, error, _ = CLI::Kit::System.capture3("node", "-p", path)
        return error unless !error.nil?
        package_json.chomp
      end
    end
  end
end

Version data entries

50 entries across 50 versions & 1 rubygems

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