conda.fish 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. set -gx CONDA_EXE "/croot/conda_1689269889729/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p/bin/conda"
  2. set _CONDA_ROOT "/croot/conda_1689269889729/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p"
  3. set _CONDA_EXE "/croot/conda_1689269889729/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p/bin/conda"
  4. set -gx CONDA_PYTHON_EXE "/croot/conda_1689269889729/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p/bin/python"
  5. # Copyright (C) 2012 Anaconda, Inc
  6. # SPDX-License-Identifier: BSD-3-Clause
  7. #
  8. # INSTALL
  9. #
  10. # Run 'conda init fish' and restart your shell.
  11. #
  12. if not set -q CONDA_SHLVL
  13. set -gx CONDA_SHLVL 0
  14. set -g _CONDA_ROOT (dirname (dirname $CONDA_EXE))
  15. set -gx PATH $_CONDA_ROOT/condabin $PATH
  16. end
  17. function __conda_add_prompt
  18. if set -q CONDA_PROMPT_MODIFIER
  19. set_color -o green
  20. echo -n $CONDA_PROMPT_MODIFIER
  21. set_color normal
  22. end
  23. end
  24. if functions -q fish_prompt
  25. if not functions -q __fish_prompt_orig
  26. functions -c fish_prompt __fish_prompt_orig
  27. end
  28. functions -e fish_prompt
  29. else
  30. function __fish_prompt_orig
  31. end
  32. end
  33. function return_last_status
  34. return $argv
  35. end
  36. function fish_prompt
  37. set -l last_status $status
  38. if set -q CONDA_LEFT_PROMPT
  39. __conda_add_prompt
  40. end
  41. return_last_status $last_status
  42. __fish_prompt_orig
  43. end
  44. if functions -q fish_right_prompt
  45. if not functions -q __fish_right_prompt_orig
  46. functions -c fish_right_prompt __fish_right_prompt_orig
  47. end
  48. functions -e fish_right_prompt
  49. else
  50. function __fish_right_prompt_orig
  51. end
  52. end
  53. function fish_right_prompt
  54. if not set -q CONDA_LEFT_PROMPT
  55. __conda_add_prompt
  56. end
  57. __fish_right_prompt_orig
  58. end
  59. function conda --inherit-variable CONDA_EXE
  60. if [ (count $argv) -lt 1 ]
  61. $CONDA_EXE
  62. else
  63. set -l cmd $argv[1]
  64. set -e argv[1]
  65. switch $cmd
  66. case activate deactivate
  67. eval ($CONDA_EXE shell.fish $cmd $argv)
  68. case install update upgrade remove uninstall
  69. $CONDA_EXE $cmd $argv
  70. and eval ($CONDA_EXE shell.fish reactivate)
  71. case '*'
  72. $CONDA_EXE $cmd $argv
  73. end
  74. end
  75. end
  76. # Autocompletions below
  77. # Faster but less tested (?)
  78. function __fish_conda_commands
  79. string replace -r '.*_([a-z]+)\.py$' '$1' $_CONDA_ROOT/lib/python*/site-packages/conda/cli/main_*.py
  80. for f in $_CONDA_ROOT/bin/conda-*
  81. if test -x "$f" -a ! -d "$f"
  82. string replace -r '^.*/conda-' '' "$f"
  83. end
  84. end
  85. echo activate
  86. echo deactivate
  87. end
  88. function __fish_conda_env_commands
  89. string replace -r '.*_([a-z]+)\.py$' '$1' $_CONDA_ROOT/lib/python*/site-packages/conda_env/cli/main_*.py
  90. end
  91. function __fish_conda_envs
  92. conda config --json --show envs_dirs | python -c "import json, os, sys; from os.path import isdir, join; print('\n'.join(d for ed in json.load(sys.stdin)['envs_dirs'] if isdir(ed) for d in os.listdir(ed) if isdir(join(ed, d))))"
  93. end
  94. function __fish_conda_packages
  95. conda list | awk 'NR > 3 {print $1}'
  96. end
  97. function __fish_conda_needs_command
  98. set cmd (commandline -opc)
  99. if [ (count $cmd) -eq 1 -a $cmd[1] = conda ]
  100. return 0
  101. end
  102. return 1
  103. end
  104. function __fish_conda_using_command
  105. set cmd (commandline -opc)
  106. if [ (count $cmd) -gt 1 ]
  107. if [ $argv[1] = $cmd[2] ]
  108. return 0
  109. end
  110. end
  111. return 1
  112. end
  113. # Conda commands
  114. complete -f -c conda -n __fish_conda_needs_command -a '(__fish_conda_commands)'
  115. complete -f -c conda -n '__fish_conda_using_command env' -a '(__fish_conda_env_commands)'
  116. # Commands that need environment as parameter
  117. complete -f -c conda -n '__fish_conda_using_command activate' -a '(__fish_conda_envs)'
  118. # Commands that need package as parameter
  119. complete -f -c conda -n '__fish_conda_using_command remove' -a '(__fish_conda_packages)'
  120. complete -f -c conda -n '__fish_conda_using_command uninstall' -a '(__fish_conda_packages)'
  121. complete -f -c conda -n '__fish_conda_using_command upgrade' -a '(__fish_conda_packages)'
  122. complete -f -c conda -n '__fish_conda_using_command update' -a '(__fish_conda_packages)'