Module: ShopifyCLI::Messages

Defined in:
lib/shopify_cli/messages/messages.rb

Constant Summary collapse

MESSAGES =
{
  apps: {
    create: {
      info: {
        created: "{{v}} {{green:%s}} was created in the organization's Partner Dashboard {{underline:%s}}",
        serve: "{{*}} Change directories to your new project folder {{green:%s}} and run "\
        "{{command:%s app serve}} to start a local server",
        install: "{{*}} Then, visit {{underline:%s/test}} to install {{green:%s}} on your Dev Store",
      },
    },
  },
  core: {
    errors: {
      missing_node: "Node.js is required to continue. Install Node.js here: https://nodejs.org/en/download.",
      missing_npm: "npm is required to continue. Install npm here: https://www.npmjs.com/get-npm.",
      missing_ruby: "Ruby is required to continue. Install Ruby here: https://www.ruby-lang.org/en/downloads.",
      bundle_info_failure: "Error getting version for %s gem",
      option_parser: {
        invalid_option: "The option {{command:%s}} is not supported.",
        invalid_option_store_equals: <<~MESSAGE,
        missing_argument: "The required argument {{command:%s}} is missing.",
      },
    },
    app: {
      help: <<~HELP,
      error: {
        type_not_found: <<~MESSAGE,
        missing_shopify_cli_yml: <<~MESSAGE,
        invalid_project_type: <<~MESSAGE,
      },
      create: {
        type_required_error: "",
        invalid_type: "The type %s is not supported. The only supported types are"\
          " {{command:[ rails | node | php ]}}",
        help: <<~HELP,
        rails: {
          help: <<~HELP,

          error: {
            invalid_ruby_version: "This project requires a Ruby version ~> 2.5 or Ruby 3.0.",
            dir_exists: "Project directory %s already exists. Please use a different name.",
            install_failure: "Error installing %s gem",
            node_required: "node is required to create a rails project. Download at https://nodejs.org/en/download.",
            node_version_failure: "Failed to get the current node version. Please make sure it is installed as " \
              "per the instructions at https://nodejs.org/en.",
            yarn_required: "yarn is required to create a rails project. Download at " \
              "https://classic.yarnpkg.com/en/docs/install.",
            yarn_version_failure: "Failed to get the current yarn version. Please make sure it is " \
              "installed as per the instructions at https://classic.yarnpkg.com/en/docs/install.",
          },

          info: {
            open_new_shell: "{{*}} {{yellow:After installing %s, please open a new Command Prompt or PowerShell " \
              "window to continue.}}",
          },
          installing_bundler: "Installing bundler…",
          generating_app: "Generating new rails app project in %s…",
          adding_shopify_gem: "{{v}} Adding shopify_app gem…",
          node_version: "node %s",
          yarn_version: "yarn %s",
          running_bundle_install: "Running bundle install…",
          running_generator: "Running shopify_app generator…",
          running_migrations: "Running migrations…",
          running_webpacker_install: "Running webpacker:install…",
        },
        node: {
          help: <<~HELP,
          error: {
            node_required: "node is required to create an app project. Download at https://nodejs.org/en/download.",
            npm_required: "npm is required to create an app project. Download at https://www.npmjs.com/get-npm.",
            npm_version_failure: "Failed to get the current npm version. Please make sure it is installed as per " \
              "the instructions at https://www.npmjs.com/get-npm.",
          },
          node_version: "node %s",
          npm_version: "npm %s",
        },
        php: {
          help: <<~HELP,

          error: {
            php_required: <<~VERSION,
            php_version_failure: <<~VERSION,
            php_version_too_low: "Your PHP version is too low. Please use version %s or higher.",
            composer_required: <<~COMPOSER,
            npm_required: "npm is required to create an app project. Download at https://www.npmjs.com/get-npm.",
            app_setup: "Failed to set up the app",
          },

          php_version: "PHP %s",
          npm_version: "npm %s",
          app_setting_up: "Setting up app…",
          app_set_up: "App is now set up",
        },
      },
      deploy: {
        help: <<~HELP,
        extended_help: <<~HELP,
        error: {
          missing_platform: <<~MESSAGE,
          invalid_platform: <<~MESSAGE,
        },
        heroku: {
          downloading: "Downloading Heroku CLI…",
          downloaded: "Downloaded Heroku CLI",
          installing: "Installing Heroku CLI…",
          installing_windows: "Running Heroku CLI install wizard…",
          installed: "Installed Heroku CLI",
          authenticated_with_account: "{{v}} Authenticated with Heroku as {{green:%s}}",
          authenticating: "Authenticating with Heroku…",
          authenticated: "{{v}} Authenticated with Heroku",
          deploying: "Deploying to Heroku…",
          deployed: "{{v}} Deployed to Heroku",
          php: {
            post_deploy: <<~DEPLOYED,
            error: {
              generate_app_key: "Failed to generate Laravel APP_KEY",
            },
          },
          rails: {
            db_check: {
              validating: "Validating application…",
              checking: "Checking database type…",
              validated: "Database type \"%s\" validated for platform \"Heroku\"",
              problem: "A problem was encountered while checking your database type.",
              sqlite: <<~SQLITE,
            },
          },
          git: {
            checking: "Checking git repo…",
            initialized: "Git repo initialized",
            what_branch: "What branch would you like to deploy?",
            branch_selected: "{{v}} Git branch {{green:%s}} selected for deploy",
          },
          app: {
            no_apps_found: "No existing Heroku app found. What would you like to do?",
            name: "What is your Heroku app’s name?",
            select: "Specify an existing Heroku app",
            selecting: "Selecting Heroku app %s…",
            selected: "{{v}} Heroku app {{green:%s}} selected",
            create: "Create a new Heroku app",
            creating: "Creating new Heroku app…",
            created: "{{v}} New Heroku app created",
            setting_configs: "Setting Shopify app configs…",
            configs_set: "{{v}} Shopify app configs set",
          },
        },
      },
      connect: {
        help: <<~HELP,
        connected: "Project now connected to {{green:%s}}",
        production_warning: <<~MESSAGE,
      },
      tunnel: {
        help: <<~HELP,
        extended_help: <<~HELP,
        error: {
          token_argument_missing: "{{x}} {{red:auth requires a token argument}}\n\n",
        },
      },
      serve: {
        help: <<~HELP,
        extended_help: <<~HELP,
        open_info: <<~MESSAGE,
        running_server: "Running server…",
        error: {
          host_must_be_https: "HOST must be a HTTPS url.",
          invalid_port: "%s is not a valid port.",
        },
      },
      open: {
        help: <<~HELP,
      },
    },
    extension: {
      push: {
        web_pixel_extension: {
          error: {
            file_read_error: "There was a problem reading %s",
            missing_config_key_error: "Configuration is missing key: %s",
            invalid_config_value_error: "Configuration value is invalid: %s",
          },
        },
        checkout_ui_extension: {
          localization: {
            error: {
              bundle_too_large: "Total size of all locale files must be less than %s.",
              duplicate_locale_code: "Duplicate locale found: `%s`; locale codes"\
                " should be unique and are case insensitive.",
              file_empty: "Locale file `%s` is empty.",
              file_too_large: "Locale file `%s` too large; size must be less than %s.",
              invalid_file_extension: "Invalid locale filename: `%s`; only .json files are allowed.",
              invalid_locale_code: "Invalid locale filename: `%s`; locale code should be 2 or 3 letters,"\
                " optionally followed by a two-letter region code, e.g. `fr-CA`.",
              invalid_file_encoding: "Invalid file encoding for `%s`; file encoding should be UTF-8.",
              single_default_locale: "There must be one and only one locale identified as the default locale,"\
                " e.g. `en.default.json`",
            },
          },
        },
      },
    },
    error_reporting: {
      unhandled_error: {
        message: "{{x}} {{red:An unexpected error occurred.}}",
        issue_message: "{{red:\tTo \e]8;;%s\e\\submit an issue\e]8;;\e\\"\
          " include the stack trace.}}",
        stacktrace_message: "{{red:\tTo print the stack trace, add the environment variable %s.}}",
      },
      report_error: {
        question: "Send an anonymized error report to Shopify?",
        yes: "Yes, send",
        no: "No, don't send",
      },
    },
    analytics: {
      enable_prompt: {
        uncaught_error: {
          question: "Automatically send reports from now on?",
          yes: "Yes, automatically send anonymized reports to Shopify",
          no: "No, don't send",
        },
        usage: {
          question: "Automatically send anonymized usage and error reports to Shopify? We use these"\
            " to make development on Shopify better.",
          yes: "Yes, automatically send anonymized reports to Shopify",
          no: "No, don't send",
        },
      },
    },
    connect: {
      already_connected_warning: "{{yellow:! This app appears to be already connected}}",
      project_type_select: "What type of project would you like to connect?",
      cli_yml_saved: ".shopify-cli.yml saved to project root",
    },

    context: {
      open_url: <<~OPEN,
    },

    env_file: {
      saving_header: "writing %s file…",
      saving: "writing %s file",
      saved: "%s saved to project root",
    },

    config: {
      help: <<~HELP,
      feature: {
        help: <<~HELP,
        enabled: "{{v}} feature {{green:%s}} has been enabled",
        disabled: "{{v}} feature {{green:%s}} has been disabled",
        is_enabled: "{{v}} feature {{green:%s}} is currently enabled",
        is_disabled: "{{v}} feature {{green:%s}} is currently disabled",
      },
      analytics: {
        help: <<~HELP,
        enabled: "{{v}} analytics have been enabled",
        disabled: "{{v}} analytics have been disabled",
        is_enabled: "{{v}} analytics are currently enabled",
        is_disabled: "{{v}} analytics are currently disabled",
      },
    },

    git: {
      error: {
        directory_exists: "Project directory already exists. Please create a project with a new name.",
        no_branches_found: "Could not find any git branches",
        nonexistent: "Git needs to be installed: https://git-scm.com/download",
        repo_not_initiated:
          "Git repo is not initiated. Please run {{command:git init}} and make at least one commit.",
        no_commits_made: "No git commits have been made. Please make at least one commit.",
        remote_not_added: "Remote could not be added.",
        sparse_checkout_not_enabled: "Sparse checkout could not be enabled.",
        sparse_checkout_not_set: "Sparse checkout set command failed.",
        pull_failed: "Pull failed.",
        pull_failed_bad_branch: "Pull failed. Branch %s cannot be found. Check the branch name and try again.",
        merge_failed: "The file %s merge failed.",
      },

      cloning: "Cloning %s into %s…",
      cloned: "{{v}} Cloned into %s",
      pulling_from_to: "Pulling %s into %s…",
      pulling: "Pulling…",
      pulled: "Pulled into %s",
    },

    help: {
      error: {
        command_not_found: "Command %s not found.",
      },

      preamble: <<~MESSAGE,
    },

    heroku: {
      error: {
        authentication: "Could not authenticate with Heroku",
        creation: "Heroku app could not be created",
        deploy: "Could not deploy to Heroku",
        download: "Heroku CLI could not be downloaded",
        install: "Could not install Heroku CLI",
        could_not_select_app: "Heroku app {{green:%s}} could not be selected",
        set_config: "Failed to set config %s to %s in Heroku app",
        add_buildpacks: "Failed to add buildpacks in Heroku app",
      },
    },

    js_deps: {
      error: {
        missing_package: "expected to have a file at: %s",
        invalid_package: "{{info:%s}} was not valid JSON. Fix this then try again",
        install_spinner_error: "Unable to install all %d dependencies",
        install_error: "An error occurred while installing dependencies",
      },

      installing: "Installing dependencies with %s…",
      installed: "Dependencies installed",
      npm_installing_deps: "Installing %d dependencies…",
      npm_installed_deps: "%d npm dependencies installed",
    },

    login: {
      help: <<~HELP,
      invalid_shop: <<~MESSAGE,
      shop_prompt: <<~PROMPT,
      spinner: {
        initiating: "Initiating authentication",
        finalizing: "Finalizing authentication",
        loading_organizations: "Loading available partner organizations",
      },
    },

    logout: {
      help: <<~HELP,

      success: "Successfully logged out of your account",
    },

    switch: {
      help: <<~HELP,
      disabled_as_shopify_org: "Can't switch development stores logged in as {{green:Shopify partners org}}",
      success: "Switched development store to {{green:%s}}",
    },
    identity_auth: {
      error: {
        timeout: "Timed out while waiting for response from Shopify",
        local_identity_not_running: "Identity needs to be running locally in order to proceed.",
        reauthenticate: "Please login again with {{command:shopify login}}",
        invalid_destination: "The store %s doesn't exist. Please log out and try again.",
      },

      location: {
        admin: "development store",
        partner: "Shopify Partners account",
        shopifolk: "{{green:Shopify Employee account}}",
      },
      authentication_required:
        "{{i}} Authentication required. Login to the URL below with your %s credentials to continue.",

      servlet: {
        success_response: "You've successfully logged into the Shopify CLI!",
        invalid_request_response: "Invalid request: %s",
        invalid_state_response: "The anti-forgery state token does not match the initial request.",
      },
      login_prompt: "Please ensure you've logged in with {{command:%s login}} and try again",
      token_authentication: "%s environment variable. We'll authenticate using its value as a token.",
    },

    options: {
      help_text: "Print help for command",
    },

    partners_api: {
      org_name_and_id: "%s (%s)",
      error: {
        account_not_found: <<~MESSAGE,
      },
    },

    php_deps: {
      error: {
        missing_package: "Expected to have a file at: %s",
        invalid_package: "{{info:%s}} was not valid JSON. Fix this then try again",
        install: "Failed to install %s packages",
        install_spinner_error: "Unable to install all %d dependencies",
        install_error: "An error occurred while installing dependencies",
      },

      installing: "Installing Composer dependencies…",
      installed: "Dependencies installed",
      installed_count: "%d dependencies installed",
    },

    api: {
      error: {
        failed_auth: "Failed to authenticate with Shopify. Please try again later.",
        failed_auth_debugging: "{{red:Please provide this information with your report:}}\n%s\n\n",
        forbidden: <<~FORBIDDEN,
        theme_access_invalid_password: "Invalid password. Please check that it was generated from Theme Access app"\
          " for the current store.",
        theme_access_no_store: "No store found. Please pass it through the environment variable SHOPIFY_SHOP",
        internal_server_error: "{{red:{{x}} An unexpected error occurred on Shopify.}}",
        internal_server_error_debug: "\n{{red:Response details:}}\n%s\n\n",
        invalid_url: "Invalid URL: %s",
      },
    },

    populate: {
      help: <<~HELP,

      extended_help: <<~HELP,

      error: {
        no_shop: "No store found. Please run {{command:%s login --store/-s STORE}} to login to a specific store",
      },

      customer: {
        added: "%s added to {{green:%s}} at {{underline:%scustomers/%d}}",
      },

      draft_order: {
        added: "DraftOrder added to {{green:%s}} at {{underline:%sdraft_orders/%d}}",
      },

      options: {
        header: "{{bold:{{cyan:%s}} options:}}",
        count_help: "Number of resources to generate",
      },

      populating: "Populating %d %ss…",

      completion_message: <<~COMPLETION_MESSAGE,

      product: {
        added: "%s added to {{green:%s}} at {{underline:%sproducts/%d}}",
      },
    },

    project: {
      error: {
        not_in_project: <<~MESSAGE,
      },
    },

    yaml: {
      error: {
        not_hash: "{{x}} %s was not a proper YAML file. Expecting a hash.",
        invalid: "{{x}} %s contains invalid YAML: %s",
        not_found: "{{x}} %s not found",
      },
    },

    project_type: {
      error: {
        cannot_override_core: "Can't register duplicate core command '%s' from %s",
      },
    },

    system: {
      help: <<~HELP,

      error: {
        unknown_option: "{{x}} {{red:unknown option '%s'}}",
      },

      header: "{{bold:Shopify CLI}}",
      shop_header: "{{bold:Current Shop}}",
      const: "%17s = %s",
      ruby_header: <<~RUBY_MESSAGE,
      rb_config: "%-25s - RbConfig[\"%s\"]",
      command_header: "{{bold:Commands}}",
      command_with_path: "{{v}} %s, %s",
      command_not_found: "{{x}} %s",
      ngrok_available: "{{v}} ngrok, %s",
      ngrok_not_available: "{{x}} ngrok NOT available",
      project: {
        header: "{{bold:In a {{cyan:%s}} project directory}}",
        command_with_path: "{{v}} %s, %s, version %s",
        command_not_found: "{{x}} %s",
        env_header: "{{bold:Project environment}}",
        env_not_set: "not set",
        env: "%-18s = %s",
        no_env: "{{x}} .env file not present",
      },
      environment_header: "{{bold:Environment}}",
      env: "%-17s = %s",
      identity_header: "{{bold:Identity}}",
      identity_is_shopifolk: "{{v}} Checked user settings: you’re Shopify staff!",
    },

    store: {
      help: <<~HELP,
      shop: "You're currently logged into {{green:%s}}",
    },

    tasks: {
      confirm_store: {
        prompt: "You are currently logged into {{green:%s}}. Do you want to proceed using this store?",
        confirmation: "Proceeding using {{green:%s}}",
        cancelling: "Cancelling…",
      },
      ensure_env: {
        organization_select: "To which partner organization does this project belong?",
        no_development_stores: <<~MESSAGE,
        development_store_select: "Which development store would you like to use?",
        app_select: "To which app does this project belong?",
        no_apps: "You have no apps to connect to, creating a new app.",
        app_name: "App name",
        app_type: {
          select: "What type of app are you building?",
          select_public: "Public: An app built for a wide merchant audience.",
          select_custom: "Custom: An app custom built for a single client.",
          selected: "App type {{green:%s}}",
        },
      },
      ensure_dev_store: {
        could_not_verify_store: "Couldn't verify your store. If you don't have a development store set up, "\
          "please create one in your Partners dashboard and run `shopify app connect`.",
        convert_to_dev_store: <<~MESSAGE,
        transfer_disabled: "{{v}} Transfer has been disabled on %s.",
      },
      ensure_project_type: {
        wrong_project_type: "This command can only be run within %s projects.",
      },
      update_dashboard_urls: {
        updated: "{{v}} Whitelist URLS updated in Partners Dashboard}}",
        update_error:
          "{{x}} error: For authentication issues, run {{command:%s logout}} to clear invalid credentials",
      },
      select_org_and_shop: {
        authentication_issue: "For authentication issues, run {{command:%s logout}} to clear invalid credentials",
        create_store: "Visit {{underline:https://partners.shopify.com/%s/stores}} to create one",
        development_store: "Using development store {{green:%s}}",
        development_store_select: "Select a development store",
        error: {
          no_development_stores: "{{x}} No Development Stores available.",
          no_organizations: "No partner organizations available.",
          organization_not_found: "Cannot find a partner organization with that ID",
          shopifolk_notice: <<~MESSAGE,
        },
        first_party: "Are you working on a {{green:Shopify project}} on behalf of the"\
          " {{green:Shopify partners org}}?",
        identified_as_shopify: "We've identified you as a {{green:Shopify}} employee.",
        organization: "Partner organization {{green:%s (%s)}}",
        organization_select: "Select partner organization",
      },
    },

    tunnel: {
      error: {
        stop: "ngrok tunnel could not be stopped. Try running {{command:killall -9 ngrok}}",
        url_fetch_failure: "Unable to fetch external url",
        prereq_command_required: "%1$s is required for installing ngrok. Please install %1$s using the appropriate"\
          " package manager for your system.",
        ngrok: "Something went wrong with ngrok installation,"\
          "please make sure %s exists within %s before trying again",
        signup_required: "A free ngrok account is required: {{underline:https://ngrok.com/signup}}. After you "\
          "signup, install your personal authorization token using {{command:%s app tunnel auth <token>}}.",
      },
      installing: "Installing ngrok…",
      not_running: "{{green:x}} ngrok tunnel not running",
      prereq_command_location: "%s @ %s",
      start_with_account: "{{v}} ngrok tunnel running at {{underline:%s}}, with account %s",
      stopped: "{{green:x}} ngrok tunnel stopped",
      timed_out: "{{x}} ngrok tunnel has timed out, restarting…",
      will_timeout: "{{*}} This tunnel will timeout in {{red:%s}}",
    },

    version: {
      help: <<~HELP,
    },

    warning: {
      development_version: <<~DEVELOPMENT,

      new_version: <<~MESSAGE,

      in_3_0_directory: <<~MESSAGE,

      sunset: <<~MESSAGE,

      sunset_create_app: <<~MESSAGE,

      sunset_app: <<~MESSAGE,

      sunset_theme: <<~MESSAGE,
    },
    reporting: {
      help: <<~HELP,
      invalid_argument: <<~MESSAGE,
      missing_argument: <<~MESSAGE,
      turned_on_message: <<~MESSAGE,
      turned_off_message: <<~MESSAGE,
    },
    whoami: {
      help: <<~HELP,
      not_logged_in: <<~MESSAGE,
      logged_in_shop_only: <<~MESSAGE,
      logged_in_partner_only: "Logged into partner organization {{green:%s}}",
      logged_in_partner_and_shop: "Logged into store {{green:%s}} in partner organization {{green:%s}}",
    },
    error: "Error",
    try_this: "Try this",
  },
}.freeze