1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-25 17:36:13 +01:00

git_pull service osc support

This commit is contained in:
brook hong 2010-09-20 17:09:43 +08:00
parent 530d67102f
commit 02980dfdb0
2 changed files with 31 additions and 1 deletions

View File

@ -2880,7 +2880,10 @@ Please submit there instead, or use --nodevelproject to force direct submission.
# Do some magic here, when adding a url. We want that the server to download the tar ball and to verify it
for arg in parseargs(args):
if arg.startswith('http://') or arg.startswith('https://') or arg.startswith('ftp://'):
addDownloadUrlService(arg)
if arg.endswith('.git'):
addGitSource(arg)
else:
addDownloadUrlService(arg)
else:
addFiles([arg])

View File

@ -301,6 +301,12 @@ class Serviceinfo:
r.append( s )
return r
def addGitUrl(self, serviceinfo_node, url_string):
r = serviceinfo_node
s = ET.Element( "service", name="git_pull" )
ET.SubElement(s, "param", name="url").text = url_string
r.append( s )
return r
def execute(self, dir):
import tempfile
@ -5169,6 +5175,27 @@ def stripETxml(node):
for child in node.getchildren():
stripETxml(child)
def addGitSource(url):
service_file = os.path.join(os.getcwd(), '_service')
addfile = False
if os.path.exists( service_file ):
services = ET.parse(os.path.join(os.getcwd(), '_service')).getroot()
else:
services = ET.fromstring("<services />")
addfile = True
stripETxml( services )
si = Serviceinfo()
s = si.addGitUrl(services, url)
si.read(s)
# for pretty output
reparsed = minidom.parseString(ET.tostring(s))
f = open(service_file, 'wb')
f.write(reparsed.toprettyxml(indent=" "))
f.close()
if addfile:
addFiles( ['_service'] )
def addDownloadUrlService(url):
service_file = os.path.join(os.getcwd(), '_service')
addfile = False