summaryrefslogtreecommitdiff
path: root/sync-repo-config.py
diff options
context:
space:
mode:
Diffstat (limited to 'sync-repo-config.py')
-rwxr-xr-xsync-repo-config.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/sync-repo-config.py b/sync-repo-config.py
new file mode 100755
index 0000000..b706e02
--- /dev/null
+++ b/sync-repo-config.py
@@ -0,0 +1,55 @@
1#!/usr/bin/env python
2# vim: set filencoding=utf8
3"""
4Mercurial Shared SSH Repository Metadat Sync
5
6@author: Mike Crute (mcrute@gmail.com)
7@organization: SoftGroup Hosting
8@date: February 23, 2011
9"""
10
11import repolib
12
13
14def sync_repository_config(repos, users, log):
15 for repo in repos:
16 if repo.exists:
17 log.info("Writing hgrc for %r", repo.path)
18 repo.write_hgrc(users)
19 else:
20 log.warn("Non-existent repo %r", repo.path)
21
22
23def sync_ssh_config(auth_keys_filename, users, log):
24 with open(auth_keys_filename, 'w') as auth_keys:
25 log.info("Writing %r", auth_keys_filename)
26
27 for user in users:
28 log.info("Writing user '%s'", user)
29 auth_keys.write(user.ssh_line)
30
31
32def main(argv):
33 log = repolib.get_logger('sync-repo-config')
34
35 try:
36 cfg_file = argv[-1] if argv else "/etc/hgssh.cfg"
37 cfg = repolib.ConfigLoader(cfg_file)
38 except IOError:
39 log.error("Config file %r doesn't exist", cfg_file)
40 return 1
41
42 sync_repository_config(cfg.repos, cfg.user_dict, log)
43
44 try:
45 sync_ssh_config(cfg.repo_user_authorized_keys, cfg.users, log)
46 except ValueError, exc:
47 log.error("%s", exc)
48 return 1
49
50 return 0
51
52
53if __name__ == "__main__":
54 import sys
55 sys.exit(main(sys.argv[1:]))