forked from indymedia/epicyon
Git patch extraction function
parent
c79efe6d6f
commit
1aaeb2cb01
|
@ -0,0 +1,65 @@
|
||||||
|
__filename__ = "git.py"
|
||||||
|
__author__ = "Bob Mottram"
|
||||||
|
__license__ = "AGPL3+"
|
||||||
|
__version__ = "1.1.0"
|
||||||
|
__maintainer__ = "Bob Mottram"
|
||||||
|
__email__ = "bob@freedombone.net"
|
||||||
|
__status__ = "Production"
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def extractPatch(baseDir: str, nickname: str, domain: str,
|
||||||
|
subject: str, content: str) -> bool:
|
||||||
|
"""Is the given post content a git patch?
|
||||||
|
"""
|
||||||
|
# must have a subject line
|
||||||
|
if not subject:
|
||||||
|
return False
|
||||||
|
if '[PATCH]' not in content:
|
||||||
|
return False
|
||||||
|
if '---' not in content:
|
||||||
|
return False
|
||||||
|
if 'diff ' not in content:
|
||||||
|
return False
|
||||||
|
if 'From:' not in content:
|
||||||
|
return False
|
||||||
|
if 'Date:' not in content:
|
||||||
|
return False
|
||||||
|
if 'Subject:' not in content:
|
||||||
|
return False
|
||||||
|
if '\n' not in content:
|
||||||
|
return False
|
||||||
|
gitProjectsFilename = \
|
||||||
|
baseDir + '/accounts/' + nickname + '@' + domain + '/gitprojects.txt'
|
||||||
|
if not os.path.isfile(gitProjectsFilename):
|
||||||
|
return False
|
||||||
|
projectName = None
|
||||||
|
for word in subject.lower().split(' '):
|
||||||
|
if word + '\n' in open(gitProjectsFilename).read():
|
||||||
|
projectName = word
|
||||||
|
break
|
||||||
|
if not projectName:
|
||||||
|
return False
|
||||||
|
patchLines = content.split('\n')
|
||||||
|
patchFilename = None
|
||||||
|
patchDir = None
|
||||||
|
# get the subject line and turn it into a filename
|
||||||
|
for line in patchLines:
|
||||||
|
if line.startswith('Subject:'):
|
||||||
|
patchSubject = \
|
||||||
|
line.replace('Subject:','').replace('/','|').strip()
|
||||||
|
patchDir = \
|
||||||
|
baseDir + '/accounts/' + nickname + '@' + domain + \
|
||||||
|
'/patches/' + projectName
|
||||||
|
patchFilename = \
|
||||||
|
patchDir + '/' + patchSubject + '.patch'
|
||||||
|
break
|
||||||
|
if not patchFilename:
|
||||||
|
return False
|
||||||
|
patchFile = open(patchFilename, "w")
|
||||||
|
if not patchFile:
|
||||||
|
return False
|
||||||
|
patchFile.write(content)
|
||||||
|
patchFile.close()
|
||||||
|
return True
|
Loading…
Reference in New Issue