Browse Source

add gitee repo

fix error
liuyuqi-dellpc 2 years ago
parent
commit
c5d2be57a8
3 changed files with 74 additions and 10 deletions
  1. 51 0
      repo_sync/gitee_repo.py
  2. 12 4
      repo_sync/github_repo.py
  3. 11 6
      repo_sync/sync_utils.py

+ 51 - 0
repo_sync/gitee_repo.py

@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@Contact :   liuyuqi.gov@msn.cn
+@Time    :   2023/04/27 05:12:59
+@License :   Copyright © 2017-2022 liuyuqi. All Rights Reserved.
+@Desc    :   gitee repo
+'''
+
+from repo_sync.base_repo import BaseRepo
+import logging
+import os
+import yaml
+
+class GiteeRepo(BaseRepo):
+    
+    def __init__(self, user_name, repo_name, logger : logging.Logger):
+        super(GiteeRepo, self).__init__(user_name, repo_name,logger)
+        self.repos=None
+
+    def sync(self):
+        ''' sync repo
+        '''
+        # read conf/config.yml
+        with open("conf/config.yml", "r") as f:
+            config = yaml.load(f, Loader=yaml.FullLoader)
+        # get github token
+        zUser = config["zhizhou"]["user"]
+        if zUser == self.user_name:
+            self.repo_url = "https://gitee.com"+"/"+config["gitee"]["user"]+"/"+self.repo_name+".git"
+            self.logger.info("sync repo: %s", self.repo_name)
+            self.sess.headers={
+                "Authorization": "token "+config["gitee"]["token"],
+            }
+            if self.repos==None:
+                res = self.sess.get("https://api.gitee.com/user/repos")
+                if res.status_code != 200:
+                    self.logger.error("get gitee repo list failed, status_code: %s, please check the token.", res.status_code)
+                    return
+                self.repos = res.json()
+            # if repo is not exist, create it
+            if self.repo_name not in [repo["name"] for repo in self.repos]:
+                self.logger.info("create repo: %s", self.repo_name)
+                self.sess.post("https://api.gitee.com/user/repos", json={"name": self.repo_name})
+            # git push it
+            os.chdir(self.user_name+"/"+self.repo_name)
+            os.system("git remote add origin2 "+self.repo_url)
+            os.system("git push -u origin2 master")
+            os.chdir("../..")
+        else:
+            self.logger.info("not sync repo: %s", self.repo_name)

+ 12 - 4
repo_sync/github_repo.py

@@ -19,7 +19,8 @@ class GitHubRepo(BaseRepo):
     '''
     def __init__(self, user_name, repo_name, logger : logging.Logger):
         super(GitHubRepo, self).__init__(user_name, repo_name,logger)
-        
+        self.repos=None
+
     def sync(self):
         '''
         sync repo
@@ -36,12 +37,19 @@ class GitHubRepo(BaseRepo):
                 "Authorization": "token "+config["github"]["token"],
             }
             if self.repos==None:
-                self.repos = self.sess.get("https://api.github.com/user/repos").json()
+                res = self.sess.get("https://api.github.com/user/repos")
+                if res.status_code != 200:
+                    self.logger.error("get github repo list failed, status_code: %s, please check the token.", res.status_code)
+                    return
+                self.repos = res.json()
             # if repo is not exist, create it
             if self.repo_name not in [repo["name"] for repo in self.repos]:
                 self.logger.info("create repo: %s", self.repo_name)
                 self.sess.post("https://api.github.com/user/repos", json={"name": self.repo_name})
-
-            os.system("git push %s %s" % (self.repo_url, self.repo_path))
+            # git push it
+            os.chdir(self.user_name+"/"+self.repo_name)
+            os.system("git remote add origin2 "+self.repo_url)
+            os.system("git push -u origin2 master")
+            os.chdir("../..")
         else:
             self.logger.info("not sync repo: %s", self.repo_name)

+ 11 - 6
repo_sync/sync_utils.py

@@ -12,9 +12,11 @@ import time
 import json
 import logging
 import argparse
+from repo_sync.base_repo import BaseRepo
+from repo_sync.gitlab_repo import GitlabRepo
 from repo_sync.coding_repo import CodingRepo
 from repo_sync.github_repo import GitHubRepo
-from repo_sync.github_repo import Coding
+from repo_sync.gitee_repo import GiteeRepo
 
 class SyncUtils:
     '''
@@ -31,7 +33,7 @@ class SyncUtils:
         run repo
         '''
         repos= []
-        with open("repos.text", "r") as f:
+        with open("data/repo.txt", "r") as f:
             repos = f.readlines()
         for repo in repos:
             repo_name = repo.split("/")[-1].replace(".git","")
@@ -41,21 +43,24 @@ class SyncUtils:
 
             if not os.path.exists(os.path.join(user_name,repo_name)):
                 self.logger.info("clone repo: %s", repo_name)
-                os.system("git clone %s" % repo_name)
+                os.system("git clone %s %s" % (repo.strip(), os.path.join(user_name,repo_name)))
 
-            self.logger.info("sync repo: %s", repo_name)
-            repoModel = None
+            repoModel:BaseRepo = None
             if self.args.type == "github":
                 repoModel = GitHubRepo(user_name, repo_name, self.logger)
             elif self.args.type == "coding":
                 repoModel = CodingRepo(user_name, repo_name)
+            elif self.args.type == "gitlab":
+                repoModel = GitlabRepo(user_name, repo_name)
+            elif self.args.type == "gitee":
+                repoModel = GiteeRepo(user_name, repo_name)
             repoModel.sync()
 
     def init_logger(self, debug:bool):
         '''
         init logger
         '''
-        self.logger = logging.getLogger(self.repo_name)
+        self.logger = logging.getLogger(__name__)
         if debug:
             self.logger.setLevel(logging.DEBUG)
         else: