diff --git a/CHANGELOG.org b/CHANGELOG.org index 3af4d72..bb44bbc 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -32,4 +32,7 @@ ** 0.8.2 <2023-03-19 Sun> Added remove option for source. Moved source logic to .cli.source. +** 0.8.4 <2023-03-21 Tue> + Added remove option for groups. + Moved groups logic to .cli.groups. diff --git a/tui_rsync/cli/cli.py b/tui_rsync/cli/cli.py index 13d61a6..60d4ab2 100644 --- a/tui_rsync/cli/cli.py +++ b/tui_rsync/cli/cli.py @@ -21,7 +21,7 @@ from rich.console import Console import typer from tui_rsync.cli.source.source import source from tui_rsync.cli.sync import sync -from tui_rsync.cli.groups import groups +from tui_rsync.cli.groups.groups import groups console = Console() cli_app = typer.Typer(rich_markup_mode="rich") diff --git a/tui_rsync/cli/groups/__init__.py b/tui_rsync/cli/groups/__init__.py new file mode 100644 index 0000000..820421b --- /dev/null +++ b/tui_rsync/cli/groups/__init__.py @@ -0,0 +1 @@ +from tui_rsync.cli.groups.groups import groups diff --git a/tui_rsync/cli/group_prompt.py b/tui_rsync/cli/groups/group_prompt.py similarity index 100% rename from tui_rsync/cli/group_prompt.py rename to tui_rsync/cli/groups/group_prompt.py diff --git a/tui_rsync/cli/groups/group_remove.py b/tui_rsync/cli/groups/group_remove.py new file mode 100644 index 0000000..87f52d2 --- /dev/null +++ b/tui_rsync/cli/groups/group_remove.py @@ -0,0 +1,48 @@ +################################################################################ +# Copyright (C) 2023 Kostiantyn Klochko # +# # +# This file is part of tui-rsync. # +# # +# tui-rsync is free software: you can redistribute it and/or modify it under # +# uthe terms of the GNU General Public License as published by the Free # +# Software Foundation, either version 3 of the License, or (at your option) # +# any later version. # +# # +# tui-rsync is distributed in the hope that it will be useful, but WITHOUT ANY # +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # +# details. # +# # +# You should have received a copy of the GNU General Public License along with # +# tui-rsync. If not, see . # +################################################################################ + +from rich.console import Console +from rich.prompt import Prompt +from typing import List, Optional +import typer + +from tui_rsync.models.models import Group +from tui_rsync.cli.groups.group_prompt import GroupPrompt + +console = Console() +group_remove = typer.Typer() + +@group_remove.command() +def one( + group_label: str = typer.Option( + None, "--group-label", "-g", + help="[b]The label[/] is a uniq identification of a [b]group[/].", + show_default=False + ), +): + """ + [red b]Remove[/] an [yellow]existing group[/]. + """ + if group_label is None: + group_label = GroupPrompt.get_label_fzf() + + if Group.is_exist(group_label): + group = Group.get_group(group_label) + group.delete_instance() + diff --git a/tui_rsync/cli/groups.py b/tui_rsync/cli/groups/groups.py similarity index 95% rename from tui_rsync/cli/groups.py rename to tui_rsync/cli/groups/groups.py index b720048..86ccc73 100644 --- a/tui_rsync/cli/groups.py +++ b/tui_rsync/cli/groups/groups.py @@ -25,9 +25,11 @@ import typer from tui_rsync.cli.label_prompt import LabelPrompt from tui_rsync.cli.rsync import Rsync from tui_rsync.models.models import Group, count_all_labels_except +from tui_rsync.cli.groups.group_remove import group_remove console = Console() groups = typer.Typer() +groups.add_typer(group_remove, name="remove", help="Remove groups") @groups.command() def add( diff --git a/tui_rsync/cli/source/__init__.py b/tui_rsync/cli/source/__init__.py index d9c71b9..20f87e2 100644 --- a/tui_rsync/cli/source/__init__.py +++ b/tui_rsync/cli/source/__init__.py @@ -1 +1 @@ -from tui_rsync.cli.source import source +from tui_rsync.cli.source.source import source diff --git a/tui_rsync/cli/sync.py b/tui_rsync/cli/sync.py index 6dff63f..ffc85a4 100644 --- a/tui_rsync/cli/sync.py +++ b/tui_rsync/cli/sync.py @@ -26,7 +26,7 @@ from tui_rsync.models.models import Source, Group, Destination, SyncCommand from tui_rsync.models.models import Path from tui_rsync.models.models import all_labels from tui_rsync.cli.label_prompt import LabelPrompt -from tui_rsync.cli.group_prompt import GroupPrompt +from tui_rsync.cli.groups.group_prompt import GroupPrompt from tui_rsync.cli.path_prompt import PathPrompt from tui_rsync.cli.rsync import Rsync