#!/usr/bin/env python
# -*- python -*-

import sys
import optparse

from ids.users import get_irods_group_membership
from ids.users import synchronize_user_db



if __name__ == '__main__':

    parser = optparse.OptionParser()
    parser.add_option('--remove', '-r', action='store_true',
                      dest='remove', default=False,
                      help='remove users and groups that do not exist in the incf zone')
    parser.add_option('--verbose', '-v', action='store_true',
                      dest="verbose", default=False,
                      help='print progress messages')
    options, args = parser.parse_args()


    print('Getting list of users from \'incf\' zone...')
    ids_groups = get_irods_group_membership('incf')
    if ids_groups == None:
        sys.exit(1)
    if options.verbose:
        for group in ids_groups:
            print('IDS group %s:' % (group,))
            for user in ids_groups[group]:
                print('\t%s' % (user,))


    print('Getting list of users from the local zone...')
    local_groups = get_irods_group_membership(None)
    if local_groups == None:
        sys.exit(1)
    if options.verbose:
        for group in local_groups:
            print('Local group %s:' % (group,))
            for user in local_groups[group]:
                print('\t%s' % (user,))


    print('Synchronizing local zone user DB with \'incf\' zone user DB...')
    rc = synchronize_user_db(ids_groups, local_groups,
                             remove=options.remove, verbose=options.verbose)
    if rc == None:
        sys.exit(1)

    
    sys.exit(0)
