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)
+
next 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