From 8d0d738fd1c727dcbbce717f5d846a032f513e03 Mon Sep 17 00:00:00 2001 From: Joakim Soderlund Date: Fri, 13 Oct 2017 13:59:16 +0200 Subject: [PATCH] Add commands package --- fimfarchive/commands/__init__.py | 30 +++++++++++++++++++ fimfarchive/commands/base.py | 51 ++++++++++++++++++++++++++++++++ tests/test_imports.py | 1 + 3 files changed, 82 insertions(+) create mode 100644 fimfarchive/commands/__init__.py create mode 100644 fimfarchive/commands/base.py diff --git a/fimfarchive/commands/__init__.py b/fimfarchive/commands/__init__.py new file mode 100644 index 0000000..415ed5e --- /dev/null +++ b/fimfarchive/commands/__init__.py @@ -0,0 +1,30 @@ +""" +Command module. +""" + + +# +# Fimfarchive, preserves stories from Fimfiction. +# Copyright (C) 2015 Joakim Soderlund +# +# This program is free software: you can redistribute it and/or modify +# it under the 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. +# +# This program 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 this program. If not, see . +# + + +from .base import Command + + +__all__ = ( + 'Command', +) diff --git a/fimfarchive/commands/base.py b/fimfarchive/commands/base.py new file mode 100644 index 0000000..1d35f66 --- /dev/null +++ b/fimfarchive/commands/base.py @@ -0,0 +1,51 @@ +""" +Command base class. +""" + + +# +# Fimfarchive, preserves stories from Fimfiction. +# Copyright (C) 2015 Joakim Soderlund +# +# This program is free software: you can redistribute it and/or modify +# it under the 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. +# +# This program 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 this program. If not, see . +# + + +from abc import ABC, abstractmethod + + +__all__ = ( + 'Command', +) + + +class Command(ABC): + """ + Command line interface for tasks. + """ + + @abstractmethod + def __call__(self, *args: str) -> int: + """ + Runs the command. + + Args: + *args: Command line arguments. + + Returns: + Application exit status. + + Raises: + SystemExit: If the arguments are invalid. + """ diff --git a/tests/test_imports.py b/tests/test_imports.py index 051b67c..7501661 100644 --- a/tests/test_imports.py +++ b/tests/test_imports.py @@ -26,6 +26,7 @@ import pytest MODULES = ( + 'commands', 'exceptions', 'fetchers', 'flavors',