sync_utils.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. '''
  4. @Contact : liuyuqi.gov@msn.cn
  5. @Time : 2023/04/27 03:09:58
  6. @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved.
  7. @Desc : sync utils
  8. '''
  9. import os
  10. import sys
  11. import time
  12. import json
  13. import logging
  14. import argparse
  15. from repo_sync.coding_repo import CodingRepo
  16. from repo_sync.github_repo import GitHubRepo
  17. from repo_sync.github_repo import Coding
  18. class SyncUtils:
  19. '''
  20. SyncUtils class
  21. '''
  22. def __init__(self, debug=False):
  23. self.args = None
  24. self.logger = None
  25. self.init_logger(debug)
  26. self.init_args()
  27. def run(self):
  28. '''
  29. run repo
  30. '''
  31. repos= []
  32. with open("repos.text", "r") as f:
  33. repos = f.readlines()
  34. for repo in repos:
  35. repo_name = repo.split("/")[-1].replace(".git","")
  36. user_name=repo.split("/")[-2]
  37. if not os.path.exists(user_name):
  38. os.mkdir(user_name)
  39. if not os.path.exists(os.path.join(user_name,repo_name)):
  40. self.logger.info("clone repo: %s", repo_name)
  41. os.system("git clone %s" % repo_name)
  42. self.logger.info("sync repo: %s", repo_name)
  43. repoModel = None
  44. if self.args.type == "github":
  45. repoModel = GitHubRepo(user_name, repo_name, self.logger)
  46. elif self.args.type == "coding":
  47. repoModel = CodingRepo(user_name, repo_name)
  48. repoModel.sync()
  49. def init_logger(self, debug:bool):
  50. '''
  51. init logger
  52. '''
  53. self.logger = logging.getLogger(self.repo_name)
  54. if debug:
  55. self.logger.setLevel(logging.DEBUG)
  56. else:
  57. self.logger.setLevel(logging.INFO)
  58. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  59. console_handler = logging.StreamHandler()
  60. console_handler.setLevel(logging.DEBUG)
  61. console_handler.setFormatter(formatter)
  62. self.logger.addHandler(console_handler)
  63. def init_args(self):
  64. '''
  65. init args
  66. '''
  67. parser = argparse.ArgumentParser()
  68. parser.add_argument('-d', '--debug', action='store_true', help='debug mode')
  69. parser.add_argument('-type', '--type', action='store_true',default="github", help='github,gitlab,gitee,coding')
  70. parser.add_argument('-repo', '--repository', action='store_true', default="github", help='run repo')
  71. self.args = parser.parse_args()