mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-29 05:47:43 +00:00
95 lines
2.7 KiB
Python
Executable File
95 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# encoding: utf-8
|
|
|
|
import paramiko
|
|
import platform
|
|
import os
|
|
import datetime
|
|
import time
|
|
import sys
|
|
import hashlib
|
|
import multiprocessing
|
|
|
|
start = int(time.time())
|
|
now = datetime.datetime.now()
|
|
dest = "/home/frs/project/bfw-travis-upload/"
|
|
|
|
# upload a single file
|
|
def upload_file(src, dest):
|
|
with paramiko.Transport(("frs.sourceforge.net", 22)) as transport:
|
|
try:
|
|
transport.connect(None, "bfw-uploader", os.environ["SFTP_PASSWORD"])
|
|
except:
|
|
print("SFTP_PASSWORD not present, exiting...")
|
|
sys.exit(1)
|
|
|
|
with paramiko.SFTPClient.from_transport(transport) as sftp:
|
|
sftp.put(src, dest)
|
|
|
|
# delete a single file
|
|
def delete_file(dest):
|
|
with paramiko.Transport(("frs.sourceforge.net", 22)) as transport:
|
|
try:
|
|
transport.connect(None, "bfw-uploader", os.environ["SFTP_PASSWORD"])
|
|
except:
|
|
print("SFTP_PASSWORD not present, exiting...")
|
|
sys.exit(1)
|
|
|
|
with paramiko.SFTPClient.from_transport(transport) as sftp:
|
|
sftp.remove(dest)
|
|
|
|
# make remote directories if they don't already exist
|
|
with paramiko.Transport(("frs.sourceforge.net", 22)) as transport:
|
|
try:
|
|
transport.connect(None, "bfw-uploader", os.environ["SFTP_PASSWORD"])
|
|
except:
|
|
print("SFTP_PASSWORD not present, exiting...")
|
|
sys.exit(1)
|
|
|
|
with paramiko.SFTPClient.from_transport(transport) as sftp:
|
|
dest = dest+os.environ["BRANCH"]+"/"
|
|
try:
|
|
sftp.mkdir(dest)
|
|
except:
|
|
pass
|
|
|
|
dest = dest+str(now.year)+"-"+str(now.month).zfill(2)+"-"+str(now.day).zfill(2)+"/"
|
|
try:
|
|
sftp.mkdir(dest)
|
|
except:
|
|
pass
|
|
|
|
dest = dest+os.environ["TRAVIS_COMMIT"]+"/"
|
|
try:
|
|
sftp.mkdir(dest)
|
|
except:
|
|
pass
|
|
|
|
dest = dest+os.environ["UPLOAD_ID"]+"/"
|
|
try:
|
|
sftp.mkdir(dest)
|
|
except:
|
|
pass
|
|
|
|
for arg in sys.argv[1:]:
|
|
if __name__ == '__main__':
|
|
proc = multiprocessing.Process(name="Upload", target=upload_file, args=(arg, dest+arg.split("/")[-1]))
|
|
proc.start()
|
|
proc.join(300)
|
|
if proc.is_alive():
|
|
proc.terminate()
|
|
delete_file(dest+arg.split("/")[-1])
|
|
print("Killed upload for "+dest+arg.split("/")[-1]+" due to taking too long.")
|
|
continue
|
|
|
|
sha256 = hashlib.sha256()
|
|
with open(arg, "rb") as f:
|
|
while True:
|
|
data = f.read(100000)
|
|
if not data:
|
|
break
|
|
sha256.update(data)
|
|
print("sha256 of "+arg+": "+sha256.hexdigest())
|
|
|
|
print("SFTP duration: "+str(int(time.time())-start)+" seconds")
|