mirror of https://gitlab.com/bashrc2/epicyon
Convert posts to Commit type if they contain patches
parent
fd9fd5e49e
commit
e1951b0bad
57
git.py
57
git.py
|
@ -42,7 +42,8 @@ def getGitProjectName(baseDir: str, nickname: str, domain: str,
|
||||||
|
|
||||||
def isGitPatch(baseDir: str, nickname: str, domain: str,
|
def isGitPatch(baseDir: str, nickname: str, domain: str,
|
||||||
messageType: str,
|
messageType: str,
|
||||||
subject: str, content: str) -> bool:
|
subject: str, content: str,
|
||||||
|
checkProjectName=True) -> bool:
|
||||||
"""Is the given post content a git patch?
|
"""Is the given post content a git patch?
|
||||||
"""
|
"""
|
||||||
if messageType != 'Note' and \
|
if messageType != 'Note' and \
|
||||||
|
@ -57,6 +58,8 @@ def isGitPatch(baseDir: str, nickname: str, domain: str,
|
||||||
return False
|
return False
|
||||||
if 'diff ' not in content:
|
if 'diff ' not in content:
|
||||||
return False
|
return False
|
||||||
|
if 'From ' not in content:
|
||||||
|
return False
|
||||||
if 'From:' not in content:
|
if 'From:' not in content:
|
||||||
return False
|
return False
|
||||||
if 'Date:' not in content:
|
if 'Date:' not in content:
|
||||||
|
@ -66,11 +69,11 @@ def isGitPatch(baseDir: str, nickname: str, domain: str,
|
||||||
if '<br>' not in content:
|
if '<br>' not in content:
|
||||||
if '<br />' not in content:
|
if '<br />' not in content:
|
||||||
return False
|
return False
|
||||||
projectName = \
|
if checkProjectName:
|
||||||
getGitProjectName(baseDir, nickname, domain,
|
projectName = \
|
||||||
subject)
|
getGitProjectName(baseDir, nickname, domain, subject)
|
||||||
if not projectName:
|
if not projectName:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,6 +91,48 @@ def getGitHash(patchStr: str) -> str:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def convertPostToCommit(baseDir: str, nickname: str, domain: str,
|
||||||
|
postJsonObject: {}) -> bool:
|
||||||
|
"""Detects whether the given post contains a patch
|
||||||
|
and if so then converts it to a Commit ActivityPub type
|
||||||
|
"""
|
||||||
|
if not postJsonObject.get('object'):
|
||||||
|
return False
|
||||||
|
if not isinstance(postJsonObject['object'], dict):
|
||||||
|
return False
|
||||||
|
if not postJsonObject['object'].get('type'):
|
||||||
|
return False
|
||||||
|
if postJsonObject['object']['type'] == 'Commit':
|
||||||
|
return True
|
||||||
|
if not postJsonObject['object'].get('summary'):
|
||||||
|
return False
|
||||||
|
if not postJsonObject['object'].get('content'):
|
||||||
|
return False
|
||||||
|
if not postJsonObject['object'].get('attributedTo'):
|
||||||
|
return False
|
||||||
|
if not isGitPatch(baseDir, nickname, domain,
|
||||||
|
postJsonObject['object']['type'],
|
||||||
|
postJsonObject['object']['summary'],
|
||||||
|
postJsonObject['object']['content'],
|
||||||
|
False):
|
||||||
|
return False
|
||||||
|
postJsonObject['object']['type'] = 'Commit'
|
||||||
|
# add a commitedBy parameter
|
||||||
|
if not postJsonObject['object'].get('committedBy'):
|
||||||
|
postJsonObject['object']['committedBy'] = \
|
||||||
|
postJsonObject['object']['attributedTo']
|
||||||
|
patchStr = gitFormatContent(postJsonObject['object']['content'])
|
||||||
|
commitHash = getGitHash(patchStr)
|
||||||
|
if commitHash:
|
||||||
|
postJsonObject['object']['hash'] = commitHash
|
||||||
|
postJsonObject['object']['description'] = {
|
||||||
|
"mediaType": "text/plain",
|
||||||
|
"content": patchStr
|
||||||
|
}
|
||||||
|
print('Converted post to Commit type')
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def gitAddFromHandle(patchStr: str, handle: str) -> str:
|
def gitAddFromHandle(patchStr: str, handle: str) -> str:
|
||||||
"""Adds the activitypub handle of the sender to the patch
|
"""Adds the activitypub handle of the sender to the patch
|
||||||
"""
|
"""
|
||||||
|
|
5
posts.py
5
posts.py
|
@ -49,6 +49,7 @@ from auth import createBasicAuthHeader
|
||||||
from config import getConfigParam
|
from config import getConfigParam
|
||||||
from blocking import isBlocked
|
from blocking import isBlocked
|
||||||
from filters import isFiltered
|
from filters import isFiltered
|
||||||
|
from git import convertPostToCommit
|
||||||
# try:
|
# try:
|
||||||
# from BeautifulSoup import BeautifulSoup
|
# from BeautifulSoup import BeautifulSoup
|
||||||
# except ImportError:
|
# except ImportError:
|
||||||
|
@ -795,6 +796,10 @@ def createPostBase(baseDir: str, nickname: str, domain: str, port: int,
|
||||||
modFile.write(newPostId + '\n')
|
modFile.write(newPostId + '\n')
|
||||||
modFile.close()
|
modFile.close()
|
||||||
|
|
||||||
|
# If a commit has been posted - i.e. the output from
|
||||||
|
# git format-patch - then convert the activitypub type
|
||||||
|
convertPostToCommit(baseDir, nickname, domain, newPost)
|
||||||
|
|
||||||
if schedulePost:
|
if schedulePost:
|
||||||
if eventDate and eventTime:
|
if eventDate and eventTime:
|
||||||
# add an item to the scheduled post index file
|
# add an item to the scheduled post index file
|
||||||
|
|
Loading…
Reference in New Issue