sitemap: adding sizecalculation
authorFredrik Unger <fred@tree.se>
Fri, 27 Feb 2015 09:19:23 +0000 (10:19 +0100)
committerFredrik Unger <fred@tree.se>
Fri, 27 Feb 2015 09:19:23 +0000 (10:19 +0100)
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
treecutter/tools.py

index 11e300eda9fbc0ff0d8ac6c4e718dfdb27e576dc..707067f1f8cf28a284759248ce111ef520bf780a 100644 (file)
@@ -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"]:
index a9c94a0837b7cf523ff17d40d1e361a027b75706..62cb32a71943c6cdf3aa19bd59f20ef8bfd2c398 100644 (file)
@@ -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