#! /usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import absolute_import, print_function

import os, sys

def nobadlink( dir ):
    files = os.listdir( dir )
    for f in files:
        f = os.path.join( dir, f )
        if os.path.isdir( f ):
            try:
                nobadlink( f )
            except OSError:
                pass
        elif os.path.islink( f ) and not os.path.exists( f ):
            print('rm', f)
            try:
                os.unlink( f )
            except OSError as e:
                print(e)


args = [ '.' ]
if len( sys.argv ) > 1:
    args = sys.argv[1:]
    if len(args) >= 1 and args[0] in ('-h', '--help'):
        print(sys.argv[0], '[directory1 [directory2 [...]]]:')
        print('recursively remove dead links in the given directories '
              '(default: current directory)')
        sys.exit(0)


for dir in args:
    nobadlink( dir )
