Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""LICENSE
2Copyright 2015 Hermann Krumrey <hermann@krumreyh.com>
4This file is part of toktokkie.
6toktokkie is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation, either version 3 of the License, or
9(at your option) any later version.
11toktokkie is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
16You should have received a copy of the GNU General Public License
17along with toktokkie. If not, see <http://www.gnu.org/licenses/>.
18LICENSE"""
20import argparse
21import logging
24class Command:
25 """
26 Class that encapsulates behaviour of a command for the toktokkie script
27 """
29 def __init__(self, args: argparse.Namespace):
30 """
31 Initializes the command object
32 :param args: The command line arguments
33 """
34 self.logger = logging.getLogger(self.__class__.__name__)
35 self.args = args
37 @classmethod
38 def name(cls) -> str:
39 """
40 :return: The command name
41 """
42 raise NotImplementedError() # pragma: no cover
44 @classmethod
45 def help(cls) -> str:
46 """
47 :return: The help message for the command
48 """
49 raise NotImplementedError() # pragma: no cover
51 @classmethod
52 def prepare_parser(cls, parser: argparse.ArgumentParser):
53 """
54 Prepares an argumentparser for this command
55 :param parser: The parser to prepare
56 :return: None
57 """
58 raise NotImplementedError() # pragma: no cover
60 def execute(self):
61 """
62 Executes the commands
63 :return: None
64 """
65 raise NotImplementedError() # pragma: no cover
67 @staticmethod
68 def add_directories_arg(parser: argparse.ArgumentParser):
69 """
70 Adds a directories argument to a parser
71 :param parser: The parser to which to add the argument
72 :return: None
73 """
74 parser.add_argument("directories", nargs="+",
75 help="The directories to use. Files and "
76 "directories that do not contain a valid "
77 "metadata configuration will be ignored.")