Sha256: 5e2c1d5f3206846589878cf36b6ef4886f7d63c15dfd5724a45f7aed97762a04

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

require "json"

module ShopifyCLI
  class AppTypeDetector
    Error = Class.new(StandardError)
    TypeNotFoundError = Class.new(Error)

    def self.detect(project_directory:)
      return :node if node?(project_directory: project_directory)
      return :rails if rails?(project_directory: project_directory)
      return :php if php?(project_directory: project_directory)
      raise TypeNotFoundError, "Couldn't detect the project type in directory: #{project_directory}"
    end

    def self.node?(project_directory:)
      package_json_path = File.join(project_directory, "package.json")
      return false unless File.exist?(package_json_path)
      package_json = JSON.parse(File.read(package_json_path))
      !package_json.dig("scripts", "dev").nil?
    end

    def self.rails?(project_directory:)
      rails_binstub_path = File.join(project_directory, "bin/rails")
      File.exist?(rails_binstub_path)
    end

    def self.php?(project_directory:)
      bootstrap_app_path = File.join(project_directory, "bootstrap/app.php")
      File.exist?(bootstrap_app_path)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shopify-cli-2.6.6 lib/shopify_cli/app_type_detector.rb
shopify-cli-2.6.5 lib/shopify_cli/app_type_detector.rb
shopify-cli-2.6.4 lib/shopify_cli/app_type_detector.rb