public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "André Erdmann" <dywi@mailerd.de>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/interface/
Date: Fri, 19 Jul 2013 18:00:39 +0000 (UTC)	[thread overview]
Message-ID: <1374255894.8735cde4882262112c7adf46b1e55a390d920e28.dywi@gentoo> (raw)
Message-ID: <20130719180039.8nCP3B353wilThUzE7jvmvfqp5FtIor--X8HLIe8jVU@z> (raw)

commit:     8735cde4882262112c7adf46b1e55a390d920e28
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Fri Jul 19 17:44:54 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Fri Jul 19 17:44:54 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=8735cde4

depres interface: visualize pools, ignore_missing

---
 roverlay/interface/depres.py | 70 +++++++++++++++++++++++++++++++++++++-------
 1 file changed, 60 insertions(+), 10 deletions(-)

diff --git a/roverlay/interface/depres.py b/roverlay/interface/depres.py
index 6e79bc5..ad292de 100644
--- a/roverlay/interface/depres.py
+++ b/roverlay/interface/depres.py
@@ -6,6 +6,8 @@
 
 #import weakref
 
+import errno
+
 import roverlay.interface.generic
 
 
@@ -245,6 +247,7 @@ class DepresInterface ( roverlay.interface.generic.RoverlaySubInterface ):
       if ignore_missing:
          rule_files = self.config.get ( "DEPRES.simple_rules.files", None )
          if rule_files:
+            ##return self.load_rule_files ( rule_files, ignore_missing=True )
             return self.load_rule_files ( rule_files )
          else:
             return False
@@ -254,12 +257,26 @@ class DepresInterface ( roverlay.interface.generic.RoverlaySubInterface ):
          )
    # --- end of load_rules_from_config (...) ---
 
-   def load_rule_files ( self, files_or_dirs ):
+   def load_rule_files ( self, files_or_dirs, ignore_missing=False ):
       """Loads the given files into a new rule pool (or new pools).
 
+      arguments:
+      * ignore_missing -- suppress exceptions caused by missing files and
+                          return False
+
       Returns: True on success, else False
       """
-      ret = self._resolver.get_reader().read ( files_or_dirs )
+      if ignore_missing:
+         try:
+            ret = self._resolver.get_reader().read ( files_or_dirs )
+         except IOError as ioerr:
+            if ioerr.errno == errno.ENOENT:
+               ret = False
+            else:
+               raise
+      else:
+         ret = self._resolver.get_reader().read ( files_or_dirs )
+
       self.fixup_pool_id()
       return True if ret is None else ret
    # --- end of load_rule_files (...) ---
@@ -311,6 +328,13 @@ class DepresInterface ( roverlay.interface.generic.RoverlaySubInterface ):
    # --- end of add_rule_list (...) ---
 
    def try_compile_rules ( self, *args, **kwargs ):
+      """Tells the rule parser to 'compile' rules. Does nothing if the
+      rule parser has any active context (e.g. is inside a multi line rule).
+      See compile_rules() for details.
+
+      Returns: False if rule compiling has been suppressed du to active
+               context, else True (=rules compiled)
+      """
       if self._parser.has_context():
          return False
       else:
@@ -364,18 +388,44 @@ class DepresInterface ( roverlay.interface.generic.RoverlaySubInterface ):
       return self.add_rule ( rule_str ) and self.compile_rules()
    # --- end of add_immediate_rule (...) ---
 
-   def visualize_pool ( self ):
-      """Visualizes the topmost rule pool. This returns a string that contains
-      all rules of this pool in text form (in rule file syntax).
+   def visualize_pool ( self, pool_id=None ):
+      """Visualizes the topmost rule pool (or the specified one).
+      his returns a string that contains all rules of this pool
+      in text form (in rule file syntax).
+
+      arguments:
+      * pool_id -- index of the pool that should be visualized
+                   Defaults to 0 (-> use topmost pool).
+
+      Returns:
+          visualized pool (str) if requested pool existed, else empty string
       """
-      if self._poolstack:
+      try:
+         pool = self._poolstack [ -1 if pool_id is None else pool_id ]
+      except IndexError:
+         return ""
+      else:
+         return '\n'.join ( pool.export_rules() )
+   # --- end of visualize_pool (...) ---
+
+   def visualize_pools ( self, id_range=None ):
+      """Visualize multiple pools at once.
+
+      arguments:
+      * id_range -- an iterable of indexes or None (-> visualize all)
+                    Defaults to None.
+
+      Returns: visualized pools (str)
+      """
+      if id_range is None:
          return '\n'.join (
-            '\n'.join ( rule.export_rule() )
-               for rule in self._poolstack[-1].rules
+            '\n'.join ( pool.export_rules() ) for pool in self._poolstack
          )
       else:
-         return ""
-   # --- end of visualize_pool (...) ---
+         return '\n'.join (
+            self.visualize_pool ( pool_id ) for pool_id in id_range
+         )
+   # --- end of visualize_pools (...) ---
 
    def get_channel ( self, channel_name="channel" ):
       """Creates, registers and returns an EbuildJobChannel suitable for


             reply	other threads:[~2013-07-19 18:00 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-23  7:51 André Erdmann [this message]
2013-07-19 18:00 ` [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/interface/ André Erdmann
  -- strict thread matches above, loose matches on Subject: below --
2014-06-05 22:09 [gentoo-commits] proj/R_overlay:master " André Erdmann
2014-06-05 22:09 André Erdmann
2013-08-20 21:46 André Erdmann
2013-07-24  9:54 André Erdmann
2013-07-24  9:54 André Erdmann
2013-07-24  9:54 André Erdmann
2013-07-23  7:51 André Erdmann
2013-07-18 19:25 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23  7:51 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-07-16 16:36 André Erdmann
2013-07-03 10:05 André Erdmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1374255894.8735cde4882262112c7adf46b1e55a390d920e28.dywi@gentoo \
    --to=dywi@mailerd.de \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox