aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/pull/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'pull/main.py')
-rw-r--r--pull/main.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/pull/main.py b/pull/main.py
new file mode 100644
index 0000000..d111da7
--- /dev/null
+++ b/pull/main.py
@@ -0,0 +1,67 @@
+from argparse import ArgumentParser
+import logging
+import sys
+
+from pull.cgit import CGit, Output
+from pull.my_repos import MY_REPOS
+
+
+DEFAULT_OUTPUT_DIR = 'output'
+
+DEFAULT_CGIT_CLONE_USER = 'egor'
+DEFAULT_CGIT_CLONE_HOST = 'tensin-ext1.home'
+DEFAULT_CGIT_CLONE_PORT = 8080
+
+
+def set_up_logging():
+ logging.basicConfig(
+ level=logging.DEBUG,
+ datefmt='%Y-%m-%d %H:%M:%S',
+ format='%(asctime)s | %(levelname)s | %(message)s')
+
+
+def parse_args(argv=None):
+ if argv is None:
+ argv = sys.argv[1:]
+ parser = ArgumentParser()
+ parser.add_argument('--output', metavar='PATH',
+ default=DEFAULT_OUTPUT_DIR,
+ help='output directory path')
+ parser.add_argument('--cgit-user', metavar='USERNAME',
+ default=DEFAULT_CGIT_CLONE_USER,
+ help='cgit clone username')
+ parser.add_argument('--cgit-host', metavar='HOST',
+ default=DEFAULT_CGIT_CLONE_HOST,
+ help='cgit clone host')
+ parser.add_argument('--cgit-port', metavar='PORT', type=int,
+ default=DEFAULT_CGIT_CLONE_PORT,
+ help='cgit clone port number')
+ parser.add_argument('--repo', metavar='REPO_ID', nargs='*', dest='repos',
+ help='repos to pull')
+ return parser.parse_args(argv)
+
+
+def main(args=None):
+ set_up_logging()
+ try:
+ args = parse_args(args)
+ cgit = CGit(args.cgit_user, args.cgit_host, args.cgit_port)
+ output = Output(args.output, cgit)
+ success = True
+ for repo in MY_REPOS:
+ if args.repos is None or repo.repo_id in args.repos:
+ if not output.pull(repo):
+ success = False
+ if success:
+ logging.info('All repositories were updated successfully')
+ return 0
+ else:
+ logging.warning("Some repositories couldn't be updated!")
+ return 1
+ except Exception as e:
+ logging.exception(e)
+ raise
+
+
+if __name__ == '__main__':
+ sys.exit(main())