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']
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']
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]
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): 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']