+require 'navigator'
+require 'page'
+require 'store'
require 'walkdir'
-outputDir = 'output'
+@outputDir = 'output'
-books = []
-imageCount = 0
+book_ids = []
+@config_file = 'quanlib.ini'
+@skip_class = false
-for arg in ARGV
- w = WalkDir.new(arg)
- books += (w.books)
+def handleArg(arg)
+ if arg.start_with?("--config=")
+ @config_file = arg[9..-1]
+ puts 'Using config file "' + @config_file + '".'
+ elsif "--purge" == arg
+ puts 'Purging database...'
+ @store.dropSchema()
+ if File.exists?(@store.unclassified_csv)
+ File.delete(@store.unclassified_csv)
+ end
+ elsif "--skip-class" == arg
+ puts 'Skipping load of classification table.'
+ @skip_class = true
+ elsif arg.start_with?("--")
+ abort('ERROR: Unrecognized option "' + arg + '".')
+ end
end
-if ! Dir.exist?(outputDir)
- Dir.mkdir(outputDir)
+@store = Store.new(@config_file)
+@store.connect()
+
+for arg in ARGV
+ handleArg(arg)
end
-open(outputDir + '/index.html', 'w') do |fd|
- fd.puts "<html>"
- fd.puts " <head><title>Books</title></head>"
- fd.puts " <body>"
- fd.puts " <table>"
-
- for book in books
- image = nil
- if nil != book.cover
- imageCount += 1
- (path, mimeType) = book.cover.writeImage(outputDir, 'image' + imageCount.to_s)
- image = '<img src="' + path + '"/>'
- else
- image = '(No cover image)'
- end
+@store.init_db(@skip_class)
- fd.puts " <tr><td>" + image + "</td><td>" + book.describe() + "</td></tr>"
+for arg in ARGV
+ if ! arg.start_with?("--")
+ puts 'Scanning directory "' + arg + '"...'
+ w = WalkDir.new(@store, arg)
+ book_ids += (w.books)
end
-
- fd.puts " </table>"
- fd.puts " </body>"
- fd.puts "</html>"
end
+puts 'Creating output...'
+
+navigator = Navigator.new(@store)
+navigator.write_atoz_pages()
+navigator.write_series_listing()
+navigator.write_dewey()
+
+@store.disconnect()
+