提交 98955a21 编写于 作者: S Shinwell Hu

alpha version of simple-update-robot

上级 bec7a0f2
...@@ -5,24 +5,59 @@ This is a simple script to query that contact person for specific package ...@@ -5,24 +5,59 @@ This is a simple script to query that contact person for specific package
import urllib import urllib
import urllib.request import urllib.request
import urllib.parse
import urllib.error
import argparse import argparse
import yaml import yaml
import re import re
import os.path import os.path
import json import json
import pprint
class Gitee: class Gitee:
def __init__(self): def __init__(self):
self.secret = open(os.path.expanduser("~/.gitee_token.json"), "r") self.secret = open(os.path.expanduser("~/.gitee_personal_token.json"), "r")
self.token = json.load(self.secret) self.token = json.load(self.secret)
self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW 64; rv:23.0) Gecko/20100101 Firefox/23.0'} self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW 64; rv:50.0) Gecko/20100101 Firefox/50.0'}
self.specfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{specfile}" self.specfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{specfile}"
self.yamlfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{package}.yaml" self.yamlfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{package}.yaml"
self.advisor_url_template = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/upstream-info/{package}.yaml" self.advisor_url_template = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/upstream-info/{package}.yaml"
self.specfile_exception_url = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/helper/specfile_exceptions.yaml" self.specfile_exception_url = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/helper/specfile_exceptions.yaml"
def post_gitee(self, url, values, headers = None):
if headers == None:
headers = self.headers.copy()
data = urllib.parse.urlencode(values).encode('utf-8')
req = urllib.request.Request(url = url, data = data, headers=headers, method="POST")
try:
u = urllib.request.urlopen(req)
except urllib.error.HTTPError as err:
print("WARNING:"+str(err.code))
print("WARNING:"+str(err.headers))
return u.read().decode("utf-8")
def fork_repo(self, repo):
url = "https://gitee.com/api/v5/repos/src-openeuler/{repo}/forks".format(repo=repo)
values = {}
values["access_token"] = self.token["access_token"]
# headers["User-Agent"] = "curl/7.66.0"
#headers["Content-Type"] = "application/json;charset=UTF-8"
#headers["HOST"] = "gitee.com"
#headers["Accept"] = "*/*"
return self.post_gitee(url, values)
def create_pr(self, head, repo):
url = "https://gitee.com/api/v5/repos/src-openeuler/{repo}/pulls".format(repo=repo)
values = {}
values["access_token"] = self.token["access_token"]
values["title"] = "Upgrade to latest version of {repo}".format(repo=repo)
values["head"] = "{head}:master".format(head=head)
values["base"] = "master"
values["body"] = "This is a automatically created PR from openEuler-Advisor"
return self.post_gitee(url, values)
def get_gitee(self, url, headers=None): def get_gitee(self, url, headers=None):
if headers == None: if headers == None:
req = urllib.request.Request(url=url, headers=self.headers) req = urllib.request.Request(url=url, headers=self.headers)
...@@ -32,7 +67,10 @@ class Gitee: ...@@ -32,7 +67,10 @@ class Gitee:
return u.read().decode("utf-8") return u.read().decode("utf-8")
def get_gitee_json(self, url): def get_gitee_json(self, url):
resp = self.get_gitee(url) #headers = self.headers.copy()
headers = {}
headers["Content-Type"] = "application/json;charset=UTF-8"
resp = self.get_gitee(url, headers)
return json.loads(resp) return json.loads(resp)
def get_spec_exception(self): def get_spec_exception(self):
...@@ -65,6 +103,22 @@ class Gitee: ...@@ -65,6 +103,22 @@ class Gitee:
else: else:
return False return False
class Advisor:
def __init__(self):
self.gitee = Gitee()
"""
def new_issue(owner, repo, title, body):
@param["access_token"] = @token["access_token"]
@param["repo"] = repo
@param["title"] = title
@param["body"] = body
@cmd += " 'https://gitee.com/api/v5/repos/#{owner}/issues'"
@cmd += " -d '" + @param.to_json + "'"
#puts @cmd
resp = %x[#{@cmd}]
#puts resp
"""
class openEuler_TC: class openEuler_TC:
def __init__(self): def __init__(self):
...@@ -104,3 +158,4 @@ if __name__ == "__main__": ...@@ -104,3 +158,4 @@ if __name__ == "__main__":
print("\n") print("\n")
...@@ -53,7 +53,7 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): ...@@ -53,7 +53,7 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None):
in_changelog = False in_changelog = False
for l in spec_str.splitlines(): for l in spec_str.splitlines():
if l.startswith("Release:"): if l.startswith("Release:"):
fn.write("Release:\t\t0\n") fn.write("Release:\t0\n")
continue continue
if l.startswith("Source:") or l.startswith("Source0:"): if l.startswith("Source:") or l.startswith("Source0:"):
if src_fn: if src_fn:
...@@ -80,6 +80,10 @@ if __name__ == "__main__": ...@@ -80,6 +80,10 @@ if __name__ == "__main__":
pars.add_argument("pkg", type=str, help="The package to be upgraded") pars.add_argument("pkg", type=str, help="The package to be upgraded")
pars.add_argument("-o", "--old_version", type=str, help="Current upstream version of package") pars.add_argument("-o", "--old_version", type=str, help="Current upstream version of package")
pars.add_argument("-n", "--new_version", type=str, help="New upstream version of package will be upgrade to") pars.add_argument("-n", "--new_version", type=str, help="New upstream version of package will be upgrade to")
pars.add_argument("-s", "--create_spec", help="Create spec file", action="store_true")
pars.add_argument("-d", "--download", help="Download upstream source code", action="store_true")
pars.add_argument("-f", "--fork", help="fork src-openeuler repo into users", action="store_true")
pars.add_argument("-p", "--PR", help="Create upgrade PR", action="store_true")
args = pars.parse_args() args = pars.parse_args()
gt = gitee.Gitee() gt = gitee.Gitee()
...@@ -91,19 +95,23 @@ if __name__ == "__main__": ...@@ -91,19 +95,23 @@ if __name__ == "__main__":
print("This package has multiple in-house patches.") print("This package has multiple in-house patches.")
sys.exit(1) sys.exit(1)
source_file = download_source_url(spec, args.old_version, args.new_version) if args.download:
if source_file: source_file = download_source_url(spec, args.old_version, args.new_version)
print(source_file)
else:
source_file = download_upstream_url(gt, args.pkg, args.old_version, args.new_version)
if source_file: if source_file:
print(source_file) print(source_file)
else: else:
print("Failed to download the latest source code.") source_file = download_upstream_url(gt, args.pkg, args.old_version, args.new_version)
sys.exit(1) if source_file:
print(source_file)
else:
print("Failed to download the latest source code.")
sys.exit(1)
create_spec(args.pkg, spec_string, args.old_version, args.new_version) if args.create_spec:
create_spec(args.pkg, spec_string, args.old_version, args.new_version)
""" if args.fork:
gt.fork_repo(args.pkg)
""" if args.PR:
gt.create_pr("shinwell_hu", args.pkg)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册