%PDF- %PDF-
Direktori : /lib/calibre/calibre/db/cli/ |
Current File : //lib/calibre/calibre/db/cli/cmd_clone.py |
#!/usr/bin/env python3 # License: GPLv3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net> import os from calibre import patheq from calibre.constants import iswindows from calibre.db.legacy import LibraryDatabase readonly = True version = 0 # change this if you change signature of implementation() def implementation(db, notify_changes): return db.backend.prefs.copy(), db.backend.library_path def option_parser(get_parser, args): return get_parser( _( '''\ %prog clone path/to/new/library Create a clone of the current library. This creates a new, empty library that has all the same custom columns, Virtual libraries and other settings as the current library. The cloned library will contain no books. If you want to create a full duplicate, including all books, then simply use your filesystem tools to copy the library folder. ''' ) ) def main(opts, args, dbctx): if len(args) < 1: raise SystemExit(_('Error: You must specify the path to the cloned library')) prefs, library_path = dbctx.run('clone') loc = os.path.abspath(args[0]) if not os.path.exists(loc): os.makedirs(loc) if patheq(loc, library_path): raise SystemExit( _('The location for the new library is the same as the current library') ) empty = not os.listdir(loc) if not empty: raise SystemExit( _( '%s is not empty. You must choose an empty folder for the new library.' ) % loc ) if iswindows and len(loc) > LibraryDatabase.WINDOWS_LIBRARY_PATH_LIMIT: raise SystemExit( _('Path to library too long. It must be less than' ' %d characters.') % LibraryDatabase.WINDOWS_LIBRARY_PATH_LIMIT ) LibraryDatabase(loc, default_prefs=prefs) return 0