__init__.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import sys
  2. import argparse
  3. from .config import Config
  4. from .util import term
  5. from .repo import Repo
  6. from . import server
  7. def update(args, config):
  8. for repo in config.repos:
  9. repo = Repo(repo)
  10. print("Repo: {}".format(repo.name))
  11. for package in repo.packages:
  12. package.update()
  13. print(" {0}: {1}".format(package.name, package.url))
  14. package.makepkg(args.force)
  15. def webserver(args, config):
  16. server.start()
  17. def main(argv):
  18. # Setup argument parser
  19. parser = argparse.ArgumentParser(
  20. prog="pacman-repo",
  21. description='A tool for automating the creation and maintenance of pacman repos')
  22. parser.add_argument(
  23. '--config', '-c',
  24. default='/etc/pacman-repo.d',
  25. help="Configuration folder path"
  26. )
  27. subparsers = parser.add_subparsers(required=True, dest='command', metavar='command')
  28. # Update command
  29. update_parser = subparsers.add_parser('update', help='Update repository')
  30. update_parser.add_argument(
  31. '--force', '-f',
  32. action="store_true",
  33. help="Force rebuild of all packages, even if they already exist"
  34. )
  35. update_parser.set_defaults(func=update)
  36. # Daemon command
  37. webserver_parser = subparsers.add_parser('webserver', help='Run as a webserver')
  38. webserver_parser.add_argument(
  39. '--weserver',
  40. action='store_true',
  41. help='Run webserver '
  42. )
  43. webserver_parser.set_defaults(func=webserver)
  44. # Handle arguments
  45. args = parser.parse_args(argv)
  46. try:
  47. config = Config(args.config)
  48. args.func(args, config)
  49. except Exception:
  50. from traceback import format_exc
  51. msg = "Error encountered:\n" + format_exc().strip()
  52. print(term().red(msg))
  53. sys.exit(1)
  54. if __name__ == '__main__':
  55. main(sys.argv[1:])