diff --git a/TODO b/TODO index 079e51909..63efea1c0 100644 --- a/TODO +++ b/TODO @@ -9,7 +9,6 @@ TODO list (for developers only): - sync tool removal - database update and management between me and reagent - create a .md5 for every in upload package - - add a counter to the upload command - reagent tasks: - reagent should support a forced revision bumping diff --git a/libraries/activatorTools.py b/libraries/activatorTools.py index 4e6e9d35d..d1b1ef194 100644 --- a/libraries/activatorTools.py +++ b/libraries/activatorTools.py @@ -260,8 +260,12 @@ def packages(options): if (detailedUploadQueue != []): ftp = activatorFTP(uri) ftp.setCWD(etpConst['binaryurirelativepath']) + uploadCounter = str(len(detailedUploadQueue)) + currentCounter = 0 for item in detailedUploadQueue: - print_info(red(" * Uploading file ")+bold(item[0]) + red(" [")+blue(bytesIntoHuman(item[1]))+red("] to ")+ bold(extractFTPHostFromUri(uri)) +red(" ..."),back = True) + currentCounter += 1 + counterInfo = bold(" (")+blue(str(currentCounter))+"/"+red(uploadCounter)+bold(")") + print_info(counterInfo+red(" Uploading file ")+bold(item[0]) + red(" [")+blue(bytesIntoHuman(item[1]))+red("] to ")+ bold(extractFTPHostFromUri(uri)) +red(" ..."),back = True) ftp.uploadFile(etpConst['packagessuploaddir']+"/"+item[0]) # now move the file into etpConst['packagesbindir'] os.system("mv "+etpConst['packagessuploaddir']+"/"+item[0]+" "+etpConst['packagesbindir']+"/") @@ -272,16 +276,21 @@ def packages(options): if (detailedDownloadQueue != []): ftp = activatorFTP(uri) ftp.setCWD(etpConst['binaryurirelativepath']) + downloadCounter = str(len(detailedDownloadQueue)) + currentCounter = 0 for item in detailedDownloadQueue: + currentCounter += 1 + counterInfo = bold(" (")+blue(str(currentCounter))+"/"+red(downloadCounter)+bold(")") if os.path.isfile(etpConst['packagessuploaddir']+"/"+item[0]): localSize = int(os.stat(etpConst['packagessuploaddir']+"/"+item[0])[6]) remoteSize = int(item[1]) if localSize == remoteSize: - print_info(red(" * Moving file ")+bold(item[0])+red(" to ")+bold(etpConst['packagesbindir'])+red(" ..."),back = True) + print_info(counterInfo+red(" Moving file ")+bold(item[0])+red(" to ")+bold(etpConst['packagesbindir'])+red(" ..."),back = True) os.system("mv "+etpConst['packagessuploaddir']+"/"+item[0]+" "+etpConst['packagesbindir']+"/") continue - print_info(red(" * Downloading file ")+bold(item[0]) + red(" [")+blue(bytesIntoHuman(item[1]))+red("] from ")+ bold(extractFTPHostFromUri(uri)) +red(" ..."),back = True) + + print_info(counterInfo+red(" Downloading file ")+bold(item[0]) + red(" [")+blue(bytesIntoHuman(item[1]))+red("] from ")+ bold(extractFTPHostFromUri(uri)) +red(" ..."),back = True) ftp.downloadFile(item[0],etpConst['packagesbindir']+"/") print_info(red(" * Download completed for ")+bold(extractFTPHostFromUri(uri))) ftp.closeFTPConnection() diff --git a/libraries/entropyTools.py b/libraries/entropyTools.py index 8351eeba4..11bd4ec7d 100644 --- a/libraries/entropyTools.py +++ b/libraries/entropyTools.py @@ -857,17 +857,20 @@ class activatorFTP: def uploadFile(self,file,ascii = False): for i in range(10): # ten tries f = open(file) - file = file.split("/")[len(file.split("/"))-1] + filename = file.split("/")[len(file.split("/"))-1] try: if (ascii): - rc = self.ftpconn.storlines("STOR "+file,f) + rc = self.ftpconn.storlines("STOR "+filename+".tmp",f) else: - rc = self.ftpconn.storbinary("STOR "+file,f) + rc = self.ftpconn.storbinary("STOR "+filename+".tmp",f) + # now we can rename the file with its original name + self.renameFile(filename+".tmp",filename) return rc except socket.error: # connection reset by peer print_info(red("Upload issue, retrying...")) self.reconnectHost() # reconnect - self.deleteFile(file) + self.deleteFile(filename) + self.deleteFile(filename+".tmp") f.close() continue