From 4e9ce17c71c78b4b1bda6581d9704dadf72b3424 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Tue, 2 Jul 2013 15:58:35 +0100 Subject: [PATCH] adapted update to version 3 --- papers/commands/update_cmd.py | 58 +++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/papers/commands/update_cmd.py b/papers/commands/update_cmd.py index 041d955..bcf65ee 100644 --- a/papers/commands/update_cmd.py +++ b/papers/commands/update_cmd.py @@ -1,5 +1,8 @@ +import sys + from .. import repo from .. import color +from ..configs import config def parser(subparsers): parser = subparsers.add_parser('update', help='update the repository to the lastest format') @@ -7,13 +10,48 @@ def parser(subparsers): def command(ui): - rp = repo.Repository.from_directory(config) - msg = ("You should backup the paper directory {} before continuing." - "Continue ?").format(color.dye(rp.papersdir, color.filepath)) - sure = ui.input_yn(question=msg, default='n') - if sure: - for p in rp.all_papers(): - tags = set(p.metadata['tags']) - tags = tags.union(p.metadata['labels']) - p.metadata.pop('labels', []) - rp.save_paper(p) + rp = repo.Repository(config()) + code_version = papers.__version__ + repo_version = config().version + + if repo_version == code_version: + ui._print('You papers repository is up-to-date.') + sys.exit(0) + elif repo_version <= code_version: + ui._print('Your repository was generated with an newer version of papers.\n' + 'You should not use papers until you install the newest version.') + sys.exit(0) + else: + msg = ("You should backup the paper directory {} before continuing." + "Continue ?").format(color.dye(rp.papersdir, color.filepath)) + sure = ui.input_yn(question=msg, default='n') + if not sure: + sys.exit(0) + + if repo_version == 1: + for p in rp.all_papers(): + tags = set(p.metadata['tags']) + tags = tags.union(p.metadata['labels']) + p.metadata.pop('labels', []) + rp.save_paper(p) + repo_version = 2 + if repo_version == 2: + # update config + cfg_update = [('papers-directory', 'papers_dir'), + ('open-cmd', 'open_cmd'), + ('edit-cmd', 'edit_cmd'), + ('import-copy', 'import_copy'), + ('import-move', 'import_move'), + ] + for old, new in cfg_update: + try: + config().__setattr__('papers', new, config()._cfg.get('papers', old)) + config()._cfg.remove_option('papers', old) + except Exception: + pass + config().save() + repo_version = 3 + + + config().version = repo_version + config().save() \ No newline at end of file