def _search_recipes(self, pattern=None, ignorecase=True): def get_ref(_pattern): if not isinstance(_pattern, ConanFileReference): try: ref_ = ConanFileReference.loads(_pattern) except (ConanException, TypeError): ref_ = None else: ref_ = _pattern return ref_ # Conan references in main storage if pattern: pattern = str(pattern) b_pattern = translate(pattern) b_pattern = re.compile(b_pattern, re.IGNORECASE) \ if ignorecase else re.compile(b_pattern) subdirs = list_folder_subdirs(basedir=self._server_store.store, level=5) if not pattern: return sorted([ ConanFileReference(*folder.split("/")).copy_clear_rev() for folder in subdirs ]) else: ret = set() for subdir in subdirs: new_ref = ConanFileReference(*subdir.split("/")) if _partial_match(b_pattern, repr(new_ref)): ret.add(new_ref.copy_clear_rev()) return sorted(ret)
def test_search(self): """ check the dict is returned by get_packages_info service """ # Creating and saving conans, packages, and conans.vars ref2 = ConanFileReference("openssl", "3.0", "lasote", "stable", DEFAULT_REVISION_V1) ref3 = ConanFileReference("Assimp", "1.10", "fenix", "stable", DEFAULT_REVISION_V1) ref4 = ConanFileReference("assimpFake", "0.1", "phil", "stable", DEFAULT_REVISION_V1) pref2 = PackageReference(ref2, "12345587754", DEFAULT_REVISION_V1) pref3 = PackageReference(ref3, "77777777777", DEFAULT_REVISION_V1) conan_vars = """ [options] use_Qt=%s """ conan_vars1 = conan_vars % "True" conan_vars2 = conan_vars % "False" conan_vars3 = conan_vars % "True" save_files(self.server_store.package(self.pref), {CONANINFO: conan_vars1}) self.server_store.update_last_package_revision(self.pref) save_files(self.server_store.package(pref2), {CONANINFO: conan_vars2}) self.server_store.update_last_package_revision(pref2) save_files(self.server_store.package(pref3), {CONANINFO: conan_vars3}) self.server_store.update_last_package_revision(pref3) save_files(self.server_store.export(ref4), {"dummy.txt": "//"}) info = self.search_service.search() expected = [r.copy_clear_rev() for r in [ref3, ref4, self.ref, ref2]] self.assertEqual(expected, info) info = self.search_service.search(pattern="Assimp*", ignorecase=False) self.assertEqual(info, [ref3.copy_clear_rev()]) info = self.search_service.search_packages(ref2, None) self.assertEqual(info, {'12345587754': {'content': '\n[options]\n use_Qt=False\n', 'full_requires': [], 'options': {'use_Qt': 'False'}, 'recipe_hash': None, 'settings': {} }}) info = self.search_service.search_packages(ref3, None) self.assertEqual(info, {'77777777777': {'content': '\n[options]\n use_Qt=True\n', 'full_requires': [], 'options': {'use_Qt': 'True'}, 'recipe_hash': None, 'settings': {}} })
def _search_recipes(self, pattern=None, ignorecase=True): subdirs = list_folder_subdirs(basedir=self._server_store.store, level=5) if not pattern: return sorted([ ConanFileReference(*folder.split("/")).copy_clear_rev() for folder in subdirs ]) else: # Conan references in main storage pattern = str(pattern) b_pattern = translate(pattern) b_pattern = re.compile( b_pattern, re.IGNORECASE) if ignorecase else re.compile(b_pattern) ret = set() for subdir in subdirs: new_ref = ConanFileReference(*subdir.split("/")) if _partial_match(b_pattern, repr(new_ref)): ret.add(new_ref.copy_clear_rev()) return sorted(ret)