Source code for mishmash.core

from eyed3.core import EP_MAX_SIZE_HINT
from nicfit import getLogger
from nicfit.command import Command as BaseCommand, CommandError
from .orm import MAIN_LIB_NAME

__all__ = ["Command", "CommandError", "EP_MAX_SIZE_HINT"]
log = getLogger(__name__)


[docs]class Command(BaseCommand): """Base class for MishMash commands.""" _library_arg_nargs = None # '*', '+', '?', None, 1 def _initArgParser(self, parser): super()._initArgParser(parser) if self._library_arg_nargs: req = self._library_arg_nargs in ("+", 1) if self._library_arg_nargs not in ("?", 1): action, default, dest = ("append", [] if not req else [MAIN_LIB_NAME], "libs") else: action, default, dest = ("store", None if not req else MAIN_LIB_NAME, "lib") parser.add_argument("-L", "--library", dest=dest, required=req, action=action, metavar="LIB_NAME", default=default, help="Specify a library.")
[docs] def run(self, args, config): from . import database self.config = config (self.db_engine, SessionMaker, self.db_conn) = database.init(self.config.db_url) self.db_session = SessionMaker() try: retval = super().run(args) self.db_session.commit() except Exception: self.db_session.rollback() raise finally: self.db_session.close() self.db_conn.close() return retval