public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/
Date: Mon, 18 Jun 2012 21:26:01 +0000 (UTC)	[thread overview]
Message-ID: <1340037456.2a28d1f1ff674b2fdfe2cdbab28cd9e19e58635f.bacher09@gentoo> (raw)

commit:     2a28d1f1ff674b2fdfe2cdbab28cd9e19e58635f
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Mon Jun 18 15:18:29 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Mon Jun 18 16:37:36 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=2a28d1f1

Add repo info layer

---
 gpackages/libs/repo_info.py |   93 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/gpackages/libs/repo_info.py b/gpackages/libs/repo_info.py
new file mode 100644
index 0000000..4deee56
--- /dev/null
+++ b/gpackages/libs/repo_info.py
@@ -0,0 +1,93 @@
+# Layman API
+from layman.api import LaymanAPI
+layman_api = LaymanAPI()
+
+# Validators
+from validators import validate_url, validate_email, ValidationError
+
+__all__ = ('TreeMetadata',)
+
+def _gen_funct(name):
+    func = lambda self: self._dct.get(name)
+    func.__name__ = name
+    return func
+
+class TreeMetadataMetaclass(type):
+    
+    def __init__(cls, name, bases, dct):
+        super(TreeMetadataMetaclass, cls).__init__(name, bases, dct)
+        for v in cls.simple_attrs:
+            setattr(cls, v, property(_gen_funct(v)))
+
+class TreeMetadata(object):
+    __metaclass__ = TreeMetadataMetaclass
+
+    simple_attrs = ( 'name', 'description', 'supported', 'owner_name',
+                     'official', 'irc'
+                   )
+    statuses = {'official': 0, 'unofficial': 1}
+    qualities = {'stable': 0 , 'testing': 1, 'experimental': 2}
+
+    def __init__(self, repo_name, dct = None):
+        if dct is None:
+            dct = self._get_info(repo_name)
+
+        self._dct = dct
+
+    def _get_info(self, repo_name):
+        if repo_name != 'gentoo':
+            return layman_api.get_all_info(repo_name)[repo_name]
+        else:
+            return {'name': 'gentoo',
+                    'description': 'Gentoo main repository',
+                    'supported': True,
+                    'owner_name': None,
+                    'owner_email': None,
+                    'official': True,
+                    'irc': None,
+                    'homepage': 'http://gentoo.org/',
+                    'quality': 'stable',
+                    'status': 'official',
+                    'feeds': [],
+                   }
+
+    @property
+    def int_status(self):
+        return self.statuses.get(self._dct['status'], 1)
+
+    @property
+    def homepage(self):
+        homepage = self._dct.get('homepage')
+        try:
+            validate_url(homepage)
+        except ValidationError:
+            return None
+        else:
+            return homepage
+
+    @property
+    def owner_email(self):
+        email = self._dct.get('owner_email')
+        try:
+            validate_email(email)
+        except ValidationError:
+            return None
+        else:
+            return email
+
+    @property
+    def feeds(self):
+        ret = []
+        for feed in self._dct.get('feeds', ()):
+            try:
+                validate_url(feed)
+            except ValidationError:
+                pass
+            else:
+                ret.append(feed)
+        return ret
+
+    @property
+    def int_quality(self):
+        return self.qualities.get(self._dct['quality'], 2)
+



             reply	other threads:[~2012-06-18 21:26 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-18 21:26 Slava Bacherikov [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-06-20 23:23 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/ Slava Bacherikov
2012-06-20 23:23 Slava Bacherikov
2012-06-20 23:23 Slava Bacherikov
2012-06-18 21:26 Slava Bacherikov
2012-06-18 21:26 Slava Bacherikov
2012-06-14 19:10 Slava Bacherikov
2012-06-12 18:34 Slava Bacherikov
2012-06-12 18:34 Slava Bacherikov
2012-06-10 17:51 Slava Bacherikov
2012-06-09 18:19 Slava Bacherikov
2012-06-09 18:19 Slava Bacherikov
2012-06-07 22:48 Slava Bacherikov
2012-06-07 22:48 Slava Bacherikov
2012-06-07 22:48 Slava Bacherikov
2012-06-06 22:48 Slava Bacherikov
2012-06-05 21:46 Slava Bacherikov
2012-06-05 20:48 Slava Bacherikov
2012-06-05 15:49 Slava Bacherikov
2012-06-05 15:49 Slava Bacherikov
2012-06-04 22:18 Slava Bacherikov
2012-06-04 16:16 Slava Bacherikov
2012-06-04 16:16 Slava Bacherikov
2012-06-03 19:34 Slava Bacherikov
2012-06-03 16:19 Slava Bacherikov
2012-06-03 13:19 Slava Bacherikov
2012-06-03 13:19 Slava Bacherikov
2012-06-02 16:04 Slava Bacherikov
2012-06-01 21:28 Slava Bacherikov
2012-06-01 21:28 Slava Bacherikov
2012-05-31 15:28 Slava Bacherikov
2012-05-31 15:28 Slava Bacherikov
2012-05-29 21:34 Slava Bacherikov
2012-05-29 13:38 Slava Bacherikov
2012-05-28 17:00 Slava Bacherikov

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=1340037456.2a28d1f1ff674b2fdfe2cdbab28cd9e19e58635f.bacher09@gentoo \
    --to=slava@bacherikov.org.ua \
    --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