Merge branch '1.9.1' into devel

This commit is contained in:
James 2011-09-13 10:50:54 -04:00
commit e6f7640c90
2 changed files with 99 additions and 44 deletions

View file

@ -31,34 +31,37 @@ api_client = apc.api_client_factory(config)
# copy or move files
# flag should be 'copy' or 'move'
def copy_or_move_files_to(paths, dest, flag):
for path in paths:
if (path[0] == "/" or path[0] == "~"):
path = os.path.realpath(path)
else:
path = currentDir+path
path = apc.encode_to(path, 'utf-8')
dest = apc.encode_to(dest, 'utf-8')
if(os.path.exists(path)):
if(os.path.isdir(path)):
path = format_dir_string(path)
#construct full path
sub_path = []
for temp in os.listdir(path):
sub_path.append(path+temp)
copy_or_move_files_to(sub_path, dest, flag)
elif(os.path.isfile(path)):
#copy file to dest
ext = os.path.splitext(path)[1]
if( 'mp3' in ext or 'ogg' in ext ):
destfile = dest+os.path.basename(path)
if(flag == 'copy'):
print "Copying %(src)s to %(dest)s..." % {'src':path, 'dest':destfile}
shutil.copyfile(path, destfile)
elif(flag == 'move'):
print "Moving %(src)s to %(dest)s..." % {'src':path, 'dest':destfile}
shutil.move(path, destfile)
else:
print "Cannot find file or path: %s" % path
try:
for path in paths:
if (path[0] == "/" or path[0] == "~"):
path = os.path.realpath(path)
else:
path = currentDir+path
path = apc.encode_to(path, 'utf-8')
dest = apc.encode_to(dest, 'utf-8')
if(os.path.exists(path)):
if(os.path.isdir(path)):
path = format_dir_string(path)
#construct full path
sub_path = []
for temp in os.listdir(path):
sub_path.append(path+temp)
copy_or_move_files_to(sub_path, dest, flag)
elif(os.path.isfile(path)):
#copy file to dest
ext = os.path.splitext(path)[1]
if( 'mp3' in ext or 'ogg' in ext ):
destfile = dest+os.path.basename(path)
if(flag == 'copy'):
print "Copying %(src)s to %(dest)s..." % {'src':path, 'dest':destfile}
shutil.copyfile(path, destfile)
elif(flag == 'move'):
print "Moving %(src)s to %(dest)s..." % {'src':path, 'dest':destfile}
shutil.move(path, destfile)
else:
print "Cannot find file or path: %s" % path
except Exception as e:
print "Error: ", e
def format_dir_string(path):
if(path[-1] != '/'):
@ -84,10 +87,8 @@ def checkOtherOption(args):
def errorIfMultipleOption(args, msg=''):
if(checkOtherOption(args)):
if(msg != ''):
printHelp()
raise OptionValueError(msg)
else:
printHelp()
raise OptionValueError("This option cannot be combined with other options")
def printHelp():
@ -123,18 +124,17 @@ There are two ways to import audio files into Airtime:
def CopyAction(option, opt, value, parser):
errorIfMultipleOption(parser.rargs)
if(len(parser.rargs) == 0 ):
printHelp()
raise OptionValueError("No argument found. This option requires at least one argument.")
stor = helper_get_stor_dir()
if(stor is None):
exit("Unable to connect to the Airtime server.")
print "Unable to connect to the Airtime server."
return
dest = stor+"organize/"
copy_or_move_files_to(parser.rargs, dest, 'copy')
def MoveAction(option, opt, value, parser):
errorIfMultipleOption(parser.rargs)
if(len(parser.rargs) == 0 ):
printHelp()
raise OptionValueError("No argument found. This option requires at least one argument.")
stor = helper_get_stor_dir()
if(stor is None):
@ -145,10 +145,8 @@ def MoveAction(option, opt, value, parser):
def WatchAddAction(option, opt, value, parser):
errorIfMultipleOption(parser.rargs)
if(len(parser.rargs) > 1):
printHelp()
raise OptionValueError("Too many arguments. This option requires exactly one argument.")
elif(len(parser.rargs) == 0 ):
printHelp()
raise OptionValueError("No argument found. This option requires exactly one argument.")
path = parser.rargs[0]
if (path[0] == "/" or path[0] == "~"):
@ -171,7 +169,6 @@ def WatchAddAction(option, opt, value, parser):
def WatchListAction(option, opt, value, parser):
errorIfMultipleOption(parser.rargs)
if(len(parser.rargs) > 0):
printHelp()
raise OptionValueError("This option doesn't take any arguments.")
res = api_client.list_all_watched_dirs()
if(res is None):
@ -188,10 +185,8 @@ def WatchListAction(option, opt, value, parser):
def WatchRemoveAction(option, opt, value, parser):
errorIfMultipleOption(parser.rargs)
if(len(parser.rargs) > 1):
printHelp()
raise OptionValueError("Too many arguments. This option requires exactly one argument.")
elif(len(parser.rargs) == 0 ):
printHelp()
raise OptionValueError("No argument found. This option requires exactly one argument.")
path = parser.rargs[0]
if (path[0] == "/" or path[0] == "~"):
@ -234,10 +229,8 @@ def StorageSetAction(option, opt, value, parser):
sys.exit(1)
if(len(parser.rargs) > 1):
printHelp()
raise OptionValueError("Too many arguments. This option requires exactly one argument.")
elif(len(parser.rargs) == 0 ):
printHelp()
raise OptionValueError("No argument found. This option requires exactly one argument.")
path = parser.rargs[0]
@ -261,10 +254,13 @@ def StorageSetAction(option, opt, value, parser):
def StorageGetAction(option, opt, value, parser):
errorIfMultipleOption(parser.rargs)
if(len(parser.rargs) > 0):
printHelp()
raise OptionValueError("This option does not take any arguments.")
print helper_get_stor_dir()
class OptionValueError(RuntimeError):
def __init__(self, msg):
self.msg = msg
usage = """[-c|--copy FILE/DIR [FILE/DIR...]] [-m|--move FILE/DIR [FILE/DIR...]]
[--watch-add DIR] [--watch-list] [--watch-remove DIR]
[--storage-dir-set DIR] [--storage-dir-get]"""
@ -294,7 +290,19 @@ if(len(sys.argv) == 1 or '-' not in sys.argv[1]):
printHelp()
sys.exit()
(option, args) = parser.parse_args()
try:
(option, args) = parser.parse_args()
except Exception, e:
printHelp()
if hasattr(e, 'msg'):
print "Error: "+e.msg
else:
print "Error: ",e
sys.exit()
except SystemExit:
printHelp()
sys.exit()
if option.help:
printHelp()
sys.exit()