def create(self, database=None, config_file=None): """After a scrape (whether we obtain latest or a search query) we run create to create software repositories based on results. """ from rse.main import Encyclopedia client = Encyclopedia(config_file=config_file, database=database) for repo_id in self.results: repo = get_parser(repo_id) # Add results that don't exist if not client.exists(repo.uid): client.add(repo.uid)
def main(args, extra): # Create a research software encyclopedia enc = Encyclopedia(config_file=args.config_file, database=args.database) # A uid is required here if not args.uid and not args.file: sys.exit("Please provide a software identifier or file to add.") # If a file is provided, add in bulk (skips over those already present) if args.file: enc.bulk_add(args.file) else: enc.add(args.uid)
def create(self, database=None, config_file=None): """After a scrape (whether we obtain latest or a search query) we run create to create software repositories based on results. """ from rse.main import Encyclopedia client = Encyclopedia(config_file=config_file, database=database) for result in self.results: uid = result["url"].split("//")[-1] repo = get_parser(uid) # Add results that don't exist if not client.exists(repo.uid): client.add(repo.uid) if result.get("doi"): client.label(repo.uid, key="doi", value=result.get("doi"))
def create(self, database=None, config_file=None): """After a scrape (whether we obtain latest or a search query) we run create to create software repositories based on results. """ from rse.main import Encyclopedia client = Encyclopedia(config_file=config_file, database=database) for result in self.results: uid = result["url"].split("//")[-1] # If a repository is added that isn't represented try: repo = get_parser(uid) except NotImplementedError as exc: bot.warning(exc) continue # Add results that don't exist if not client.exists(repo.uid): client.add(repo.uid) client.label(repo.uid, key="doi", value=result.get("doi"))
def test_filesystem(tmp_path, database): """Test loading and using a queue with the filesystem database. """ from rse.main import Encyclopedia config_dir = os.path.join(str(tmp_path), "software") os.mkdir(config_dir) config_file = os.path.join(config_dir, "rse.ini") # System exit if doesn't exist with pytest.raises(SystemExit): enc = Encyclopedia(config_file=config_file) enc = Encyclopedia(config_file=config_file, generate=True, database=database) assert enc.config.configfile == config_file assert os.path.exists(config_dir) assert enc.config_dir == config_dir assert enc.config.configfile == os.path.join(enc.config_dir, "rse.ini") assert enc.database == database assert enc.db.database == database if database == "filesystem": assert enc.db.data_base == os.path.join(config_dir, "database") # Test list, empty without anything assert not enc.list() # Add a repo repo = enc.add("github.com/singularityhub/sregistry") assert len(enc.list()) == 1 # enc.get should return last repo, given no id lastrepo = enc.get() assert lastrepo.uid == repo.uid # Summary enc.summary() enc.summary("github.com/singularityhub/sregistry") enc.analyze("github.com/singularityhub/sregistry") enc.analyze_bulk() # Clean up a specific repo (no prompt) enc.clear(repo.uid, noprompt=True) assert len(enc.list()) == 0 enc.clear(noprompt=True) assert not enc.list() # Get the taxonomy or criteria enc.list_taxonomy() enc.list_criteria()