From a456d5f41ddd66322dc55892b7cb3075554a3264 Mon Sep 17 00:00:00 2001 From: Fredrik Unger Date: Fri, 27 Feb 2015 10:19:23 +0100 Subject: [PATCH] sitemap: adding sizecalculation With large projects it is good to know the size to be uploaded. This does not yet take into accoun the style files resources. --- treecutter/sitemap.py | 4 +++- treecutter/tools.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/treecutter/sitemap.py b/treecutter/sitemap.py index 11e300e..707067f 100644 --- a/treecutter/sitemap.py +++ b/treecutter/sitemap.py @@ -12,7 +12,8 @@ from time import time from treecutter import constants as const from treecutter.trie import Trie from treecutter.link import Link -from treecutter.tools import ssh_cmd, publish, mkdir_p +from treecutter.tools import ssh_cmd, publish, mkdir_p,get_folder_size,sizeof_fmt + class Sitemap(): """Class keeping the internal site structure""" @@ -128,6 +129,7 @@ class Sitemap(): return etree.tostring(menu,encoding='UTF-8',pretty_print=False) def publish(self): + print "Size [ %7s ]" % (sizeof_fmt(get_folder_size(self._tmptarget))) ssh_cmd(self._output,"mkdir -p") publish(self._tmptarget, self._output) for res in ["stylesheets","images","js","fonts","favicon.ico"]: diff --git a/treecutter/tools.py b/treecutter/tools.py index a9c94a0..62cb32a 100644 --- a/treecutter/tools.py +++ b/treecutter/tools.py @@ -27,3 +27,20 @@ def ssh_cmd(target, command): retcode = subprocess.call(cmd) if retcode: print 'Error: '+' '.join(cmd)+' Returncode ['+str(retcode)+']' + +def sizeof_fmt(num, suffix='B'): + for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']: + if abs(num) < 1024.0: + return "%3.1f%s%s" % (num, unit, suffix) + num /= 1024.0 + return "%.1f%s%s" % (num, 'Yi', suffix) + +def get_folder_size(folder): + total_size = os.path.getsize(folder) + for item in os.listdir(folder): + itempath = os.path.join(folder, item) + if os.path.isfile(itempath): + total_size += os.path.getsize(itempath) + elif os.path.isdir(itempath): + total_size += get_folder_size(itempath) + return total_size -- 2.30.2