shopify-cli 2.6.2 → 2.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/PULL_REQUEST_TEMPLATE.md +15 -4
- data/.github/workflows/shopify.yml +3 -6
- data/CHANGELOG.md +89 -99
- data/CONTRIBUTING.md +9 -1
- data/Dockerfile +22 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +7 -3
- data/RELEASING.md +17 -30
- data/Rakefile +0 -5
- data/lib/project_types/extension/cli.rb +1 -0
- data/lib/project_types/extension/commands/create.rb +1 -0
- data/lib/project_types/extension/features/argo.rb +9 -10
- data/lib/project_types/extension/features/argo_serve.rb +1 -1
- data/lib/project_types/extension/forms/create.rb +1 -1
- data/lib/project_types/extension/forms/questions/ask_template.rb +2 -1
- data/lib/project_types/extension/messages/messages.rb +1 -0
- data/lib/project_types/extension/models/server_config/extension.rb +2 -0
- data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +1 -1
- data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
- data/lib/project_types/extension/tasks/converters/server_config_converter.rb +4 -5
- data/lib/project_types/extension/tasks/find_package_from_json.rb +37 -0
- data/lib/project_types/extension/tasks/load_server_config.rb +6 -1
- data/lib/project_types/node/commands/serve.rb +7 -16
- data/lib/project_types/node/messages/messages.rb +0 -5
- data/lib/project_types/php/commands/serve.rb +6 -9
- data/lib/project_types/php/messages/messages.rb +1 -4
- data/lib/project_types/rails/commands/create.rb +45 -16
- data/lib/project_types/rails/commands/serve.rb +7 -8
- data/lib/project_types/rails/forms/create.rb +0 -1
- data/lib/project_types/rails/messages/messages.rb +1 -4
- data/lib/project_types/script/commands/create.rb +4 -5
- data/lib/project_types/script/config/extension_points.yml +10 -0
- data/lib/project_types/script/errors.rb +0 -18
- data/lib/project_types/script/graphql/app_script_set.graphql +2 -0
- data/lib/project_types/script/layers/application/build_script.rb +2 -1
- data/lib/project_types/script/layers/application/create_script.rb +2 -2
- data/lib/project_types/script/layers/application/push_script.rb +15 -1
- data/lib/project_types/script/layers/domain/push_package.rb +5 -2
- data/lib/project_types/script/layers/domain/script_json.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +0 -4
- data/lib/project_types/script/layers/infrastructure/errors.rb +17 -2
- data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +29 -13
- data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +29 -13
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +4 -2
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +3 -4
- data/lib/project_types/script/layers/infrastructure/script_service.rb +7 -2
- data/lib/project_types/script/messages/messages.rb +9 -22
- data/lib/project_types/script/ui/error_handler.rb +16 -26
- data/lib/project_types/theme/commands/serve.rb +2 -0
- data/lib/project_types/theme/messages/messages.rb +6 -0
- data/lib/shopify_cli/app_type_detector.rb +32 -0
- data/lib/shopify_cli/command.rb +6 -1
- data/lib/shopify_cli/command_options/command_serve_options.rb +43 -0
- data/lib/shopify_cli/command_options.rb +7 -0
- data/lib/shopify_cli/commands/login.rb +3 -3
- data/lib/shopify_cli/commands/reporting.rb +38 -0
- data/lib/shopify_cli/commands/switch.rb +1 -1
- data/lib/shopify_cli/commands.rb +1 -0
- data/lib/shopify_cli/constants.rb +7 -3
- data/lib/shopify_cli/core/monorail.rb +9 -20
- data/lib/shopify_cli/environment.rb +15 -1
- data/lib/shopify_cli/exception_reporter.rb +29 -15
- data/lib/shopify_cli/messages/messages.rb +48 -19
- data/lib/shopify_cli/migrator/migration.rb +1 -1
- data/lib/shopify_cli/migrator/migrations/1631709766_noop.rb +1 -1
- data/lib/shopify_cli/migrator/migrations/1633691650_merge_reporting_configuration.rb +41 -0
- data/lib/shopify_cli/migrator.rb +9 -11
- data/lib/shopify_cli/reporting_configuration_controller.rb +64 -0
- data/lib/shopify_cli/services/base_service.rb +13 -0
- data/lib/shopify_cli/services/reporting_service.rb +16 -0
- data/lib/shopify_cli/services.rb +6 -0
- data/lib/shopify_cli/theme/dev_server/watcher.rb +2 -2
- data/lib/shopify_cli/theme/dev_server.rb +3 -2
- data/lib/shopify_cli/version.rb +1 -1
- data/lib/shopify_cli.rb +4 -0
- data/shopify-cli.gemspec +2 -13
- data/utilities/docker/container.rb +97 -0
- data/utilities/docker.rb +45 -3
- metadata +18 -10
- data/ext/shopify-cli/extconf.rb +0 -60
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -0
- data/lib/shopify_cli/exception_reporter/permission_controller.rb +0 -54
    
        data/utilities/docker.rb
    CHANGED
    
    | @@ -1,10 +1,43 @@ | |
| 1 1 | 
             
            require "open3"
         | 
| 2 | 
            +
            require "securerandom"
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Utilities
         | 
| 4 5 | 
             
              module Docker
         | 
| 6 | 
            +
                autoload :Container, "docker/container"
         | 
| 7 | 
            +
             | 
| 5 8 | 
             
                Error = Class.new(StandardError)
         | 
| 6 9 |  | 
| 7 10 | 
             
                class << self
         | 
| 11 | 
            +
                  def create_container(env: {})
         | 
| 12 | 
            +
                    id = SecureRandom.hex
         | 
| 13 | 
            +
                    cwd = "/tmp/#{SecureRandom.hex}"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    build_image_if_needed
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    _, stderr, stat = Open3.capture3(
         | 
| 18 | 
            +
                      "docker", "run",
         | 
| 19 | 
            +
                      "-t", "-d",
         | 
| 20 | 
            +
                      "--name", id,
         | 
| 21 | 
            +
                      "--volume", "#{Shellwords.escape(root_dir)}:/usr/src/app",
         | 
| 22 | 
            +
                      image_tag,
         | 
| 23 | 
            +
                      "tail", "-f", "/dev/null"
         | 
| 24 | 
            +
                    )
         | 
| 25 | 
            +
                    raise Error, stderr unless stat.success?
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    _, stderr, stat = Open3.capture3(
         | 
| 28 | 
            +
                      "docker", "exec",
         | 
| 29 | 
            +
                      id,
         | 
| 30 | 
            +
                      "mkdir", "-p", cwd
         | 
| 31 | 
            +
                    )
         | 
| 32 | 
            +
                    raise Error, stderr unless stat.success?
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    Container.new(
         | 
| 35 | 
            +
                      id: id,
         | 
| 36 | 
            +
                      cwd: cwd,
         | 
| 37 | 
            +
                      env: env
         | 
| 38 | 
            +
                    )
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 8 41 | 
             
                  def run_and_rm_container(*args)
         | 
| 9 42 | 
             
                    build_image_if_needed
         | 
| 10 43 | 
             
                    system(
         | 
| @@ -24,18 +57,27 @@ module Utilities | |
| 24 57 |  | 
| 25 58 | 
             
                  def build_image_if_needed
         | 
| 26 59 | 
             
                    unless image_exists?(image_tag)
         | 
| 27 | 
            -
                       | 
| 60 | 
            +
                      puts "Rebuilding the Docker image..."
         | 
| 61 | 
            +
                      _, err, stat = Open3.capture3(
         | 
| 62 | 
            +
                        "docker", "build", root_dir, "-t", image_tag
         | 
| 63 | 
            +
                      )
         | 
| 64 | 
            +
                      raise Error, err unless stat.success?
         | 
| 28 65 | 
             
                    end
         | 
| 29 66 | 
             
                  end
         | 
| 30 67 |  | 
| 31 68 | 
             
                  def image_tag
         | 
| 32 69 | 
             
                    gemfile_lock_path = File.expand_path("./Gemfile.lock", root_dir)
         | 
| 33 | 
            -
                     | 
| 70 | 
            +
                    dockerfile_path = File.expand_path("./Dockerfile", root_dir)
         | 
| 71 | 
            +
                    fingerprintable_strings = [
         | 
| 72 | 
            +
                      File.read(gemfile_lock_path),
         | 
| 73 | 
            +
                      File.read(dockerfile_path),
         | 
| 74 | 
            +
                    ]
         | 
| 75 | 
            +
                    image_sha = Digest::SHA256.hexdigest(fingerprintable_strings.join("-"))
         | 
| 34 76 | 
             
                    "shopify-cli-#{image_sha}"
         | 
| 35 77 | 
             
                  end
         | 
| 36 78 |  | 
| 37 79 | 
             
                  def image_exists?(tag)
         | 
| 38 | 
            -
                    _, stat = Open3. | 
| 80 | 
            +
                    _, stat = Open3.capture2e(
         | 
| 39 81 | 
             
                      "docker", "inspect",
         | 
| 40 82 | 
             
                      "--type=image",
         | 
| 41 83 | 
             
                      tag
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: shopify-cli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.6. | 
| 4 | 
            +
              version: 2.6.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Shopify
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-11-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -92,14 +92,14 @@ dependencies: | |
| 92 92 | 
             
                requirements:
         | 
| 93 93 | 
             
                - - "~>"
         | 
| 94 94 | 
             
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            -
                    version:  | 
| 95 | 
            +
                    version: 1.7.2
         | 
| 96 96 | 
             
              type: :runtime
         | 
| 97 97 | 
             
              prerelease: false
         | 
| 98 98 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 99 99 | 
             
                requirements:
         | 
| 100 100 | 
             
                - - "~>"
         | 
| 101 101 | 
             
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            -
                    version:  | 
| 102 | 
            +
                    version: 1.7.2
         | 
| 103 103 | 
             
            description: |
         | 
| 104 104 | 
             
              Shopify CLI helps you build Shopify apps faster. It quickly scaffolds Node.js
         | 
| 105 105 | 
             
              and Ruby on Rails embedded apps. It also automates many common tasks in the
         | 
| @@ -107,9 +107,9 @@ description: | | |
| 107 107 | 
             
              and webhooks.
         | 
| 108 108 | 
             
            email:
         | 
| 109 109 | 
             
            - dev-tools-education@shopify.com
         | 
| 110 | 
            -
            executables: | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 110 | 
            +
            executables:
         | 
| 111 | 
            +
            - shopify
         | 
| 112 | 
            +
            extensions: []
         | 
| 113 113 | 
             
            extra_rdoc_files: []
         | 
| 114 114 | 
             
            files:
         | 
| 115 115 | 
             
            - ".github/CODEOWNERS"
         | 
| @@ -155,7 +155,6 @@ files: | |
| 155 155 | 
             
            - docs/getting-started/upgrade/index.md
         | 
| 156 156 | 
             
            - docs/help/start-app/index.md
         | 
| 157 157 | 
             
            - docs/index.md
         | 
| 158 | 
            -
            - ext/shopify-cli/extconf.rb
         | 
| 159 158 | 
             
            - ext/shopify-extensions/extconf.rb
         | 
| 160 159 | 
             
            - ext/shopify-extensions/shopify_extensions.rb
         | 
| 161 160 | 
             
            - ext/shopify-extensions/version
         | 
| @@ -250,6 +249,7 @@ files: | |
| 250 249 | 
             
            - lib/project_types/extension/tasks/create_extension.rb
         | 
| 251 250 | 
             
            - lib/project_types/extension/tasks/fetch_specifications.rb
         | 
| 252 251 | 
             
            - lib/project_types/extension/tasks/find_npm_packages.rb
         | 
| 252 | 
            +
            - lib/project_types/extension/tasks/find_package_from_json.rb
         | 
| 253 253 | 
             
            - lib/project_types/extension/tasks/get_app.rb
         | 
| 254 254 | 
             
            - lib/project_types/extension/tasks/get_apps.rb
         | 
| 255 255 | 
             
            - lib/project_types/extension/tasks/get_extensions.rb
         | 
| @@ -300,7 +300,6 @@ files: | |
| 300 300 | 
             
            - lib/project_types/script/errors.rb
         | 
| 301 301 | 
             
            - lib/project_types/script/forms/create.rb
         | 
| 302 302 | 
             
            - lib/project_types/script/graphql/app_script_set.graphql
         | 
| 303 | 
            -
            - lib/project_types/script/graphql/app_script_update_or_create.graphql
         | 
| 304 303 | 
             
            - lib/project_types/script/graphql/get_app_scripts.graphql
         | 
| 305 304 | 
             
            - lib/project_types/script/graphql/module_upload_url_generate.graphql
         | 
| 306 305 | 
             
            - lib/project_types/script/graphql/script_service_proxy.graphql
         | 
| @@ -356,8 +355,11 @@ files: | |
| 356 355 | 
             
            - lib/shopify_cli/admin_api/populate_resource_command.rb
         | 
| 357 356 | 
             
            - lib/shopify_cli/admin_api/schema.rb
         | 
| 358 357 | 
             
            - lib/shopify_cli/api.rb
         | 
| 358 | 
            +
            - lib/shopify_cli/app_type_detector.rb
         | 
| 359 359 | 
             
            - lib/shopify_cli/command.rb
         | 
| 360 360 | 
             
            - lib/shopify_cli/command/app_sub_command.rb
         | 
| 361 | 
            +
            - lib/shopify_cli/command_options.rb
         | 
| 362 | 
            +
            - lib/shopify_cli/command_options/command_serve_options.rb
         | 
| 361 363 | 
             
            - lib/shopify_cli/commands.rb
         | 
| 362 364 | 
             
            - lib/shopify_cli/commands/config.rb
         | 
| 363 365 | 
             
            - lib/shopify_cli/commands/help.rb
         | 
| @@ -367,6 +369,7 @@ files: | |
| 367 369 | 
             
            - lib/shopify_cli/commands/populate/customer.rb
         | 
| 368 370 | 
             
            - lib/shopify_cli/commands/populate/draft_order.rb
         | 
| 369 371 | 
             
            - lib/shopify_cli/commands/populate/product.rb
         | 
| 372 | 
            +
            - lib/shopify_cli/commands/reporting.rb
         | 
| 370 373 | 
             
            - lib/shopify_cli/commands/store.rb
         | 
| 371 374 | 
             
            - lib/shopify_cli/commands/switch.rb
         | 
| 372 375 | 
             
            - lib/shopify_cli/commands/system.rb
         | 
| @@ -384,7 +387,6 @@ files: | |
| 384 387 | 
             
            - lib/shopify_cli/db.rb
         | 
| 385 388 | 
             
            - lib/shopify_cli/environment.rb
         | 
| 386 389 | 
             
            - lib/shopify_cli/exception_reporter.rb
         | 
| 387 | 
            -
            - lib/shopify_cli/exception_reporter/permission_controller.rb
         | 
| 388 390 | 
             
            - lib/shopify_cli/feature.rb
         | 
| 389 391 | 
             
            - lib/shopify_cli/form.rb
         | 
| 390 392 | 
             
            - lib/shopify_cli/git.rb
         | 
| @@ -402,6 +404,7 @@ files: | |
| 402 404 | 
             
            - lib/shopify_cli/migrator.rb
         | 
| 403 405 | 
             
            - lib/shopify_cli/migrator/migration.rb
         | 
| 404 406 | 
             
            - lib/shopify_cli/migrator/migrations/1631709766_noop.rb
         | 
| 407 | 
            +
            - lib/shopify_cli/migrator/migrations/1633691650_merge_reporting_configuration.rb
         | 
| 405 408 | 
             
            - lib/shopify_cli/options.rb
         | 
| 406 409 | 
             
            - lib/shopify_cli/packager.rb
         | 
| 407 410 | 
             
            - lib/shopify_cli/partners_api.rb
         | 
| @@ -411,10 +414,14 @@ files: | |
| 411 414 | 
             
            - lib/shopify_cli/project.rb
         | 
| 412 415 | 
             
            - lib/shopify_cli/project_commands.rb
         | 
| 413 416 | 
             
            - lib/shopify_cli/project_type.rb
         | 
| 417 | 
            +
            - lib/shopify_cli/reporting_configuration_controller.rb
         | 
| 414 418 | 
             
            - lib/shopify_cli/resolve_constant.rb
         | 
| 415 419 | 
             
            - lib/shopify_cli/resources.rb
         | 
| 416 420 | 
             
            - lib/shopify_cli/resources/env_file.rb
         | 
| 417 421 | 
             
            - lib/shopify_cli/result.rb
         | 
| 422 | 
            +
            - lib/shopify_cli/services.rb
         | 
| 423 | 
            +
            - lib/shopify_cli/services/base_service.rb
         | 
| 424 | 
            +
            - lib/shopify_cli/services/reporting_service.rb
         | 
| 418 425 | 
             
            - lib/shopify_cli/shopifolk.rb
         | 
| 419 426 | 
             
            - lib/shopify_cli/sub_command.rb
         | 
| 420 427 | 
             
            - lib/shopify_cli/task.rb
         | 
| @@ -451,6 +458,7 @@ files: | |
| 451 458 | 
             
            - shopify.fish
         | 
| 452 459 | 
             
            - shopify.sh
         | 
| 453 460 | 
             
            - utilities/docker.rb
         | 
| 461 | 
            +
            - utilities/docker/container.rb
         | 
| 454 462 | 
             
            - utilities/utilities.rb
         | 
| 455 463 | 
             
            - vendor/deps/cli-kit/REVISION
         | 
| 456 464 | 
             
            - vendor/deps/cli-kit/lib/cli/kit.rb
         | 
    
        data/ext/shopify-cli/extconf.rb
    DELETED
    
    | @@ -1,60 +0,0 @@ | |
| 1 | 
            -
            require "rbconfig"
         | 
| 2 | 
            -
            require "fileutils"
         | 
| 3 | 
            -
            require "date"
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            gem = File.expand_path("../../../", __FILE__)
         | 
| 6 | 
            -
            exe = File.join(gem, "bin", "shopify")
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            # `--skip-cli-build` will be passed from the brew `shopify-cli.rb` formula, so
         | 
| 9 | 
            -
            # as to prevent this extension builder doing the script and sym-link creation;
         | 
| 10 | 
            -
            # the brew install process takes care of these itself - see
         | 
| 11 | 
            -
            # https://github.com/Shopify/homebrew-shopify/shopify-cli.rb
         | 
| 12 | 
            -
            if ARGV && ARGV[0]&.match(/skip-cli-build/)
         | 
| 13 | 
            -
              makefile_content = <<~MAKEFILE
         | 
| 14 | 
            -
                .PHONY: clean
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                clean: ;
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                install: ;
         | 
| 19 | 
            -
              MAKEFILE
         | 
| 20 | 
            -
            elsif RUBY_PLATFORM.match(/mswin|mingw|cygwin/)
         | 
| 21 | 
            -
              bat_path = File.dirname(RbConfig.ruby)
         | 
| 22 | 
            -
              bat = "#{bat_path}\\shopify.bat"
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              script_content = "#{RbConfig.ruby} -I '#{gem}' '#{exe}' %*"
         | 
| 25 | 
            -
             | 
| 26 | 
            -
              FileUtils.mkdir_p(bat_path)
         | 
| 27 | 
            -
              makefile_content = <<~MAKEFILE
         | 
| 28 | 
            -
                .PHONY: clean install
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                clean:
         | 
| 31 | 
            -
                \t rm -f "#{bat}"
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                install: clean
         | 
| 34 | 
            -
                \t echo "@ECHO OFF"> "#{bat}"
         | 
| 35 | 
            -
                \t echo "#{script_content}">> "#{bat}"
         | 
| 36 | 
            -
              MAKEFILE
         | 
| 37 | 
            -
            else
         | 
| 38 | 
            -
              script = exe + ".sh"
         | 
| 39 | 
            -
              symlink = "/usr/local/bin/shopify"
         | 
| 40 | 
            -
             | 
| 41 | 
            -
              script_content = <<~SCRIPT
         | 
| 42 | 
            -
                #!/usr/bin/env bash
         | 
| 43 | 
            -
                #{RbConfig.ruby} -I #{gem} #{exe} $@
         | 
| 44 | 
            -
              SCRIPT
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              File.write(script, script_content)
         | 
| 47 | 
            -
              FileUtils.chmod("+x", script)
         | 
| 48 | 
            -
             | 
| 49 | 
            -
              makefile_content = <<~MAKEFILE
         | 
| 50 | 
            -
                .PHONY: clean install
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                clean:
         | 
| 53 | 
            -
                \t@sudo rm -f #{symlink}
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                install: clean
         | 
| 56 | 
            -
                \t@sudo ln -s #{script} #{symlink}
         | 
| 57 | 
            -
              MAKEFILE
         | 
| 58 | 
            -
            end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            File.write("Makefile", makefile_content)
         | 
| 
            File without changes
         | 
| @@ -1,54 +0,0 @@ | |
| 1 | 
            -
            module ShopifyCLI
         | 
| 2 | 
            -
              module ExceptionReporter
         | 
| 3 | 
            -
                module PermissionController
         | 
| 4 | 
            -
                  def self.report_error?(context: ShopifyCLI::Context.new)
         | 
| 5 | 
            -
                    CLI::UI::Prompt.ask(context.message("core.error_reporting.report_error.question")) do |handler|
         | 
| 6 | 
            -
                      handler.option(context.message("core.error_reporting.report_error.yes")) { |_| true }
         | 
| 7 | 
            -
                      handler.option(context.message("core.error_reporting.report_error.no")) { |_| false }
         | 
| 8 | 
            -
                    end
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def self.automatic_reporting_prompted?
         | 
| 12 | 
            -
                    ShopifyCLI::Config.get_section(Constants::Config::Sections::ErrorTracking::NAME).key?(
         | 
| 13 | 
            -
                      Constants::Config::Sections::ErrorTracking::Fields::AUTOMATIC_REPORTING
         | 
| 14 | 
            -
                    )
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  def self.can_report_automatically?(context: ShopifyCLI::Context.new)
         | 
| 18 | 
            -
                    # If the terminal is not interactive we can't prompt the user.
         | 
| 19 | 
            -
                    return false unless ShopifyCLI::Environment.interactive?
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                    if automatic_reporting_prompted?
         | 
| 22 | 
            -
                      automatic_reporting_enabled?
         | 
| 23 | 
            -
                    else
         | 
| 24 | 
            -
                      prompt_user(context: context)
         | 
| 25 | 
            -
                    end
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  def self.prompt_user(context:)
         | 
| 29 | 
            -
                    enable_automatic_tracking = CLI::UI::Prompt.ask(
         | 
| 30 | 
            -
                      context.message("core.error_reporting.enable_automatic_reporting_prompt.question")
         | 
| 31 | 
            -
                    ) do |handler|
         | 
| 32 | 
            -
                      handler.option(context.message("core.error_reporting.enable_automatic_reporting_prompt.yes")) { |_| true }
         | 
| 33 | 
            -
                      handler.option(context.message("core.error_reporting.enable_automatic_reporting_prompt.no")) { |_| false }
         | 
| 34 | 
            -
                    end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                    ShopifyCLI::Config.set(
         | 
| 37 | 
            -
                      Constants::Config::Sections::ErrorTracking::NAME,
         | 
| 38 | 
            -
                      Constants::Config::Sections::ErrorTracking::Fields::AUTOMATIC_REPORTING,
         | 
| 39 | 
            -
                      enable_automatic_tracking
         | 
| 40 | 
            -
                    )
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                    enable_automatic_tracking
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                  def self.automatic_reporting_enabled?
         | 
| 46 | 
            -
                    ShopifyCLI::Config.get_bool(
         | 
| 47 | 
            -
                      Constants::Config::Sections::ErrorTracking::NAME,
         | 
| 48 | 
            -
                      Constants::Config::Sections::ErrorTracking::Fields::AUTOMATIC_REPORTING,
         | 
| 49 | 
            -
                      default: false
         | 
| 50 | 
            -
                    )
         | 
| 51 | 
            -
                  end
         | 
| 52 | 
            -
                end
         | 
| 53 | 
            -
              end
         | 
| 54 | 
            -
            end
         |