optimize a lot album generation by not regenerating when places are already generated
[booh] / bin / booh-backend
index b5f829ddf74dee1a4976c44ea89498fb59f5d12f..07ddebb7685895a8e394ea8a61b15eecf99d4402 100755 (executable)
@@ -50,6 +50,7 @@ $options = [
     [ '--merge-config-onedir',  '-O', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing, for merging the subdir specified with --dir") ],
     [ '--dir',           '-D', GetoptLong::REQUIRED_ARGUMENT, _("Directory for merge with --merge-config-onedir") ],
     [ '--use-config',    '-u', GetoptLong::REQUIRED_ARGUMENT, _("File containing config listing, where to change theme info") ],
+    [ '--force',         '-f', GetoptLong::NO_ARGUMENT,       _("Force generation of album even if the GUI markes some directories as already generated") ],
 
     [ '--sizes',         '-S', GetoptLong::REQUIRED_ARGUMENT, _("Specify the list of images sizes to use instead of all specified in the theme (this is a comma-separated list)") ],
 
@@ -183,6 +184,9 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.") %
             when '--sizes'
                 $limit_sizes = arg
 
+            when '--force'
+                $force = true
+
             when '--mproc'
                 $mproc = arg.to_i
                 $pids = []
@@ -516,7 +520,8 @@ def walk_source_dir
         newly_created_dir = false
         xmldir = optxpath[utf8(dir)]
         if $mode == 'use_config' || $mode == 'use_config_changetheme'
-            if !xmldir
+            if !xmldir || (xmldir.attributes['already-generated'] && !$force)
+                info("walking: #{dir}, 0 elements")
                 next
             end
         else
@@ -531,6 +536,7 @@ def walk_source_dir
                 xmldir = optxpath[utf8(dir)] = xmldir.add_element('dir', { 'path' => utf8(dir) })
             end
         end
+        xmldir.delete_attribute('already-generated')
 
         #- read images/videos entries from config or from directories depending on mode
         entries = []
@@ -820,12 +826,13 @@ def walk_source_dir
 
     examined_dirs.each { |dir|
         dir.chomp!
+        info("index.html: #{dir}")
+
         xmldir = optxpath[utf8(dir)]
-        if !xmldir
+        if !xmldir || (xmldir.attributes['already-generated'] && !$force)
             next
         end
         dest_dir = make_dest_filename(dir.sub(/^#{Regexp.quote($source)}/, $dest))
-        info("index.html: #{dir}")
 
         if xmldir.elements['dir']
             html = $html_index.collect { |l| l.clone }