;;; lang/python/autoload/pyenv.el -*- lexical-binding: t; -*-
;;;###if (modulep! +pyenv)

;;;###autoload
(defvar +pyenv--version nil)

;;;###autoload
(defun +python-pyenv-mode-set-auto-h ()
  "Set pyenv-mode version from buffer-local variable."
  (when (eq major-mode 'python-mode)
    (when (not (local-variable-p '+pyenv--version))
      (make-local-variable '+pyenv--version)
      (setq +pyenv--version (+python-pyenv-read-version-from-file)))
    (if +pyenv--version
        (pyenv-mode-set +pyenv--version)
      (pyenv-mode-unset))))

;;;###autoload
(defun +python-pyenv-read-version-from-file ()
  "Read pyenv version from .python-version file."
  (when-let (root-path (projectile-locate-dominating-file default-directory ".python-version"))
    (let* ((file-path (expand-file-name ".python-version" root-path))
           (version
            (with-temp-buffer
              (insert-file-contents-literally file-path)
              (string-trim (buffer-string)))))
      (if (member version (pyenv-mode-versions))
          version  ;; return.
        (message "pyenv: version `%s' is not installed (set by `%s')."
                 version file-path)))))
