From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id AC8F31381F3 for ; Tue, 10 Sep 2013 14:41:09 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0FCB0E0B1E; Tue, 10 Sep 2013 14:40:45 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 56D78E0B1E for ; Tue, 10 Sep 2013 14:40:44 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id F36D633E9CB for ; Tue, 10 Sep 2013 14:40:42 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 87313E5465 for ; Tue, 10 Sep 2013 14:40:40 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1378823212.c8c61bed9c1d086cf5675467ae1d1262d0659207.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/runtime.py X-VCS-Directories: roverlay/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: c8c61bed9c1d086cf5675467ae1d1262d0659207 X-VCS-Branch: master Date: Tue, 10 Sep 2013 14:40:40 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: a4037ba3-29ef-4521-8e24-24c2d185fa81 X-Archives-Hash: b0654822530c3b775239a7fa3643ac99 commit: c8c61bed9c1d086cf5675467ae1d1262d0659207 Author: André Erdmann mailerd de> AuthorDate: Tue Sep 10 14:26:52 2013 +0000 Commit: André Erdmann mailerd de> CommitDate: Tue Sep 10 14:26:52 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c8c61bed roverlay/runtime: config access IndependentRuntimeEnvironment: create new config tree, access constants --- roverlay/runtime.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/roverlay/runtime.py b/roverlay/runtime.py index bbc73d7..3e251b9 100644 --- a/roverlay/runtime.py +++ b/roverlay/runtime.py @@ -17,6 +17,9 @@ import roverlay.stats.collector import roverlay.util.objects import roverlay.recipe.easylogger +import roverlay.config.tree +import roverlay.config.const + from roverlay.core import DIE, die # TODO: move/merge roverlay.core.DIE into runtime env @@ -267,19 +270,55 @@ class RuntimeEnvironment ( RuntimeEnvironmentBase ): class IndependentRuntimeEnvironment ( MinimalRuntimeEnvironment ): LOG_FORMAT = None + LOG_LEVEL = None - def __init__ ( self, installed=True ): + def __init__ ( self, installed=True, stdout=None, stderr=None ): super ( IndependentRuntimeEnvironment, self ).__init__() - self.config = roverlay.config.tree.ConfigTree ( register_static=False ) self.CONFIG_DEFAULTS = { 'installed': installed, } - self.extend_config ( self.CONFIG_DEFAULTS ) + self.config = self.create_new_config() self.parser = None self.options = None self.commands = None + + self.stdout = stdout if stdout is not None else sys.stdout + self.stderr = stderr if stderr is not None else sys.stderr + self.info = self.stdout.write + self.error = self.stderr.write + + if installed: + self.INSTALLINFO = self.access_constant ( 'INSTALLINFO' ) + else: + self.INSTALLINFO = None # --- end of __init__ (...) --- + def create_new_config ( self, config_str=None, apply_defaults=True ): + ctree = roverlay.config.tree.ConfigTree ( register_static=False ) + + if apply_defaults: + ctree.merge_with ( self.CONFIG_DEFAULTS ) + + if config_str: + ctree.get_loader().parse_config ( config_str ) + + return ctree + # --- end of create_new_config (...) --- + + def reconfigure ( self, config_str=None ): + self.reset_config() + if config_str: + self.config.get_loader().parse_config ( config_str ) + # --- end of reconfigure (...) --- + + def access_constant ( self, key ): + return roverlay.config.const.lookup ( key ) + # --- end of access_constant (...) --- + + def wants_command ( self, *commands ): + return any ( cmd in self.commands for cmd in commands ) + # --- end of wants_command (...) --- + def extend_config ( self, additional_config ): self.config.merge_with ( additional_config ) # --- end of extend_config (...) --- @@ -312,7 +351,10 @@ class IndependentRuntimeEnvironment ( MinimalRuntimeEnvironment ): def setup_common ( self ): roverlay.recipe.easylogger.force_console_logging ( - log_formatter=logging.Formatter ( self.LOG_FORMAT ) + log_formatter = logging.Formatter ( self.LOG_FORMAT ), + log_level = ( + logging.DEBUG if self.LOG_LEVEL is None else self.LOG_LEVEL + ), ) self.setup_argparser() # --- end of setup_common (...) ---