예제 #1
0
파일: apm.py 프로젝트: valgaze/nuclide
class Apm(object):
    '''Abstraction around the apm executable and npm-like actions.'''
    def __init__(self, git, verbose=False):
        self._git = git
        self._verbose = verbose
        self._info_by_name = {}

    def info(self, name, force=False):
        # Memoize the info accessor by default unless forced to refetch.
        if force or not name in self._info_by_name:
            try:
                info = json_loads(self._execute(['apm', 'show', '--json', name]))
            except subprocess.CalledProcessError:
                # For example, if the package has not been published yet.
                logging.info('apm info failed for %s. It may not yet be published.', name)
                info = {}
            self._info_by_name[name] = info
        return self._info_by_name[name]

    def is_published(self, package_name, semver):
        url = 'https://www.atom.io/api/packages/%s/' % package_name
        try:
            response = urlopen(url)
            contents = response.read()
        except URLError, e:
            logging.error('Failed to fetch %s: %s', url, e)
            return False

        metadata = json_loads(contents)
        return semver in metadata['versions']
예제 #2
0
파일: npm.py 프로젝트: etcinit/nuclide
    def is_published(self, package_name, semver):
        try:
            metadata = json_loads(self._execute(['npm', 'info', '--json', package_name]))
        except subprocess.CalledProcessError:
            logging.info('npm info failed for %s. It may not yet be published.', package_name)
            return False

        return semver in metadata['versions']
예제 #3
0
파일: npm.py 프로젝트: etcinit/nuclide
 def info(self, package_root, force=False):
     # Memoize the info accessor by default unless forced to refetch.
     if force or not package_root in self._info_by_root:
         try:
             info = json_loads(self._execute(['npm', 'info', '--json'], cwd=package_root))
         except subprocess.CalledProcessError:
             # For example, if the package has not been published yet.
             logging.info('npm info failed for %s. It may not yet be published.', package_root)
             info = {}
         self._info_by_root[package_root] = info
     return self._info_by_root[package_root]
예제 #4
0
파일: apm.py 프로젝트: valgaze/nuclide
 def info(self, name, force=False):
     # Memoize the info accessor by default unless forced to refetch.
     if force or not name in self._info_by_name:
         try:
             info = json_loads(self._execute(['apm', 'show', '--json', name]))
         except subprocess.CalledProcessError:
             # For example, if the package has not been published yet.
             logging.info('apm info failed for %s. It may not yet be published.', name)
             info = {}
         self._info_by_name[name] = info
     return self._info_by_name[name]
예제 #5
0
파일: npm.py 프로젝트: raj2304sh/nuclide
 def info(self, package_root, force=False):
     # Memoize the info accessor by default unless forced to refetch.
     if force or not package_root in self._info_by_root:
         try:
             info = json_loads(self._execute(['npm', 'info', '--json'], cwd=package_root))
         except subprocess.CalledProcessError:
             # For example, if the package has not been published yet.
             logging.info('npm info failed for %s. It may not yet be published.', package_root)
             info = {}
         self._info_by_root[package_root] = info
     return self._info_by_root[package_root]
예제 #6
0
파일: npm.py 프로젝트: valgaze/nuclide
    def is_published(self, package_name, semver):
        try:
            metadata = json_loads(
                self._execute(['npm', 'info', '--json', package_name]))
        except subprocess.CalledProcessError:
            logging.info(
                'npm info failed for %s. It may not yet be published.',
                package_name)
            return False

        return semver in metadata['versions']