Skip to content

Commit

Permalink
2.8.061
Browse files Browse the repository at this point in the history
  • Loading branch information
chapmanjacobd committed Jun 13, 2024
1 parent 0850086 commit d50b066
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 33 deletions.
8 changes: 4 additions & 4 deletions .github/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ To stop playing press Ctrl+C in either the terminal or mpv
<details><summary>List all subcommands</summary>

$ library
library (v2.8.060; 79 subcommands)
library (v2.8.061; 79 subcommands)

Create database subcommands:
╭───────────────┬──────────────────────────────────────────╮
Expand Down Expand Up @@ -1156,17 +1156,17 @@ BTW, for some cols like time_deleted you'll need to specify a where clause so th
$ library merge-mv -h
usage: library merge-mv SOURCE ... DEST [--simulate] [--ext EXT]

By default it won't matter if source folders end with slash or not
By default it won't matter if source folders end with a path separator or not

library merge-mv folder1 folder2/ # folder1 will be merged with folder2/
library merge-mv folder1/ folder2/ # folder1 will be merged with folder2/

Move folders BSD-style where slash on each source argument determines if it is to be merged with or placed within the destination
--bsd mode: an ending path separator determines if each source is to be placed within or merged with the destination

library merge-mv --bsd folder1/ folder2/ # folder1 will be merged with folder2/
library merge-mv --bsd folder1 folder2/ # folder1 will be moved to folder2/folder1/

Or always include the parent folders when merging:
--parent mode: always include the parent folder name when merging

library merge-mv --parent folder1 folder2/ # folder1 will be moved to folder2/folder1/
library merge-mv --parent folder1/ folder2/ # folder1 will be moved to folder2/folder1/
Expand Down
40 changes: 20 additions & 20 deletions pdm.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion xklb/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "2.8.060"
__version__ = "2.8.061"
7 changes: 6 additions & 1 deletion xklb/folders/merge_folders.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@

def parse_args() -> argparse.Namespace:
parser = argparse_utils.ArgumentParser(prog="library merge-folders", usage=usage.merge_folders)
arggroups.clobber(parser)
parser.add_argument(
"--replace",
"--clobber",
action=argparse.BooleanOptionalAction,
help="Overwrite files on path conflict (default: ask to confirm)",
)
arggroups.debug(parser)

parser.add_argument("sources", nargs="+", action=argparse_utils.ArgparseArgsOrStdin)
Expand Down
7 changes: 6 additions & 1 deletion xklb/folders/rel_mv.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@

def parse_args() -> argparse.Namespace:
parser = argparse_utils.ArgumentParser(usage=usage.rel_mv)
arggroups.clobber(parser)
parser.add_argument(
"--replace",
"--clobber",
action=argparse.BooleanOptionalAction,
help="Overwrite files on path conflict (default: ask to confirm)",
)
arggroups.debug(parser)

parser.add_argument(
Expand Down
6 changes: 3 additions & 3 deletions xklb/usage.py
Original file line number Diff line number Diff line change
Expand Up @@ -861,17 +861,17 @@ def play(action) -> str:

merge_mv = """library merge-mv SOURCE ... DEST [--simulate] [--ext EXT]
By default it won't matter if source folders end with slash or not
By default it won't matter if source folders end with a path separator or not
library merge-mv folder1 folder2/ # folder1 will be merged with folder2/
library merge-mv folder1/ folder2/ # folder1 will be merged with folder2/
Move folders BSD-style where slash on each source argument determines if it is to be merged with or placed within the destination
--bsd mode: an ending path separator determines if each source is to be placed within or merged with the destination
library merge-mv --bsd folder1/ folder2/ # folder1 will be merged with folder2/
library merge-mv --bsd folder1 folder2/ # folder1 will be moved to folder2/folder1/
Or always include the parent folders when merging:
--parent mode: always include the parent folder name when merging
library merge-mv --parent folder1 folder2/ # folder1 will be moved to folder2/folder1/
library merge-mv --parent folder1/ folder2/ # folder1 will be moved to folder2/folder1/
Expand Down
4 changes: 1 addition & 3 deletions xklb/utils/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ def clobber(args, source, destination) -> tuple[str | None, str]:
case arggroups.FileOverFolder.MERGE:
while os.path.exists(destination): # until we find an open slot
destination = os.path.join(destination, os.path.basename(destination)) # down
if not os.path.isdir(os.path.dirname(destination)): # go back one if it is a file
if not os.path.isdir(os.path.dirname(destination)): # go back one if file-like
destination = os.path.dirname(destination) # up

else:
Expand Down Expand Up @@ -219,8 +219,6 @@ def clobber(args, source, destination) -> tuple[str | None, str]:
os.makedirs(parent_dir, exist_ok=True) # there can't be more than one blocking file
while os.path.exists(parent_file): # until we find an open file slot
parent_file = os.path.join(parent_file, os.path.basename(parent_file)) # down
if not os.path.isdir(os.path.dirname(parent_file)): # go back one if it is a file
parent_file = os.path.dirname(parent_file) # up
rename(args, existing_rename, parent_file) # temporary rename to final dest

if source:
Expand Down

0 comments on commit d50b066

Please sign in to comment.