diff --git a/ctl b/ctl index eb8d849..b8570a1 100755 --- a/ctl +++ b/ctl @@ -83,6 +83,8 @@ if [ "$1" == "ui" ]; then exit $? fi if [ "$1" == "update" ]; then + cd $BASE/$NAME + OLD=`$0 version` cd $BASE/platform echo Update platform.. git pull @@ -90,8 +92,10 @@ if [ "$1" == "update" ]; then cd $BASE/$NAME git pull find . -name '*.pyc' -exec rm "{}" \; - python2 oml setup - python2 oml update_static > /dev/null + $0 setup + $0 update_static > /dev/null + NEW=`$0 version` + $0 postupdate -o $OLD -n $NEW exit fi if [ "$1" == "python" ]; then diff --git a/oml/app.py b/oml/app.py index e7f3a84..e9759df 100644 --- a/oml/app.py +++ b/oml/app.py @@ -45,6 +45,8 @@ manager.add_command('update', commands.Update) #manager.add_command('start', commands.Start) #manager.add_command('stop', commands.Stop) manager.add_command('setup', commands.Setup) +manager.add_command('version', commands.Version) +manager.add_command('postupdate', commands.PostUpdate) manager.add_command('shell', Shell) manager.add_command('update_static', commands.UpdateStatic) diff --git a/oml/commands.py b/oml/commands.py index 828795e..663308b 100644 --- a/oml/commands.py +++ b/oml/commands.py @@ -3,17 +3,48 @@ from __future__ import division import subprocess +from os.path import join, exists, dirname import os -from flask.ext.script import Command +from flask.ext.script import Command, Option + +import settings + +root_dir = dirname(settings.base_dir) + +def run(*cmd): + p = subprocess.Popen(cmd) + p.wait() + return p.returncode + +def get(*cmd): + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, error = p.communicate() + return stdout def r(*cmd): print ' '.join(cmd) return subprocess.call(cmd) +def version(module): + os.chdir(join(root_dir, module)) + version = get('git', 'log', '-1', '--format=%cd', '--date=iso').split(' ')[0].replace('-', '') + version += '-' + get('git', 'rev-list', 'HEAD', '--count').strip() + version += '-' + get('git', 'describe', '--always').strip() + os.chdir(root_dir) + return version + + +class Version(Command): + """ + Print current version + """ + def run(self): + print version('openmedialibrary') + class Debug(Command): """ - Start Open Media Library in debug mode + Start in debug mode """ def run(self): pass @@ -39,25 +70,35 @@ class Update(Command): def run(self): pass +class PostUpdate(Command): + """ + Called by update to fix stuff + """ + def get_options(self): + return [ + Option('-o', '--old', dest='old'), + Option('-n', '--new', dest='new'), + ] + + def run(selfi, old, new): + pass + class Setup(Command): """ - setup new node + Setup new node """ def run(self): r('./ctl', 'db', 'upgrade') import setup - import settings setup.create_default_lists() settings.db.session.connection().execute("PRAGMA journal_mode=WAL") settings.db.session.commit() class UpdateStatic(Command): """ - update static files + Update static files """ def run(self): - import settings - oxjs = os.path.join(settings.static_path, 'oxjs') if not os.path.exists(oxjs): r('git', 'clone', 'https://git.0x2620.org/oxjs.git', oxjs) @@ -68,39 +109,17 @@ class UpdateStatic(Command): class Release(Command): """ - release new version + Release new version """ def run(self): print 'checking...' - import settings import os - import subprocess import json import hashlib import ed25519 - from os.path import join, exists, dirname - root_dir = dirname(settings.base_dir) os.chdir(root_dir) - def run(*cmd): - p = subprocess.Popen(cmd) - p.wait() - return p.returncode - - def get(*cmd): - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, error = p.communicate() - return stdout - - def version(module): - os.chdir(join(root_dir, module)) - version = get('git', 'log', '-1', '--format=%cd', '--date=iso').split(' ')[0].replace('-', '') - version += '-' + get('git', 'rev-list', 'HEAD', '--count').strip() - version += '-' + get('git', 'describe', '--always').strip() - os.chdir(root_dir) - return version - with open(os.path.expanduser('~/Private/openmedialibrary_release.key')) as fd: SIG_KEY=ed25519.SigningKey(fd.read()) SIG_ENCODING='base64' diff --git a/oml/media/pdf.py b/oml/media/pdf.py index 2ed915d..2a024a5 100644 --- a/oml/media/pdf.py +++ b/oml/media/pdf.py @@ -37,13 +37,17 @@ def ql_cover(pdf): ] p = subprocess.Popen(cmd) p.wait() - image = glob('%s/*' % tmp)[0] - with open(image, 'rb') as fd: - data = fd.read() + image = glob('%s/*' % tmp) + if image: + image = image[0] + with open(image, 'rb') as fd: + data = fd.read() + else: + logger.debug('qlmanage did not create cover for %s', pdf) + data = None shutil.rmtree(tmp) return data - def page(pdf, page): image = tempfile.mkstemp('.jpg')[1] cmd = [ @@ -133,7 +137,10 @@ def extract_text(pdf): p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = p.communicate() if sys.platform == 'darwin': - stdout = stderr.split('kMDItemTextContent = "')[-1].split('\n')[0][:-2] + if 'kMDItemTextContent' in stderr: + stdout = stderr.split('kMDItemTextContent = "')[-1].split('\n')[0][:-2] + else: + stdout = '' return stdout.strip() def extract_isbn(text): diff --git a/oml/user/api.py b/oml/user/api.py index 7b3113c..21d8cf9 100644 --- a/oml/user/api.py +++ b/oml/user/api.py @@ -232,6 +232,7 @@ def sortLists(data): n += 1 models.db.session.add(l) models.db.session.commit() + logger.debug('FIXME: broadcast orderlist event here') return {} actions.register(sortLists, cache=False)