"""Remove computer generated garbage such as

   *.py~
   *.pyc
   *.o   
   *.so
   *.dll

Note: Recompile ANUGA after running this script
"""

import os


extensions_to_delete = ['~',
                        '.pyc',       # Python
                        '.o', '.so', '.dll',  # C
                        '.aux', '.ps',        # LaTeX
                        '.sww',
                        '.stdout']
                        
                      
# Data files (may be recovered from repository with svn up)
extensions_to_delete += ['.tms',
                         #'.tsh',
                         '.msh',
                         '.pts',
                         '.xml',
                         '.png']


filenames_to_delete = []    
for dirpath, dirnames, filenames in os.walk('.'):

    print 'Searching dir', dirpath
   
    if '.svn' in dirnames:
        dirnames.remove('.svn')  # don't visit SVN directories


    for filename in filenames:
        for ext in extensions_to_delete:
            if filename.endswith(ext):
                absname = os.path.join(dirpath, filename)
                print '  Flagged for deletion', absname
                filenames_to_delete.append(absname)    


print 
N = len(filenames_to_delete)             
if N > 0:
    msg = '%d files flagged for deletion. Proceed? (Y/N)[N]' %N
    answer = raw_input(msg)
    
    if answer.lower() == 'y':
        for filename in filenames_to_delete:
            print 'Deleting', filename
            os.remove(filename)
            
        print 'You may wish to run "svn up" to recover important data files'    
    else:
        print 'Nothing deleted'
else:
    print 'No files flagged for deletion'            



