From b2f4591004a0f16a4c348123e999b0912745833e Mon Sep 17 00:00:00 2001 From: Brian Dolbec Date: Mon, 8 Oct 2012 15:37:58 -0700 Subject: move the rename_db code to a standalone updater utility. --- bin/layman-updater | 24 ++++++++++++++ layman/db.py | 30 +++--------------- layman/updater.py | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 25 deletions(-) create mode 100755 bin/layman-updater create mode 100644 layman/updater.py diff --git a/bin/layman-updater b/bin/layman-updater new file mode 100755 index 0000000..ac9e841 --- /dev/null +++ b/bin/layman-updater @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +################################################################################ +# LAYMAN - A UTILITY TO UPDATE LAYMAN DB's +################################################################################ +# Distributed under the terms of the GNU General Public License v2 +# +# Copyright: +# (c) 2011 Brian Dolbec +# Distributed under the terms of the GNU General Public License v2 +# +# Author(s): +# Brian Dolbec +# + +__version__ = "0.1" + + +from layman.updater import Main + + +main = Main() +main() diff --git a/layman/db.py b/layman/db.py index 354481c..e2d740c 100644 --- a/layman/db.py +++ b/layman/db.py @@ -61,9 +61,6 @@ class DB(DbBase): else: ignore = 1 - # check and handle the name change - #if not os.access(self.path, os.F_OK): - # self.rename_db() DbBase.__init__(self, config, @@ -73,28 +70,11 @@ class DB(DbBase): self.output.debug('DB handler initiated', 6) - - def rename_db(self): - """small upgrade function to handle the name change - for the installed xml file""" - if os.access(self.config['local_list'], os.F_OK): - self.output.info("Automatic db rename, old name was: %s" - % self.config['local_list'],2) - try: - os.rename(self.config['local_list'], self.path) - self.output.info("Automatic db rename, new installed db " - "name is: %s" %self.path, 2) - self.output.notice('') - return - except OSError, err: - self.output.error("Automatic db rename failed:\n%s" %str(err)) - else: - self.output.info("Automatic db rename, failed access to: %s" - % self.config['local_list'],2) - self.output.die("Please check that /etc/layman.cfg is up" - " to date\nThen try running layman again.\n" - "You may need to rename the old 'local_list' config setting" - " to\nthe new 'installed' config setting's filename.\n") + # check and handle the name change + if not os.access(self.config['installed'], os.F_OK) and \ + os.access(self.config['local_list'], os.F_OK): + self.output.die("Please run layman-updater, " + "then run layman again") # overrider diff --git a/layman/updater.py b/layman/updater.py new file mode 100644 index 0000000..48fad10 --- /dev/null +++ b/layman/updater.py @@ -0,0 +1,92 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from sys import stderr +import os +import argparse + +from layman.config import OptionConfig +from layman.api import LaymanAPI +from layman.version import VERSION + + +def rename_db(config, newname, output): + """small upgrade function to handle the name change + for the installed xml file""" + if os.access(config['local_list'], os.F_OK): + output.info("Automatic db rename, old name was..: %s" + % config['local_list'],2) + try: + os.rename(config['local_list'], newname) + output.info("Automatic db rename, new " + "name is...: %s" %newname, 2) + output.notice('') + return + except OSError, err: + output.error("Automatic db rename failed:\n%s" %str(err)) + else: + output.info("Automatic db rename, failed access to: %s" + % config['local_list'],2) + output.die("Please check that /etc/layman.cfg is up" + " to date\nThen try running layman again.\n" + "You may need to rename the old 'local_list' config setting" + " to\nthe new 'installed' config setting's filename.\n") + + +class Main(object): + + def __init__(self): + self.parser = None + self.output = None + self.config = None + self.args = None + + def args_parser(self): + self.parser = argparse.ArgumentParser(prog='layman-updater', + description="Layman's DB update script") + self.parser.add_argument("-c", "--config", + help='the path to config file') + self.parser.add_argument('--version', action='version', + version='%(prog)s ' + VERSION) + self.args = self.parser.parse_args() + + def __call__(self): + self.args_parser() + options = None + if self.args.config: + options = { + 'config': self.args.config, + } + + self.config = OptionConfig(options=options) + self.config.read_config(self.config.get_defaults()) + + layman_inst = LaymanAPI(config=self.config) + + self.output = layman_inst.output + + self.rename_check() + + + def rename_check(self): + '''Checks for and renames the installed db if needed + ''' + newname = self.config['installed'] + + # check and handle the name change + if not os.access(newname, os.F_OK): + if os.access(self.config['local_list'], os.F_OK): + self.output.info("Layman automatic db rename utility, " + "performing update", 2) + rename_db(self.config, newname, self.output) + elif os.access(newname, os.F_OK) and \ + os.access(self.config['local_list'], os.F_OK): + self.output.error("Automatic db rename failed: " + "Both old and new files exist") + self.output.error("Old file: %s still exists" + % self.config['local_list']) + self.output.error("New file: %s already exists" % newname) + else: + self.output.info("Automatic db rename " + "already updated: %s" % newname) + return -- cgit v1.2.3-1-g7c22