activate.nu 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # This command prepares the required environment variables
  2. def-env activate-virtualenv [] {
  3. def is-string [x] {
  4. ($x | describe) == 'string'
  5. }
  6. def has-env [name: string] {
  7. $name in (env).name
  8. }
  9. let is-windows = ((sys).host.name | str downcase) == 'windows'
  10. let virtual-env = 'C:\Users\poliv\Desktop\RestApiPython\rest_api_venv'
  11. let bin = 'Scripts'
  12. let path-sep = ';'
  13. let path-name = if $is-windows {
  14. if (has-env 'Path') {
  15. 'Path'
  16. } else {
  17. 'PATH'
  18. }
  19. } else {
  20. 'PATH'
  21. }
  22. let old-path = (
  23. if $is-windows {
  24. if (has-env 'Path') {
  25. $env.Path
  26. } else {
  27. $env.PATH
  28. }
  29. } else {
  30. $env.PATH
  31. } | if (is-string $in) {
  32. # if Path/PATH is a string, make it a list
  33. $in | split row $path-sep | path expand
  34. } else {
  35. $in
  36. }
  37. )
  38. let venv-path = ([$virtual-env $bin] | path join)
  39. let new-path = ($old-path | prepend $venv-path | str collect $path-sep)
  40. # Creating the new prompt for the session
  41. let virtual-prompt = if ('' == '') {
  42. $'(char lparen)($virtual-env | path basename)(char rparen) '
  43. } else {
  44. '() '
  45. }
  46. # Back up the old prompt builder
  47. let old-prompt-command = if (has-env 'VIRTUAL_ENV') && (has-env '_OLD_PROMPT_COMMAND') {
  48. $env._OLD_PROMPT_COMMAND
  49. } else {
  50. if (has-env 'PROMPT_COMMAND') {
  51. $env.PROMPT_COMMAND
  52. } else {
  53. ''
  54. }
  55. }
  56. # If there is no default prompt, then only the env is printed in the prompt
  57. let new-prompt = if (has-env 'PROMPT_COMMAND') {
  58. if ($old-prompt-command | describe) == 'block' {
  59. { $'($virtual-prompt)(do $old-prompt-command)' }
  60. } else {
  61. { $'($virtual-prompt)($old-prompt-command)' }
  62. }
  63. } else {
  64. { $'($virtual-prompt)' }
  65. }
  66. # Environment variables that will be batched loaded to the virtual env
  67. let new-env = {
  68. $path-name : $new-path
  69. VIRTUAL_ENV : $virtual-env
  70. _OLD_VIRTUAL_PATH : ($old-path | str collect $path-sep)
  71. _OLD_PROMPT_COMMAND : $old-prompt-command
  72. PROMPT_COMMAND : $new-prompt
  73. VIRTUAL_PROMPT : $virtual-prompt
  74. }
  75. # Activate the environment variables
  76. load-env $new-env
  77. }
  78. # Activate the virtualenv
  79. activate-virtualenv
  80. alias pydoc = python -m pydoc
  81. alias deactivate = source 'C:\Users\poliv\Desktop\RestApiPython\rest_api_venv\Scripts\deactivate.nu'