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 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"""
 
 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):
         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"]:
         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)+']'
     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