-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add
globus_cli_rmtree
via toxfile plugin
This imitates our prior art in globus-sdk to move `allowlist_externals = rm` usage into a plugin which can take care of this for us. It also sets up `toxfile.py` for us in case we want to put any other customizations in there.
- Loading branch information
Showing
2 changed files
with
47 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
""" | ||
This is a very small 'tox' plugin. | ||
'toxfile.py' is a special name for auto-loading a plugin without defining package | ||
metadata. | ||
For full doc, see: https://tox.wiki/en/latest/plugins.html | ||
Methods decorated below with `tox.plugin.impl` are hook implementations. | ||
We only implement hooks which we need. | ||
""" | ||
|
||
from __future__ import annotations | ||
|
||
import logging | ||
import pathlib | ||
import shutil | ||
import typing as t | ||
|
||
from tox.plugin import impl | ||
|
||
if t.TYPE_CHECKING: | ||
from tox.config.sets import EnvConfigSet | ||
from tox.session.state import State | ||
from tox.tox_env.api import ToxEnv | ||
|
||
log = logging.getLogger(__name__) | ||
|
||
|
||
@impl | ||
def tox_add_env_config(env_conf: EnvConfigSet, state: State) -> None: | ||
env_conf.add_config( | ||
keys=["globus_cli_rmtree"], | ||
of_type=list[str], | ||
default=[], | ||
desc="A dir tree to remove before running the environment commands", | ||
) | ||
|
||
|
||
@impl | ||
def tox_before_run_commands(tox_env: ToxEnv) -> None: | ||
cli_rmtree = tox_env.conf.load("globus_cli_rmtree") | ||
for name in cli_rmtree: | ||
path = pathlib.Path(name) | ||
if path.exists(): | ||
log.warning(f"globus_cli_rmtree: {path}") | ||
shutil.rmtree(path) |