def main(): """Parses command line arguments, displays errors from tvnamer in terminal """ opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() if opts.verbose: logging.basicConfig( level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") else: logging.basicConfig() # If a config is specified, load it, update the defaults using the loaded # values, then reparse the options with the updated defaults. default_configuration = os.path.expanduser("~/.tvnamer.json") if opts.loadconfig is not None: # Command line overrides loading ~/.tvnamer.json configToLoad = opts.loadconfig elif os.path.isfile(default_configuration): # No --config arg, so load default config if it exists configToLoad = default_configuration else: # No arg, nothing at default config location, don't load anything configToLoad = None if configToLoad is not None: p("Loading config: %s" % (configToLoad)) try: loadedConfig = json.load(open(os.path.expanduser(configToLoad))) except ValueError as e: p("Error loading config: %s" % e) opter.exit(1) else: # Config loaded, update optparser's defaults and reparse defaults.update(loadedConfig) opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() # Decode args using filesystem encoding (done after config loading # as the args are reparsed when the config is loaded) if PY2: args = [x.decode(sys.getfilesystemencoding()) for x in args] # Save config argument if opts.saveconfig is not None: p("Saving config: %s" % (opts.saveconfig)) configToSave = dict(opts.__dict__) del configToSave['saveconfig'] del configToSave['loadconfig'] del configToSave['showconfig'] json.dump(configToSave, open(os.path.expanduser(opts.saveconfig), "w+"), sort_keys=True, indent=4) opter.exit(0) # Show config argument if opts.showconfig: print(json.dumps(opts.__dict__, sort_keys=True, indent=2)) return # Process values if opts.batch: opts.select_first = True opts.always_rename = True # Update global config object Config.update(opts.__dict__) if Config["move_files_only"] and not Config["move_files_enable"]: p("#" * 20) p("Parameter move_files_enable cannot be set to false while parameter move_only is set to true." ) p("#" * 20) opter.exit(0) if Config['titlecase_filename'] and Config['lowercase_filename']: warnings.warn( "Setting 'lowercase_filename' clobbers 'titlecase_filename' option" ) if len(args) == 0: opter.error("No filenames or directories supplied") try: tvnamer(paths=sorted(args)) except NoValidFilesFoundError: opter.error("No valid files were supplied") except UserAbort as errormsg: opter.error(errormsg) except SkipBehaviourAbort as errormsg: opter.error(errormsg)
def main(): """Parses command line arguments, displays errors from tvnamer in terminal """ opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() if opts.verbose: logging.basicConfig( level = logging.DEBUG, format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s") else: logging.basicConfig() # If a config is specified, load it, update the defaults using the loaded # values, then reparse the options with the updated defaults. default_configuration = os.path.expanduser("~/.tvnamer.json") if opts.loadconfig is not None: # Command line overrides loading ~/.tvnamer.json configToLoad = opts.loadconfig elif os.path.isfile(default_configuration): # No --config arg, so load default config if it exists configToLoad = default_configuration else: # No arg, nothing at default config location, don't load anything configToLoad = None if configToLoad is not None: p("Loading config: %s" % (configToLoad)) try: loadedConfig = json.load(open(os.path.expanduser(configToLoad))) except ValueError as e: p("Error loading config: %s" % e) opter.exit(1) else: # Config loaded, update optparser's defaults and reparse defaults.update(loadedConfig) opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() # Decode args using filesystem encoding (done after config loading # as the args are reparsed when the config is loaded) if PY2: args = [x.decode(sys.getfilesystemencoding()) for x in args] # Save config argument if opts.saveconfig is not None: p("Saving config: %s" % (opts.saveconfig)) configToSave = dict(opts.__dict__) del configToSave['saveconfig'] del configToSave['loadconfig'] del configToSave['showconfig'] json.dump( configToSave, open(os.path.expanduser(opts.saveconfig), "w+"), sort_keys=True, indent=4) opter.exit(0) # Show config argument if opts.showconfig: print(json.dumps(opts.__dict__, sort_keys=True, indent=2)) return # Process values if opts.batch: opts.select_first = True opts.always_rename = True # Update global config object Config.update(opts.__dict__) if Config["move_files_only"] and not Config["move_files_enable"]: p("#" * 20) p("Parameter move_files_enable cannot be set to false while parameter move_only is set to true.") p("#" * 20) opter.exit(0) if Config['titlecase_filename'] and Config['lowercase_filename']: warnings.warn("Setting 'lowercase_filename' clobbers 'titlecase_filename' option") if len(args) == 0: opter.error("No filenames or directories supplied") try: tvnamer(paths = sorted(args)) except NoValidFilesFoundError: opter.error("No valid files were supplied") except UserAbort as errormsg: opter.error(errormsg) except SkipBehaviourAbort as errormsg: opter.error(errormsg)