enable rosclean on Windows (#198)
* enable rosclean on Windows * Fix indent error. * convert long to string for get_human_readable_disk_usage() * On Windows, get disk usage by walking the tree * use rd /s /q to remove directory on Windows (#19)
This commit is contained in:
parent
23b39a8b64
commit
40c44bcb5f
|
@ -111,6 +111,14 @@ def _rosclean_cmd_check(args):
|
||||||
desc = get_human_readable_disk_usage(d)
|
desc = get_human_readable_disk_usage(d)
|
||||||
print("%s %s"%(desc, label))
|
print("%s %s"%(desc, label))
|
||||||
|
|
||||||
|
def _get_disk_usage_by_walking_tree(d):
|
||||||
|
total_size = 0
|
||||||
|
for dirpath, dirnames, filenames in os.walk(d):
|
||||||
|
for f in filenames:
|
||||||
|
fp = os.path.join(dirpath, f)
|
||||||
|
total_size += os.path.getsize(fp)
|
||||||
|
return total_size
|
||||||
|
|
||||||
def get_human_readable_disk_usage(d):
|
def get_human_readable_disk_usage(d):
|
||||||
"""
|
"""
|
||||||
Get human-readable disk usage for directory
|
Get human-readable disk usage for directory
|
||||||
|
@ -124,6 +132,9 @@ def get_human_readable_disk_usage(d):
|
||||||
return subprocess.Popen(['du', '-sh', d], stdout=subprocess.PIPE).communicate()[0].split()[0]
|
return subprocess.Popen(['du', '-sh', d], stdout=subprocess.PIPE).communicate()[0].split()[0]
|
||||||
except:
|
except:
|
||||||
raise CleanupException("rosclean is not supported on this platform")
|
raise CleanupException("rosclean is not supported on this platform")
|
||||||
|
elif platform.system() == 'Windows':
|
||||||
|
total_size = _get_disk_usage_by_walking_tree(d)
|
||||||
|
return "Total Size: " + str(total_size) + " " + d
|
||||||
else:
|
else:
|
||||||
raise CleanupException("rosclean is not supported on this platform")
|
raise CleanupException("rosclean is not supported on this platform")
|
||||||
|
|
||||||
|
@ -134,6 +145,9 @@ def get_disk_usage(d):
|
||||||
:returns: disk usage in bytes (du -b) or (du -A) * 1024, ``int``
|
:returns: disk usage in bytes (du -b) or (du -A) * 1024, ``int``
|
||||||
:raises: :exc:`CleanupException` If get_disk_usage() cannot be used on this platform
|
:raises: :exc:`CleanupException` If get_disk_usage() cannot be used on this platform
|
||||||
"""
|
"""
|
||||||
|
if platform.system() == 'Windows':
|
||||||
|
return _get_disk_usage_by_walking_tree(d)
|
||||||
|
|
||||||
# only implemented on Linux and FreeBSD for now. Should work on OS X but need to verify first (du is not identical)
|
# only implemented on Linux and FreeBSD for now. Should work on OS X but need to verify first (du is not identical)
|
||||||
cmd = None
|
cmd = None
|
||||||
unit = 1
|
unit = 1
|
||||||
|
@ -201,7 +215,10 @@ def _rosclean_cmd_purge(args):
|
||||||
break
|
break
|
||||||
path = os.path.join(d, f)
|
path = os.path.join(d, f)
|
||||||
log_size -= get_disk_usage(path)
|
log_size -= get_disk_usage(path)
|
||||||
cmds = [['rm', '-rf', path]]
|
if platform.system() == 'Windows':
|
||||||
|
cmds = [['rd', '/s', '/q', path]]
|
||||||
|
else:
|
||||||
|
cmds = [['rm', '-rf', path]]
|
||||||
try:
|
try:
|
||||||
_call(cmds)
|
_call(cmds)
|
||||||
except:
|
except:
|
||||||
|
|
Loading…
Reference in New Issue