From 86732e7827003c1f49d04274f9c98191fa837be2 Mon Sep 17 00:00:00 2001 From: "beville@gmail.com" Date: Wed, 13 Feb 2013 21:54:07 +0000 Subject: [PATCH] Moved tag style class to comicarchive module git-svn-id: http://comictagger.googlecode.com/svn/trunk@491 6c5673fe-1810-88d6-992b-cd32ca31540c --- comictaggerlib/matchselectionwindow.py | 2 +- comictaggerlib/options.py | 58 ++++++++++++++++++-------- comictaggerlib/pagelisteditor.py | 2 +- comictaggerlib/renamewindow.py | 2 +- 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/comictaggerlib/matchselectionwindow.py b/comictaggerlib/matchselectionwindow.py index de0be42..35e48ec 100644 --- a/comictaggerlib/matchselectionwindow.py +++ b/comictaggerlib/matchselectionwindow.py @@ -26,7 +26,7 @@ from PyQt4.QtCore import QUrl, pyqtSignal, QByteArray from imagefetcher import ImageFetcher from settings import ComicTaggerSettings -from options import MetaDataStyle +from comicarchive import MetaDataStyle from coverimagewidget import CoverImageWidget from comicvinetalker import ComicVineTalker import utils diff --git a/comictaggerlib/options.py b/comictaggerlib/options.py index 0b15c7b..5c2c7c5 100644 --- a/comictaggerlib/options.py +++ b/comictaggerlib/options.py @@ -26,19 +26,7 @@ import os import ctversion import utils from genericmetadata import GenericMetadata - -class Enum(set): - def __getattr__(self, name): - if name in self: - return name - raise AttributeError - -class MetaDataStyle: - CBI = 0 - CIX = 1 - COMET = 2 - name = [ 'ComicBookLover', 'ComicRack', 'CoMet' ] - +from comicarchive import MetaDataStyle class Options: help_text = """ @@ -119,6 +107,8 @@ For more help visit the wiki at: http://code.google.com/p/comictagger/ self.interactive = False self.issue_id = None self.recursive = False + self.run_script = False + self.script = None self.file_list = [] def display_msg_and_quit( self, msg, code, show_help=False ): @@ -191,10 +181,10 @@ For more help visit the wiki at: http://code.google.com/p/comictagger/ # parse command line options try: opts, args = getopt.getopt( input_args, - "hpdt:fm:vonsrc:ieR", + "hpdt:fm:vonsrc:ieRS:", [ "help", "print", "delete", "type=", "copy=", "parsefilename", "metadata=", "verbose", "online", "dryrun", "save", "rename" , "raw", "noabort", "terse", "nooverwrite", - "interactive", "nosummary", "version", "id=" , "recursive", + "interactive", "nosummary", "version", "id=" , "recursive", "script=", "export-to-zip", "delete-rar", "abort-on-conflict" ] ) except getopt.GetoptError as err: @@ -206,6 +196,9 @@ For more help visit the wiki at: http://code.google.com/p/comictagger/ self.display_msg_and_quit( None, 0, show_help=True ) if o in ("-v", "--verbose"): self.verbose = True + if o in ("-S", "--script"): + self.run_script = True + self.script = a if o in ("-R", "--recursive"): self.recursive = True if o in ("-p", "--print"): @@ -267,11 +260,12 @@ For more help visit the wiki at: http://code.google.com/p/comictagger/ self.data_style = MetaDataStyle.COMET else: self.display_msg_and_quit( "Invalid tag type", 1 ) - + if self.print_tags or self.delete_tags or self.save_tags or self.copy_tags or self.rename_file or self.export_to_zip: self.no_gui = True count = 0 + if self.run_script: count += 1 if self.print_tags: count += 1 if self.delete_tags: count += 1 if self.save_tags: count += 1 @@ -280,7 +274,37 @@ For more help visit the wiki at: http://code.google.com/p/comictagger/ if self.export_to_zip: count +=1 if count > 1: - self.display_msg_and_quit( "Must choose only one action of print, delete, save, copy, rename, or export", 1 ) + self.display_msg_and_quit( "Must choose only one action of print, delete, save, copy, rename, export, or run script", 1 ) + + if self.script is not None: + # we were given a script. special case for the args: + # 1. ignore everthing before the -S, + # 2. pass all the ones that follow (including script name) to the script + script_args = list() + for idx, arg in enumerate(sys.argv): + if arg in [ '-S', '--script']: + #found script! + script_args = sys.argv[idx+1:] + break + sys.argv = script_args + if not os.path.exists(self.script): + print "Can't find {0}".format( self.script ) + else: + # I *think* this makes sense: + # assume the base name of the file is the module name + # add the folder of the given file to the python path + # import module + dirname = os.path.dirname(self.script) + module_name = os.path.splitext(os.path.basename(self.script))[0] + sys.path = [dirname] + sys.path + script = __import__(module_name) + + # Determine if the entry point exists before trying to run it + if "main" in dir(script): + script.main() + else: + print "Can't find entry point \"main()\" in module \"{0}\"".format( module_name ) + sys.exit(0) if len(args) > 0: if platform.system() == "Windows": diff --git a/comictaggerlib/pagelisteditor.py b/comictaggerlib/pagelisteditor.py index 6360c7d..122f88c 100644 --- a/comictaggerlib/pagelisteditor.py +++ b/comictaggerlib/pagelisteditor.py @@ -26,7 +26,7 @@ from PyQt4 import uic from settings import ComicTaggerSettings from genericmetadata import GenericMetadata, PageType -from options import MetaDataStyle +from comicarchive import MetaDataStyle from pageloader import PageLoader from coverimagewidget import CoverImageWidget diff --git a/comictaggerlib/renamewindow.py b/comictaggerlib/renamewindow.py index fb416a0..97f94f9 100644 --- a/comictaggerlib/renamewindow.py +++ b/comictaggerlib/renamewindow.py @@ -23,7 +23,7 @@ from PyQt4 import QtCore, QtGui, uic from settings import ComicTaggerSettings from settingswindow import SettingsWindow from filerenamer import FileRenamer -from options import MetaDataStyle +from comicarchive import MetaDataStyle import os import utils