提交 6c9d1760 编写于 作者: L Leo Fang

Optimize code struct and bugfix for some:

1.functionalize items in simple-update
2.combine para of '-f' and '-c'
3.add some prompt
4.fix compare() in version_recommend
Signed-off-by: NLeo Fang <leofang_94@163.com>
上级 3bebdfab
......@@ -21,8 +21,10 @@ import subprocess
import os.path
import re
import datetime
import version_recommend
def download_source_url(spec, o_ver, n_ver):
"""
Download source file from Source or Source0 URL
......@@ -59,6 +61,52 @@ def download_upstream_url(gt, repo, n_ver):
return False
def update_check(spec, o_ver, n_ver):
"""
Requirements check for upgraded package
"""
if len(spec.patches) >= 1:
print("I'm too naive to handle complicated package.")
print("This package has multiple in-house patches.")
return False
ver_type = version_recommend.VersionType()
if(ver_type.compare(n_ver, o_ver) == 1):
return True
else:
print("Please check version of {pkg} will upgrade to, it's current version is {version}.".format(
pkg=spec.name, version=o_ver))
return False
def fork_clone_repo(gt, repo):
"""
Fork repo from src-openEuler to private repository and clone it to local
"""
if not gt.fork_repo(repo):
print("The repo of {pkg} seems to have been forked.".format(pkg=repo))
name = gt.token["user"]
subprocess.call(["git", "clone", "git@gitee.com:{user}/{pkg}".format(user=name, pkg=repo)])
os.chdir(repo)
def download_src(gt, spec, o_ver, n_ver):
"""
Download source code for upgraded package
"""
source_file = download_source_url(spec, o_ver, n_ver)
if source_file:
print(source_file)
else:
source_file = download_upstream_url(gt, spec.name, n_ver)
if source_file:
print(source_file)
else:
print("Failed to download the latest source code.")
return False
def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None):
"""
Create new spec file for upgraded package
......@@ -89,55 +137,42 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None):
fn.write("\n")
fn.close()
if __name__ == "__main__":
pars = argparse.ArgumentParser()
pars.add_argument("pkg", type=str, help="The package to be upgraded")
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("-c", "--clone", help="clone privatge repo to local", action="store_true")
pars.add_argument("-fc", "--FC", help="fork src-openeuler repo into users and clone to local", action="store_true")
pars.add_argument("-p", "--PR", help="Create upgrade PR", action="store_true")
args = pars.parse_args()
my_gitee = gitee.Gitee()
my_version = version_recommend.VersionType()
spec_string= my_gitee.get_spec(args.pkg)
s_spec = Spec.from_string(spec_string)
cur_ver = replace_macros(s_spec.version, s_spec)
if args.fork:
if not my_gitee.fork_repo(args.pkg):
print("The repo of {pkg} seems to have been forked.".format(pkg=args.pkg))
if args.clone:
user=my_gitee.token["user"]
subprocess.call(["git", "clone", "git@gitee.com:{user}/{pkg}".format(user=user, pkg=args.pkg)])
os.chdir(args.pkg)
if not args.pkg:
print("Please specify the package will upgrade.")
sys.exit(1)
user_gitee = gitee.Gitee()
spec_string = user_gitee.get_spec(args.pkg)
spec_file = Spec.from_string(spec_string)
cur_ver = replace_macros(spec_file.version, spec_file)
if args.FC:
fork_clone_repo(user_gitee, args.pkg)
if args.download or args.create_spec:
if not args.new_version:
print("Please specify the upgraded version of the {repo}".format(repo=args.pkg))
sys.exit(1)
elif not update_check(spec_file, cur_ver, args.new_version):
sys.exit(1)
if args.download:
source_file = download_source_url(s_spec, cur_ver, args.new_version)
if source_file:
print(source_file)
else:
source_file = download_upstream_url(my_gitee, args.pkg, args.new_version)
if source_file:
print(source_file)
else:
print("Failed to download the latest source code.")
sys.exit(1)
if not download_src(user_gitee, spec_file, cur_ver, args.new_version):
sys.exit(1)
if args.create_spec:
if len(s_spec.patches) >= 1:
print("I'm too naive to handle complicated package.")
print("This package has multiple in-house patches.")
sys.exit(1)
if(my_version.compare(args.new_version, cur_ver) ==1):
create_spec(args.pkg, spec_string, cur_ver, args.new_version)
else:
print("Please check version of {pkg} will upgrade to, it's current version is {version}.".format(
pkg=args.pkg, version=cur_ver))
create_spec(args.pkg, spec_string, cur_ver, args.new_version)
if args.PR:
my_gitee.create_pr(my_gitee.token["user"], args.pkg)
user_gitee.create_pr(user_gitee.token["user"], args.pkg)
......@@ -72,7 +72,7 @@ class VersionType(object):
:return 0: z1 equal then z2
:raises: None
"""
return self._compare(self, z1, z2)
return self._compare(z1, z2)
def _compare(self, z1, z2):
"""
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册