Skip to content

Instantly share code, notes, and snippets.

@marcusholmgren
Created March 16, 2012 05:34
Show Gist options
  • Save marcusholmgren/2048683 to your computer and use it in GitHub Desktop.
Save marcusholmgren/2048683 to your computer and use it in GitHub Desktop.
IronPython script that deletes files generated from MSTest results
__author__ = "Marcus Holmgren"
import sys
import clr
clr.AddReference('System')
from System import (Console, ConsoleColor, Exception)
from System.IO import (Directory, File, FileInfo, FileAttributes, SearchOption)
class Cleanup(object):
def __init__(self):
self.deleteSize = 0.0
def navigateDirs(self, dir, searchPatterns):
'''Purpose of method is to locate build folders and delete content.'''
for directory in searchPatterns:
subDirs = Directory.GetDirectories(dir, directory, SearchOption.AllDirectories)
for d in subDirs:
if Directory.Exists(d):
self.deleteDir(d)
def deleteDir(self, target_dir):
result = False
files = Directory.GetFiles(target_dir, "*.*", SearchOption.TopDirectoryOnly)
dirs = Directory.GetDirectories(target_dir)
for file in files:
File.SetAttributes(file, FileAttributes.Normal)
fi = FileInfo(file)
self.deleteSize += fi.Length
fi.Delete()
Console.Write(".")
for dir in dirs:
if Directory.Exists(dir):
self.deleteDir(dir)
try:
Directory.Delete(target_dir, False)
Console.Write(".")
return result
except Exception, ex:
Console.ForegroundColor = ConsoleColor.Red
print ex.ToString()
Console.ForegroundColor = ConsoleColor.Green
print "Failed to delete dir:", target_dir
Console.ResetColor()
if __name__ == "__main__":
root = sys.argv[1]
print 'Start in in dir: ', root
cleaner = Cleanup()
cleaner.navigateDirs(root, ["TestResults"])
cleaner.navigateDirs(root, ["bin", "obj"])
print '\n\nDeleted: %s MB' % round((cleaner.deleteSize / 1048576))
print '\nFinished with cleanup!!!'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment