crt.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """
  2. CPM Repositories Tool
  3. Вспомогательная утилита для управления репозиториями cpm 1.6
  4. """
  5. from cpm import Console, Router, Package, load_config, log, save_config
  6. import sys
  7. import requests
  8. class CpmRouterTool(Console):
  9. '''Вспомогательный класс для управления списом репозиториев.'''
  10. def __init__(self):
  11. super(CpmRouterTool, self).__init__()
  12. self.command(self.info, ["info", "i"],
  13. "информация о настройках и источниках")
  14. self.command(self.remove, ["remove", "rm", "r"],
  15. "[targets] удалить источники из списка")
  16. self.command(self.add, ["add", "a"],
  17. "[name url] добавить источник в список")
  18. def info(self, ctx):
  19. '''выводит информацию о настройках и источниках.'''
  20. config = load_config()
  21. Package('example', config["params"]).print_params()
  22. print(f'\nrepositores ({len(config["repositories"])}):')
  23. for k, v in config['repositories'].items():
  24. print()
  25. Router(f"cpm/{k}.toml").info()
  26. def remove(self, ctx):
  27. '''Удаляет источники из списка'''
  28. config = load_config()
  29. for x in ctx:
  30. if x not in config["repositories"]:
  31. log(f"{x} нет в списке источников", 'e')
  32. continue
  33. del config["repositories"][x]
  34. log(f"{x} удалёно из списка источников")
  35. save_config(config)
  36. def add(self, ctx):
  37. '''Добавляет источник в список'''
  38. config = load_config()
  39. if len(ctx.args) < 2:
  40. log(f"*.py add [NAME] [URL]")
  41. return False
  42. try:
  43. r = requests.get(ctx.args[1]+"/router.toml")
  44. except Exception as e:
  45. log(e, 'e')
  46. else:
  47. if r.status_code != 200:
  48. log(f"{r.status_code}: {ctx.args[1]}")
  49. return False
  50. config["repositories"][ctx.args[0]] = {
  51. "url": ctx.args[1], "last_update": 0}
  52. save_config(config)
  53. if __name__ == '__main__':
  54. CpmRouterTool().process(sys.argv[1:])