# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
+import logging
+
import argparse
from fba import commands
-from fba import fba
-from fba import locking
+from fba import database
+
+from fba.helpers import locking
+
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger(__name__)
+# Argument parser
_PARSER = None
def init_parser():
- # DEBUG: print("DEBUG: init_parser(): CALLED!")
+ logger.debug("CALLED!")
global _PARSER
- # DEBUG: print("DEBUG: Initializing parser ...")
+ logger.debug("Initializing parser ...")
_PARSER = argparse.ArgumentParser(
description="Fetches block reasons from the fediverse",
epilog="Please note that some commands have optional arguments, you may want to try fba.py <command> --help to find them out.",
)
+
+ # Generic:
+ _PARSER.add_argument("--debug", action="store_const", dest="log_level", const=logging.DEBUG, help="Full debug output")
+
+ # Commands:
subparser_command = _PARSER.add_subparsers(
dest="command",
title="Commands to execute",
"fetch_blocks",
help="Fetches blocks from registered instances (run command fetch_instances first!).",
)
- parser.add_argument("--domain", help="Instance name (aka. domain) to fetch blocks from")
+ parser.add_argument("--domain", help="Instance name (aka. domain)")
+ parser.add_argument("--software", help="Name of software, e.g. 'lemmy'")
parser.set_defaults(command=commands.fetch_blocks)
### Fetch blocks from chaos.social ###
)
parser.set_defaults(command=commands.fetch_cs)
+ ### Fetch blocks from todon.eu wiki ###
+ parser = subparser_command.add_parser(
+ "fetch_todon_wiki",
+ help="Fetches blocks from todon.eu's wiki.",
+ )
+ parser.set_defaults(command=commands.fetch_todon_wiki)
+
### Fetch blocks from a FBA-specific RSS feed ###
parser = subparser_command.add_parser(
"fetch_fba_rss",
)
parser.set_defaults(command=commands.fetch_txt)
- # DEBUG: print("DEBUG: init_parser(): EXIT!")
+ ### Fetch blocks from joinfediverse.wiki ###
+ parser = subparser_command.add_parser(
+ "fetch_joinfediverse",
+ help="Fetches FediBlock page from joinfediverse.wiki",
+ )
+ parser.set_defaults(command=commands.fetch_joinfediverse)
+
+ ### Fetch blocks from fediverse.observer ###
+ parser = subparser_command.add_parser(
+ "fetch_observer",
+ help="Fetches blocks from fediverse.observer.",
+ )
+ parser.set_defaults(command=commands.fetch_observer)
+ parser.add_argument("--software", help="Name of software, e.g. 'lemmy'")
+
+ ### Fetch instances from fedipact.online ###
+ parser = subparser_command.add_parser(
+ "fetch_fedipact",
+ help="Fetches blocks from fedipact.online.",
+ )
+ parser.set_defaults(command=commands.fetch_fedipact)
+
+ ### Fetch from pixelfed.org's API ###
+ parser = subparser_command.add_parser(
+ "fetch_pixelfed_api",
+ help="Fetches domain names from pixelfed.org's API",
+ )
+ parser.set_defaults(command=commands.fetch_pixelfed_api)
+
+ logger.debug("EXIT!")
def run_command():
- # DEBUG: print("DEBUG: run_command(): CALLED!")
+ logger.debug("CALLED!")
args = _PARSER.parse_args()
- # DEBUG: print(f"DEBUG: args[{type(args)}]={args}")
+
+ if args.log_level is not None:
+ loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
+ for _logger in loggers:
+ _logger.setLevel(args.log_level)
+
+ logger.debug("args[%s]='%s'", type(args), args)
status = args.command(args)
- # DEBUG: print("DEBUG: status={status} - EXIT!")
- return status if isinstance(status, int) else 0
+
+ logger.debug("status=%d - EXIT!", status)
+ return status
def shutdown():
- # DEBUG: print("DEBUG: Closing database connection ...")
- fba.connection.close()
+ logger.debug("Closing database connection ...")
+ database.connection.close()
locking.release()
- # DEBUG: print("DEBUG: Shutdown completed.")
+ logger.debug("Shutdown completed.")