|
Packit |
2035a7 |
#!/usr/bin/env python
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
# continuous integration
|
|
Packit |
2035a7 |
# build daily reports (doxygen,coverage,etc)
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
import datetime
|
|
Packit |
2035a7 |
import time
|
|
Packit |
2035a7 |
import subprocess
|
|
Packit |
2035a7 |
import pexpect
|
|
Packit |
2035a7 |
import glob
|
|
Packit |
2035a7 |
import sys
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
# Upload file to sourceforge web server using scp
|
|
Packit |
2035a7 |
def upload(file_to_upload, destination):
|
|
Packit |
2035a7 |
try:
|
|
Packit |
2035a7 |
password = sys.argv[1]
|
|
Packit |
2035a7 |
child = pexpect.spawn(
|
|
Packit |
2035a7 |
'scp ' + file_to_upload + ' danielmarjamaki,cppcheck@web.sourceforge.net:' + destination)
|
|
Packit |
2035a7 |
# child.expect(
|
|
Packit |
2035a7 |
# 'danielmarjamaki,cppcheck@web.sourceforge.net\'s password:')
|
|
Packit |
2035a7 |
child.expect('Password:')
|
|
Packit |
2035a7 |
child.sendline(password)
|
|
Packit |
2035a7 |
child.interact()
|
|
Packit |
2035a7 |
except (IOError, OSError, pexpect.TIMEOUT):
|
|
Packit |
2035a7 |
pass
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
# git push
|
|
Packit |
2035a7 |
def gitpush():
|
|
Packit |
2035a7 |
try:
|
|
Packit |
2035a7 |
password = sys.argv[1]
|
|
Packit |
2035a7 |
child = pexpect.spawn('git push')
|
|
Packit |
2035a7 |
child.expect("Enter passphrase for key '/home/daniel/.ssh/id_rsa':")
|
|
Packit |
2035a7 |
child.sendline(password)
|
|
Packit |
2035a7 |
child.interact()
|
|
Packit |
2035a7 |
except (IOError, OSError, pexpect.TIMEOUT):
|
|
Packit |
2035a7 |
pass
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def iconv(filename):
|
|
Packit |
2035a7 |
p = subprocess.Popen(['file', '-i', filename],
|
|
Packit |
2035a7 |
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
Packit |
2035a7 |
comm = p.communicate()
|
|
Packit |
2035a7 |
if 'charset=iso-8859-1' in comm[0]:
|
|
Packit |
2035a7 |
subprocess.call(
|
|
Packit |
2035a7 |
["iconv", filename, "--from=ISO-8859-1", "--to=UTF-8", "-o", filename])
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
# Generate daily webreport
|
|
Packit |
2035a7 |
def generate_webreport():
|
|
Packit |
2035a7 |
for filename in glob.glob('*/*.cpp'):
|
|
Packit |
2035a7 |
iconv(filename)
|
|
Packit |
2035a7 |
subprocess.call(
|
|
Packit |
2035a7 |
["git", "commit", "-a", "-m", '"automatic conversion from iso-8859-1 formatting to utf-8"'])
|
|
Packit |
2035a7 |
gitpush()
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
subprocess.call(["rm", "-rf", "devinfo"])
|
|
Packit |
2035a7 |
subprocess.call(['nice', "./webreport.sh"])
|
|
Packit |
2035a7 |
upload('-r devinfo', 'htdocs/')
|
|
Packit |
2035a7 |
subprocess.call(["make", "clean"])
|
|
Packit |
2035a7 |
subprocess.call(["rm", "-rf", "devinfo"])
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
# Perform a git pull.
|
|
Packit |
2035a7 |
def gitpull():
|
|
Packit |
2035a7 |
try:
|
|
Packit |
2035a7 |
password = sys.argv[1]
|
|
Packit |
2035a7 |
child = pexpect.spawn('git pull')
|
|
Packit |
2035a7 |
child.expect("Enter passphrase for key '/home/daniel/.ssh/id_rsa':")
|
|
Packit |
2035a7 |
child.sendline(password)
|
|
Packit |
2035a7 |
child.expect('Already up-to-date.')
|
|
Packit |
2035a7 |
child.interact()
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
except (IOError, OSError, pexpect.TIMEOUT):
|
|
Packit |
2035a7 |
pass
|
|
Packit |
2035a7 |
except pexpect.EOF:
|
|
Packit |
2035a7 |
return True
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
return False
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
t0 = None
|
|
Packit |
2035a7 |
while True:
|
|
Packit |
2035a7 |
if datetime.date.today() != t0:
|
|
Packit |
2035a7 |
print("generate daily reports")
|
|
Packit |
2035a7 |
t0 = datetime.date.today()
|
|
Packit |
2035a7 |
gitpull()
|
|
Packit |
2035a7 |
generate_webreport()
|
|
Packit |
2035a7 |
time.sleep(60)
|