forked from DRMTalks/devine
refactor(Track): Return new path on move(), raise exceptions on errors
This commit is contained in:
parent
3ceabd0c74
commit
866de402fb
|
@ -307,33 +307,36 @@ class Track:
|
|||
|
||||
self.path = output_path
|
||||
|
||||
def move(self, target: Union[Path, str]) -> bool:
|
||||
def move(self, target: Union[Path, str]) -> Path:
|
||||
"""
|
||||
Move the Track's file from current location, to target location.
|
||||
This will overwrite anything at the target path.
|
||||
|
||||
Raises:
|
||||
TypeError: If the target argument is not the expected type.
|
||||
ValueError: If track has no file to move, or the target does not exist.
|
||||
OSError: If the file somehow failed to move.
|
||||
|
||||
Returns True if the move succeeded, or False if there was no file to move, or
|
||||
the file failed to move.
|
||||
Returns the new location of the track.
|
||||
"""
|
||||
if not isinstance(target, (str, Path)):
|
||||
raise TypeError(f"Expected {target} to be a {Path} or {str}, not {type(target)}")
|
||||
|
||||
if not self.path:
|
||||
return False
|
||||
raise ValueError("Track has no file to move")
|
||||
|
||||
if not isinstance(target, Path):
|
||||
target = Path(target)
|
||||
|
||||
if not target.exists():
|
||||
raise ValueError(f"Target file {repr(target)} does not exist")
|
||||
|
||||
moved_to = Path(shutil.move(self.path, target))
|
||||
success = moved_to.resolve() == target.resolve()
|
||||
if moved_to.resolve() != target.resolve():
|
||||
raise OSError(f"Failed to move {self.path} to {target}")
|
||||
|
||||
if success:
|
||||
self.path = target
|
||||
|
||||
return success
|
||||
self.path = target
|
||||
return target
|
||||
|
||||
|
||||
__all__ = ("Track",)
|
||||
|
|
Loading…
Reference in New Issue