def main(args=sys.argv): opts, args = create_option_parser().parse_args(args) libraries = args[1:] for lib in libraries: if not lib or not LibraryDatabase.exists_at(lib): raise SystemExit(_('There is no calibre library at: %s') % lib) if not libraries: if not prefs['library_path']: raise SystemExit(_('You must specify at least one calibre library')) libraries = [prefs['library_path']] if opts.auto_reload: if opts.daemonize: raise SystemExit('Cannot specify --auto-reload and --daemonize at the same time') from calibre.srv.auto_reload import auto_reload, NoAutoReload try: from calibre.utils.logging import default_log return auto_reload(default_log) except NoAutoReload as e: raise SystemExit(e.message) server = Server(libraries, opts) if opts.daemonize: if not opts.log and not iswindows: raise SystemExit('In order to daemonize you must specify a log file, you can use /dev/stdout to log to screen even as a daemon') daemonize() if opts.pidfile: with lopen(opts.pidfile, 'wb') as f: f.write(str(os.getpid())) signal.signal(signal.SIGTERM, lambda s,f: server.stop()) if not opts.daemonize and not iswindows: signal.signal(signal.SIGHUP, lambda s,f: server.stop()) server.serve_forever()
def main(args=sys.argv): opts, args = create_option_parser().parse_args(args) if opts.auto_reload: if getattr(opts, 'daemonize', False): raise SystemExit( 'Cannot specify --auto-reload and --daemonize at the same time') from calibre.srv.auto_reload import auto_reload, NoAutoReload try: from calibre.utils.logging import default_log return auto_reload(default_log, listen_on=opts.listen_on) except NoAutoReload as e: raise SystemExit(error_message(e)) ensure_single_instance() if opts.userdb: opts.userdb = os.path.abspath(os.path.expandvars(os.path.expanduser(opts.userdb))) connect(opts.userdb, exc_class=SystemExit).close() if opts.manage_users: try: manage_users_cli(opts.userdb) except (KeyboardInterrupt, EOFError): raise SystemExit(_('Interrupted by user')) raise SystemExit(0) libraries = args[1:] for lib in libraries: if not lib or not LibraryDatabase.exists_at(lib): raise SystemExit(_('There is no calibre library at: %s') % lib) libraries = libraries or load_gui_libraries() if not libraries: if not prefs['library_path']: raise SystemExit(_('You must specify at least one calibre library')) libraries = [prefs['library_path']] opts.auto_reload_port = int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0)) opts.allow_console_print = 'CALIBRE_ALLOW_CONSOLE_PRINT' in os.environ if opts.log and os.path.isdir(opts.log): raise SystemExit('The --log option must point to a file, not a directory') if opts.access_log and os.path.isdir(opts.access_log): raise SystemExit('The --access-log option must point to a file, not a directory') server = Server(libraries, opts) if getattr(opts, 'daemonize', False): if not opts.log and not iswindows: raise SystemExit( 'In order to daemonize you must specify a log file, you can use /dev/stdout to log to screen even as a daemon' ) daemonize() if opts.pidfile: with lopen(opts.pidfile, 'wb') as f: f.write(unicode_type(os.getpid()).encode('ascii')) signal.signal(signal.SIGTERM, lambda s, f: server.stop()) if not getattr(opts, 'daemonize', False) and not iswindows: signal.signal(signal.SIGHUP, lambda s, f: server.stop()) # Needed for dynamic cover generation, which uses Qt for drawing from calibre.gui2 import ensure_app, load_builtin_fonts ensure_app(), load_builtin_fonts() try: server.serve_forever() finally: shutdown_delete_service()
def main(args=sys.argv): opts, args = create_option_parser().parse_args(args) ensure_single_instance() if opts.userdb: opts.userdb = os.path.abspath(os.path.expandvars(os.path.expanduser(opts.userdb))) connect(opts.userdb, exc_class=SystemExit).close() if opts.manage_users: try: manage_users_cli(opts.userdb) except (KeyboardInterrupt, EOFError): raise SystemExit(_('Interrupted by user')) raise SystemExit(0) libraries = args[1:] for lib in libraries: if not lib or not LibraryDatabase.exists_at(lib): raise SystemExit(_('There is no calibre library at: %s') % lib) libraries = libraries or load_gui_libraries() if not libraries: if not prefs['library_path']: raise SystemExit(_('You must specify at least one calibre library')) libraries = [prefs['library_path']] if opts.auto_reload: if getattr(opts, 'daemonize', False): raise SystemExit( 'Cannot specify --auto-reload and --daemonize at the same time') from calibre.srv.auto_reload import auto_reload, NoAutoReload try: from calibre.utils.logging import default_log return auto_reload(default_log, listen_on=opts.listen_on) except NoAutoReload as e: raise SystemExit(e.message) opts.auto_reload_port = int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0)) opts.allow_console_print = 'CALIBRE_ALLOW_CONSOLE_PRINT' in os.environ if opts.log and os.path.isdir(opts.log): raise SystemExit('The --log option must point to a file, not a directory') if opts.access_log and os.path.isdir(opts.access_log): raise SystemExit('The --access-log option must point to a file, not a directory') server = Server(libraries, opts) if getattr(opts, 'daemonize', False): if not opts.log and not iswindows: raise SystemExit( 'In order to daemonize you must specify a log file, you can use /dev/stdout to log to screen even as a daemon' ) daemonize() if opts.pidfile: with lopen(opts.pidfile, 'wb') as f: f.write(str(os.getpid())) signal.signal(signal.SIGTERM, lambda s, f: server.stop()) if not getattr(opts, 'daemonize', False) and not iswindows: signal.signal(signal.SIGHUP, lambda s, f: server.stop()) # Needed for dynamic cover generation, which uses Qt for drawing from calibre.gui2 import ensure_app, load_builtin_fonts ensure_app(), load_builtin_fonts() try: server.serve_forever() finally: shutdown_delete_service()
def main(args=sys.argv): opts, args = create_option_parser().parse_args(args) if opts.manage_users: try: manage_users(opts.userdb) except (KeyboardInterrupt, EOFError): raise SystemExit(_('Interrupted by user')) raise SystemExit(0) libraries = args[1:] for lib in libraries: if not lib or not LibraryDatabase.exists_at(lib): raise SystemExit(_('There is no calibre library at: %s') % lib) if not libraries: if not prefs['library_path']: raise SystemExit( _('You must specify at least one calibre library')) libraries = [prefs['library_path']] if opts.auto_reload: if opts.daemonize: raise SystemExit( 'Cannot specify --auto-reload and --daemonize at the same time' ) from calibre.srv.auto_reload import auto_reload, NoAutoReload try: from calibre.utils.logging import default_log return auto_reload(default_log) except NoAutoReload as e: raise SystemExit(e.message) opts.auto_reload_port = int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0)) server = Server(libraries, opts) if opts.daemonize: if not opts.log and not iswindows: raise SystemExit( 'In order to daemonize you must specify a log file, you can use /dev/stdout to log to screen even as a daemon' ) daemonize() if opts.pidfile: with lopen(opts.pidfile, 'wb') as f: f.write(str(os.getpid())) signal.signal(signal.SIGTERM, lambda s, f: server.stop()) if not opts.daemonize and not iswindows: signal.signal(signal.SIGHUP, lambda s, f: server.stop()) # Needed for dynamic cover generation, which uses Qt for drawing from calibre.gui2 import ensure_app, load_builtin_fonts ensure_app(), load_builtin_fonts() server.serve_forever()
def main(args=sys.argv): opts, args = create_option_parser().parse_args(args) if opts.manage_users: try: manage_users(opts.userdb) except (KeyboardInterrupt, EOFError): raise SystemExit(_("Interrupted by user")) raise SystemExit(0) libraries = args[1:] for lib in libraries: if not lib or not LibraryDatabase.exists_at(lib): raise SystemExit(_("There is no calibre library at: %s") % lib) if not libraries: if not prefs["library_path"]: raise SystemExit(_("You must specify at least one calibre library")) libraries = [prefs["library_path"]] if opts.auto_reload: if opts.daemonize: raise SystemExit("Cannot specify --auto-reload and --daemonize at the same time") from calibre.srv.auto_reload import auto_reload, NoAutoReload try: from calibre.utils.logging import default_log return auto_reload(default_log) except NoAutoReload as e: raise SystemExit(e.message) opts.auto_reload_port = int(os.environ.get("CALIBRE_AUTORELOAD_PORT", 0)) try: server = Server(libraries, opts) except InvalidCredentials as e: raise SystemExit(e.message) if opts.daemonize: if not opts.log and not iswindows: raise SystemExit( "In order to daemonize you must specify a log file, you can use /dev/stdout to log to screen even as a daemon" ) daemonize() if opts.pidfile: with lopen(opts.pidfile, "wb") as f: f.write(str(os.getpid())) signal.signal(signal.SIGTERM, lambda s, f: server.stop()) if not opts.daemonize and not iswindows: signal.signal(signal.SIGHUP, lambda s, f: server.stop()) server.serve_forever()
def main(args=sys.argv): opts, args=create_option_parser().parse_args(args) if opts.manage_users: try: manage_users(opts.userdb) except (KeyboardInterrupt, EOFError): raise SystemExit(_('Interrupted by user')) raise SystemExit(0) libraries=args[1:] for lib in libraries: if not lib or not LibraryDatabase.exists_at(lib): raise SystemExit(_('There is no calibre library at: %s') % lib) if not libraries: if not prefs['library_path']: raise SystemExit(_('You must specify at least one calibre library')) libraries=[prefs['library_path']] if opts.auto_reload: if opts.daemonize: raise SystemExit('Cannot specify --auto-reload and --daemonize at the same time') from calibre.srv.auto_reload import auto_reload, NoAutoReload try: from calibre.utils.logging import default_log return auto_reload(default_log, listen_on=opts.listen_on) except NoAutoReload as e: raise SystemExit(e.message) opts.auto_reload_port=int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0)) opts.allow_console_print = 'CALIBRE_ALLOW_CONSOLE_PRINT' in os.environ server=Server(libraries, opts) if opts.daemonize: if not opts.log and not iswindows: raise SystemExit('In order to daemonize you must specify a log file, you can use /dev/stdout to log to screen even as a daemon') daemonize() if opts.pidfile: with lopen(opts.pidfile, 'wb') as f: f.write(str(os.getpid())) signal.signal(signal.SIGTERM, lambda s,f: server.stop()) if not opts.daemonize and not iswindows: signal.signal(signal.SIGHUP, lambda s,f: server.stop()) # Needed for dynamic cover generation, which uses Qt for drawing from calibre.gui2 import ensure_app, load_builtin_fonts ensure_app(), load_builtin_fonts() server.serve_forever()