Sha256: 0a2d8cd9dfa71eff50fb887d77fff8b752ee6806696a5b1bcc1f695c791d10bf

Contents?: true

Size: 1.69 KB

Versions: 4

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true
module Node
  class Command
    class Serve < ShopifyCLI::SubCommand
      prerequisite_task ensure_project_type: :node
      prerequisite_task :ensure_env, :ensure_dev_store

      options do |parser, flags|
        parser.on("--host=HOST") do |h|
          flags[:host] = h.gsub('"', "")
        end
        parser.on("--port=PORT") { |port| flags[:port] = port }
      end

      def call(*)
        project = ShopifyCLI::Project.current
        url = options.flags[:host] || ShopifyCLI::Tunnel.start(@ctx)
        @ctx.abort(@ctx.message("node.serve.error.host_must_be_https")) if url.match(/^https/i).nil?
        project.env.update(@ctx, :host, url)
        ShopifyCLI::Tasks::UpdateDashboardURLS.call(
          @ctx,
          url: url,
          callback_url: "/auth/callback",
        )

        if project.env.shop
          project_url = "#{project.env.host}/auth?shop=#{project.env.shop}"
          @ctx.puts("\n" + @ctx.message("node.serve.open_info", project_url) + "\n")
        end

        CLI::UI::Frame.open(@ctx.message("node.serve.running_server")) do
          env = project.env.to_h
          env["PORT"] = port.to_s
          @ctx.system("npm run dev", env: env)
        end
      end

      def port
        return ShopifyCLI::Tunnel::PORT.to_s unless options.flags.key?(:port)
        port = options.flags[:port].to_i
        @ctx.abort(@ctx.message("node.serve.error.invalid_port", options.flags[:port])) unless port > 0
        port
      end

      def self.help
        ShopifyCLI::Context.message("node.serve.help", ShopifyCLI::TOOL_NAME)
      end

      def self.extended_help
        ShopifyCLI::Context.message("node.serve.extended_help")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
shopify-cli-2.6.3 lib/project_types/node/commands/serve.rb
shopify-cli-2.6.2 lib/project_types/node/commands/serve.rb
shopify-cli-2.6.1 lib/project_types/node/commands/serve.rb
shopify-cli-2.6.0 lib/project_types/node/commands/serve.rb