add file handling
This commit is contained in:
parent
3950b6673a
commit
fe5bd7eb5b
53
src/pycage/files.py
Normal file
53
src/pycage/files.py
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import click
|
||||||
|
from dopt_basics import io
|
||||||
|
|
||||||
|
from pycage.helpers import (
|
||||||
|
delete_folder_recursively,
|
||||||
|
get_interpreter,
|
||||||
|
print_error,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@click.command(help="copy created python standalone folder to other location")
|
||||||
|
@click.argument(
|
||||||
|
"dest",
|
||||||
|
type=click.Path(
|
||||||
|
dir_okay=True,
|
||||||
|
writable=True,
|
||||||
|
path_type=Path,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
@click.option("-f", "--force", is_flag=True, default=False, show_default=True)
|
||||||
|
def copy(
|
||||||
|
dest: Path,
|
||||||
|
force: bool,
|
||||||
|
) -> None:
|
||||||
|
try:
|
||||||
|
pth_intp = get_interpreter()
|
||||||
|
except RuntimeError:
|
||||||
|
click.echo("Base interpreter path could not be found", err=True)
|
||||||
|
return
|
||||||
|
|
||||||
|
if not dest.is_absolute():
|
||||||
|
dest = (Path.cwd() / dest).resolve()
|
||||||
|
|
||||||
|
dest = io.prepare_path(dest, ("python",), None, None)
|
||||||
|
if dest.exists() and not force:
|
||||||
|
click.echo(
|
||||||
|
"Path already exists. If you wish to delete and "
|
||||||
|
"copy the folder, use the flag ``--force``"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
src = pth_intp.parent
|
||||||
|
|
||||||
|
try:
|
||||||
|
delete_folder_recursively(dest)
|
||||||
|
shutil.copytree(src, dest, dirs_exist_ok=True)
|
||||||
|
except Exception as err:
|
||||||
|
print_error(err)
|
||||||
Loading…
x
Reference in New Issue
Block a user