Skip to content

Instantly share code, notes, and snippets.

@zodman
Created July 22, 2009 19:12
Show Gist options
  • Save zodman/152200 to your computer and use it in GitHub Desktop.
Save zodman/152200 to your computer and use it in GitHub Desktop.
a small script for get info package on foresight
import urllib
import re
URL ="http://packages.foresightlinux.org/sources/"
class ForesightPackageNotFound(Exception):
pass
class ForesightInfo:
def __init__(self, repository, package_name):
self.repository = repository
self.package_name = package_name
self.conary = None
self.package_recipe = None
def _open_url(self, filename):
url = urllib.urlopen(URL+"%(repository)s/%(package_name)s/%(filename)s" % dict(
package_name = self.package_name, repository = self.repository, filename = filename
)
)
if url.getcode() == 404:
raise ForesightPackageNotFound
#print "getting from web %s" % filename
return url.read()
def _get_recipe(self):
if self.package_recipe:
return self.package_recipe
self.package_recipe = self._open_url( "%s.recipe" % self.package_name)
return self.package_recipe
def _get_conary(self):
if self.conary:
return self.conary
self.conary = self._open_url("CONARY")
return self.conary
def _get_regex(self,regex):
file = self._get_conary()
regex = re.search(regex,file)
return regex.groups()[0]
def get_recipe(self):
return self._get_recipe()
def get_version(self):
version_string = self._get_regex("\sversion (?P<version>.*?)\s")
return version_string.split("/")[2].split(":")[1]
if __name__ == "__main__":
import sys
try:
fl = ForesightInfo(repository=sys.argv[1],package_name =sys.argv[2])
fl.get_recipe()
print fl.get_recipe()
fl.get_version()
fl.get_version()
except ForesightPackageNotFound:
print "not found"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment