# typed: strict
# frozen_string_literal: true

require "abstract_command"
require "shell_command"

module Homebrew
  module Cmd
    class Shellenv < AbstractCommand
      include ShellCommand

      cmd_args do
        description <<~EOS
          Valid shells: bash|csh|fish|pwsh|sh|tcsh|zsh

          Print export statements. When run in a shell, this installation of Homebrew will be added to your
          `$PATH`, `$MANPATH`, and `$INFOPATH`.

          The variables `$HOMEBREW_PREFIX`, `$HOMEBREW_CELLAR` and `$HOMEBREW_REPOSITORY` are also exported to avoid
          querying them multiple times.
          To help guarantee idempotence, this command produces no output when Homebrew's `bin` and `sbin` directories
          are first and second respectively in your `$PATH`. Consider adding evaluation of this command's output to
          your dotfiles (e.g. `~/.bash_profile` or `~/.zprofile` on macOS and `~/.bashrc` or `~/.zshrc` on Linux)
          with e.g.:
            `eval "$(brew shellenv zsh)"` or `eval "$(brew shellenv bash)"`

          The shell should be specified explicitly with a supported shell name parameter but will be detected
          automatically if not provided (but this may not be correct). Unknown shells will output POSIX exports.
        EOS

        named_args :shell
      end
    end
  end
end
