diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b14317ea4..a9ba6790d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -28,7 +28,7 @@ repos: rev: v1.11.0 hooks: - id: blacken-docs - additional_dependencies: [black==20.8b1] + additional_dependencies: [black==21.9b0] - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.9.0 hooks: diff --git a/docs/changelog/2220.feature.rst b/docs/changelog/2220.feature.rst new file mode 100644 index 000000000..2bdc76875 --- /dev/null +++ b/docs/changelog/2220.feature.rst @@ -0,0 +1 @@ +Special-case ``--prompt .`` to the name of the current directory - by :user:`rkm`. diff --git a/src/virtualenv/activation/activator.py b/src/virtualenv/activation/activator.py index 587ac105b..80d7e47fd 100644 --- a/src/virtualenv/activation/activator.py +++ b/src/virtualenv/activation/activator.py @@ -1,5 +1,6 @@ from __future__ import absolute_import, unicode_literals +import os from abc import ABCMeta, abstractmethod from six import add_metaclass @@ -14,7 +15,7 @@ def __init__(self, options): :param options: the parsed options as defined within :meth:`add_parser_arguments` """ - self.flag_prompt = options.prompt + self.flag_prompt = os.path.basename(os.getcwd()) if options.prompt == "." else options.prompt @classmethod def supports(cls, interpreter): diff --git a/src/virtualenv/run/plugin/activators.py b/src/virtualenv/run/plugin/activators.py index dea28277f..8180981b1 100644 --- a/src/virtualenv/run/plugin/activators.py +++ b/src/virtualenv/run/plugin/activators.py @@ -43,7 +43,10 @@ def handle_selected_arg_parse(self, options): "--prompt", dest="prompt", metavar="prompt", - help="provides an alternative prompt prefix for this environment", + help=( + "provides an alternative prompt prefix for this environment " + "(value of . means name of the current working directory)" + ), default=None, ) for activator in self.active.values(): diff --git a/tests/unit/activation/test_activator.py b/tests/unit/activation/test_activator.py new file mode 100644 index 000000000..4a8a51c66 --- /dev/null +++ b/tests/unit/activation/test_activator.py @@ -0,0 +1,18 @@ +from __future__ import absolute_import, unicode_literals + +from argparse import Namespace + +from virtualenv.activation.activator import Activator + + +def test_activator_prompt_cwd(monkeypatch, tmp_path): + class FakeActivator(Activator): + def generate(self, creator): + raise NotImplementedError + + cwd = tmp_path / "magic" + cwd.mkdir() + monkeypatch.chdir(cwd) + + activator = FakeActivator(Namespace(prompt=".")) + assert activator.flag_prompt == "magic"