111 lines
No EOL
4 KiB
Python
111 lines
No EOL
4 KiB
Python
|
|
import dsz
|
|
import os
|
|
import re
|
|
from task import *
|
|
MaximumAutomaticSize = ((1024 * 1024) * 2)
|
|
|
|
class Get(Task, ):
|
|
|
|
def __init__(self, file):
|
|
Task.__init__(self, file, 'Get')
|
|
self.Concerns = list()
|
|
self.Count = 'Unknown'
|
|
self.Verify = True
|
|
|
|
def Preprocessing(self):
|
|
bRecursive = False
|
|
if ('Depth' in self.__dict__):
|
|
if (self.Depth == '0'):
|
|
bRecursive = True
|
|
if (bRecursive and ((not ('Maximum' in self.__dict__)) or (int(self.Maximum) == 0))):
|
|
self.Concerns.append('Recursive GET with no maximum')
|
|
if ('Maximum' in self.__dict__):
|
|
if (int(self.Maximum) > 100):
|
|
self.Concerns.append('Maximum of over 100 files')
|
|
if (len(self.Concerns) > 0):
|
|
return
|
|
str = 'dir'
|
|
if ('Path' in self.__dict__):
|
|
str = ('%s -path %s' % (str, self.Path))
|
|
if ('Mask' in self.__dict__):
|
|
str = ('%s -mask "%s"' % (str, self.Mask))
|
|
if ('Depth' in self.__dict__):
|
|
if (self.Depth == '0'):
|
|
str = ('%s -recursive' % str)
|
|
if ('Maximum' in self.__dict__):
|
|
str = ('%s -max %s' % (str, self.Maximum))
|
|
start = 0
|
|
end = 0
|
|
if (('Direction' in self.__dict__) and ('Time' in self.__dict__)):
|
|
str = ('%s -%s %s' % (str, self.Direction, self.Time))
|
|
if ('timeType' in self.__dict__):
|
|
str = ('%s -time %s' % (str, self.timeType))
|
|
if dsz.cmd.Run(str, dsz.RUN_FLAG_RECORD):
|
|
try:
|
|
size = sum(dsz.cmd.data.Get('DirItem::FileItem::size', dsz.TYPE_INT))
|
|
self.Count = ('%d files' % dsz.cmd.data.Get('DirItem::FileItem::size', dsz.TYPE_INT)[0])
|
|
if (size > MaximumAutomaticSize):
|
|
self.Concerns.append(('Retrievable size is %d bytes' % size))
|
|
else:
|
|
self.Verify = False
|
|
except:
|
|
self.Concerns.append('Unable to enumerate files for size')
|
|
else:
|
|
self.Concerns.append('Directory listing to gather file size failed')
|
|
return str
|
|
|
|
def IsVerify(self):
|
|
return self.Verify
|
|
|
|
def CreateCommandLine(self):
|
|
str = 'get'
|
|
if ('Path' in self.__dict__):
|
|
str = ('%s -path %s' % (str, self.Path))
|
|
if ('Mask' in self.__dict__):
|
|
str = ('%s -mask "%s"' % (str, self.Mask))
|
|
if ('Depth' in self.__dict__):
|
|
if (self.Depth == '0'):
|
|
str = ('%s -recursive' % str)
|
|
if ('Maximum' in self.__dict__):
|
|
str = ('%s -max %s' % (str, self.Maximum))
|
|
start = 0
|
|
end = 0
|
|
if ('Start' in self.__dict__):
|
|
start = int(self.Start)
|
|
if ('Length' in self.__dict__):
|
|
length = int(self.Length)
|
|
end = (start + length)
|
|
if (end > 0):
|
|
end = (end - 1)
|
|
if (('Direction' in self.__dict__) and ('Time' in self.__dict__)):
|
|
str = ('%s -%s %s' % (str, self.Direction, self.Time))
|
|
if ('timeType' in self.__dict__):
|
|
str = ('%s -time %s' % (str, self.timeType))
|
|
if (start < 0):
|
|
str = ('%s -tail %d' % (str, (- start)))
|
|
elif (end > start):
|
|
str = ('%s -range %d %d' % (str, start, end))
|
|
else:
|
|
str = ('%s -range %d' % (str, start))
|
|
return [str]
|
|
|
|
def Display(self):
|
|
dsz.ui.Echo('Retrieve Files')
|
|
try:
|
|
path = self.Path
|
|
except:
|
|
path = 'None'
|
|
try:
|
|
mask = self.Mask
|
|
except:
|
|
mask = 'None'
|
|
dsz.ui.Echo((' Path : %s' % path))
|
|
dsz.ui.Echo((' Mask : %s' % mask))
|
|
dsz.ui.Echo(('Count : %s' % self.Count))
|
|
if (len(self.Concerns) > 0):
|
|
dsz.ui.Echo('Concerns:')
|
|
for concern in self.Concerns:
|
|
dsz.ui.Echo((' %s' % concern), dsz.WARNING)
|
|
pass
|
|
TaskingOptions['_getTasking'] = Get |