diff --git a/core/package_manager.py b/core/package_manager.py index 48334809964428e687a0ca5ecdc39ded9c318e26..3f136b8ed0f3ef008f7a00188c7e66361037d6d0 100755 --- a/core/package_manager.py +++ b/core/package_manager.py @@ -326,6 +326,7 @@ class OBSPkgManager(object): """ obs project package add, delete, modify, check """ + self._copy_packages() if self.kwargs["check_flag"]: self._check_obs_pkg() self._pre_env() @@ -462,6 +463,40 @@ class OBSPkgManager(object): yaml_dict, meta_bp_dict, pkg_branch_dict = self._pre_data() self._check_yaml_meta_pkg(yaml_dict, meta_bp_dict, pkg_branch_dict) + def _copy_package(self, pkg, from_path, to_path): + """ + copy package from from_path to to_path + from_path: path of package that will be copied + to_path: path fo package that will go + """ + if self.kwargs["branch"] == "master": + cmd = "cp -r %s/%s %s && sed -i 's/openEuler/%s/g' %s/%s/_service" % \ + (from_path, pkg, to_path, self.kwargs["branch2"], to_path, pkg) + else: + cmd = "cp -r %s/%s %s && sed -i 's/%s/%s/g' %s/%s/_service" % \ + (from_path, pkg, to_path, self.kwargs["branch"], \ + self.kwargs["branch2"], to_path, pkg) + ret = os.popen(cmd).read() + log.debug(ret) + + def _copy_packages(self): + """ + copy some packages from obs project A to project B + """ + if self.kwargs["branch2"] and self.kwargs["project2"]: + os.chdir(self.kwargs["obs_meta_path"]) + from_path = os.path.join(self.kwargs["branch"], self.kwargs["project"]) + to_path = os.path.join(self.kwargs["branch2"], self.kwargs["project2"]) + pkgs = self.kwargs["pkglist"] + if not pkgs: + pkgs = os.listdir(from_path) + for pkg in pkgs: + self._copy_package(pkg, from_path, to_path) + cmd = "git add %s && git commit -m 'add pkgs to project %s' && git push" % \ + (to_path, self.kwargs["project2"]) + ret = os.popen(cmd).read() + log.debug(ret) + if __name__ == "__main__": kw = {"gitee_user":sys.argv[1], "gitee_pwd":sys.argv[2], "obs_meta_path":sys.argv[3], "check_flag":1} diff --git a/openeuler_obs.py b/openeuler_obs.py index 547239fc6a50ea7e8cda333b3d53dacab87c7f39..bdb5bd651ed12b5066f3f654dabc2404158b63f5 100644 --- a/openeuler_obs.py +++ b/openeuler_obs.py @@ -32,8 +32,12 @@ par.add_argument("-r", "--repository", help="gitee repository name", required=True) par.add_argument("-b", "--branch", default="master", help="gitee repository branch name", required=False) +par.add_argument("-b2", "--branch2", default=None, + help="gitee repository branch name, cp some packages to this branch", required=False) par.add_argument("-p", "--project", default=None, help="obs project name", required=False) +par.add_argument("-p2", "--project2", default=None, + help="obs project name, cp some packages to this project", required=False) par.add_argument("-ip", "--source_server_ip", default=None, help="ip of obs source server machine", required=False) par.add_argument("-sport", "--source_server_port", default=None, @@ -48,21 +52,26 @@ par.add_argument("-gpwd", "--gitee_pwd", default=None, help="password of gitee", required=False) par.add_argument("-c", "--check", default=False, help="check obs package", required=False) -args = par.parse_args() +par.add_argument("--pkglist", default=None, nargs='+', + help="packages list, connect everyone by espace", required=False) +args = par.parse_args() #apply kw = { "obs_meta_path": args.obs, "repository": args.repository, "branch": args.branch, + "branch2": args.branch2, "project": args.project, + "project2": args.project2, "source_server_ip": args.source_server_ip, "source_server_port": args.source_server_port, "source_server_user": args.source_server_user, "source_server_pwd": args.source_server_pwd, "gitee_user": args.gitee_user, "gitee_pwd": args.gitee_pwd, - "check_flag": args.check + "check_flag": args.check, + "pkglist": args.pkglist } log.info(kw) run = Runner(**kw)