Added config file features

This commit is contained in:
ville rantanen
2014-01-28 12:35:52 +02:00
parent 616d90c572
commit 57f7091fea
2 changed files with 64 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Copyright 2011 Ville Rantanen
# Copyright 2014 Ville Rantanen
#
# this program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Copyright 2012 Ville Rantanen
# Copyright 2014 Ville Rantanen
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
@@ -22,14 +22,34 @@ import shutil
import csv
import subprocess
import string
import configobj
from math import ceil
from datetime import datetime
# (c) ville.rantanen@helsinki.fi
__version__='2.5'
__version__='2.6'
webfilesearch=re.compile('.*index.html$|gallerystyle.css$|galleryscript.js$|descriptions.csv$|^info.txt$|\..*',re.I)
FILECONFIG=".config"
FILEDESC="descriptions.csv"
FILEINFO="info.txt"
SAVEDCONFIG="""attachments=boolean
gallery=string
infofile=string
link=boolean
parent=string
reverse=boolean
startpath=string
timesort=boolean
clean=boolean
force=boolean
gravity=string
recursive=boolean
width=string""".split('\n')
CONFIGCOMMENTS="""
config values:
""".split('\n')
webfilesearch=re.compile('.*index.html$|gallerystyle.css$|galleryscript.js$|'+FILEDESC+'$|^'+FILEINFO+'$|\..*',re.I)
imagesearch=re.compile('.*\.jpg$|.*\.jpeg$|.*\.gif$|.*\.png$|.*\.svg$|.*\.pdf$',re.I)
vectorsearch=re.compile('.*\.svg$|.*\.pdf$',re.I)
nonconvertiblesearch=re.compile('.*\.html$|.*\.htm$|.*\.php$',re.I)
@@ -312,10 +332,10 @@ def create_thumb_bitmap(infile,outfile,vector=False,gravity='Center'):
def getdescriptions(path,list):
''' Read descriptions.csv file and returns a list of descriptions.
Missing descriptions are replaced with the file name. '''
if not os.path.exists(os.path.join(path,'descriptions.csv')):
if not os.path.exists(os.path.join(path,FILEDESC)):
return list
desc=[i for i in list]
reader = csv.reader(open(os.path.join(path,'descriptions.csv'),'rb'),
reader = csv.reader(open(os.path.join(path,FILEDESC),'rb'),
delimiter='\t',
doublequote=False,
escapechar='\\',
@@ -437,6 +457,10 @@ def setupoptions():
parser=ArgumentParser()
parser.add_argument("-v",action='version', version=__version__)
parser.add_argument("--version",action='version', version=__version__)
parser.add_argument("-c",action="store_true",dest="writeconfig",default=False,
help="Write current configuration to file "+FILECONFIG+
". If file exists, Qalbum and thumbnail handling read from the file, "+
"overriding switches.")
parser.add_argument("-r",action="store_true",dest="reverse",default=False,
help="Reverse sort orded")
parser.add_argument("-L",action="store_false",dest="recurselink",default=True,
@@ -447,7 +471,7 @@ def setupoptions():
help="Sort by file modification time")
parser.add_argument("-a",action="store_false",dest="attachments",default=True,
help="Disable attachments")
parser.add_argument("-i",type=str,dest="infofile",default="info.txt",
parser.add_argument("-i",type=str,dest="infofile",default=FILEINFO,
help="File name for info files in all folders. (Default: %(default)s)")
parser.add_argument("-g",type=str,dest="gallery",default="Gallery",
help="Name for the root gallery (Default: %(default)s)")
@@ -473,7 +497,7 @@ def setupdefaultoptions(options):
if 'force' not in options:
options.force=False
if 'infofile' not in options:
options.infofile="info.txt"
options.infofile=FILEINFO
if 'gallery' not in options:
options.gallery="Gallery"
if 'gravity' not in options:
@@ -494,10 +518,42 @@ def setupdefaultoptions(options):
options.width=850
return options
def readconfig(options):
""" Set up the options via config file """
if os.path.exists(FILECONFIG):
try:
cfg=configobj.ConfigObj(FILECONFIG, configspec=SAVEDCONFIG, unrepr=True)
except configobj.UnreprError as err:
print("Config file "+FILECONFIG+" syntax error!")
print(err)
sys.exit(1)
for opt in cfg.keys():
setattr(options,opt,cfg[opt])
print("Read config from file")
return options
def writeconfig(options):
""" Write the options to config file """
cfg=configobj.ConfigObj(configspec=SAVEDCONFIG, unrepr=True)
cfg.initial_comment=CONFIGCOMMENTS
cfg.filename=FILECONFIG
for opt in SAVEDCONFIG:
if opt.startswith('#'):
continue
optname=opt.split("=")[0]
cfg[optname]=getattr(options,optname)
cfg.write()
print('Wrote '+FILECONFIG)
def execute_plain():
''' Main execution function '''
options=setupoptions()
options=readconfig(options)
options=setupdefaultoptions(options)
if options.writeconfig:
writeconfig(options)
# Copy all resources to target folder
pathname=os.path.dirname(os.path.realpath(sys.argv[0]))
fullpath=os.path.abspath(pathname)