import tarfile

from BackupItemBase import *

class BackupItemFile(BackupItemBase):
	
	def __init__(self, backupBaseDirPath, archiveName, files):
		"""
		Output file has name: backupBaseDirPath + archiveName + <automatically added suitable_extension> (e.g. tgz)
		"""
		# super.__init__(backupBaseDirPath)
		self._backupBaseDirPath = backupBaseDirPath
		self._fileList = files
		self._archiveName = archiveName
	
	
	def doBackup(self):
		"""
		@see BackupItemBase.doBackup()
		Add files/directories in list supplied on creation to archive
		See __init__ for more information on parameters used
		
		By default recurse into subdirectories.
		Uses integrated gzip by default.
		Auto naming of destination file if destination is a directory with first name of first source.
		Existing destination file will be overwritten.
		"""
		backupFilePath = os.path.join(self._backupBaseDirPath, self._archiveName + ".tgz")
		tar = tarfile.open(backupFilePath, "w:gz")
		# don't do posix compatible archives as this seems to lead to errors with long names
		tar.posix = False
		for ff in self._fileList:
			tar.add(ff)
		tar.close()
