diff --git a/pros/cli/conductor.py b/pros/cli/conductor.py index ee6048d9..79e098f1 100644 --- a/pros/cli/conductor.py +++ b/pros/cli/conductor.py @@ -7,6 +7,7 @@ from pros.conductor.templates import ExternalTemplate from pros.ga.analytics import analytics + @pros_root def conductor_cli(): pass @@ -323,3 +324,46 @@ def info_project(project: c.Project, ls_upgrades): template["upgrades"] = sorted({t.version for t in templates}, key=lambda v: semver.Version(v), reverse=True) ui.finalize('project-report', report) + +@conductor.command('add-depot') +@click.argument('name') +@click.argument('url') +@default_options +def add_depot(name: str, url: str): + """ + Add a depot + + Visit https://pros.cs.purdue.edu/v5/cli/conductor.html to learn more + """ + _conductor = c.Conductor() + _conductor.add_depot(name, url) + + ui.echo(f"Added depot {name} from {url}") + +@conductor.command('remove-depot') +@click.argument('name') +@default_options +def remove_depot(name: str): + """ + Remove a depot + + Visit https://pros.cs.purdue.edu/v5/cli/conductor.html to learn more + """ + _conductor = c.Conductor() + _conductor.remove_depot(name) + + ui.echo(f"Removed depot {name}") + +@conductor.command('query-depots') +@click.option('--url', is_flag=True) +@default_options +def query_depots(url: bool): + """ + Gets all the stored depots + + Visit https://pros.cs.purdue.edu/v5/cli/conductor.html to learn more + """ + _conductor = c.Conductor() + ui.echo(f"Available Depots{' (Add --url for the url)' if not url else ''}:\n") + ui.echo('\n'.join(_conductor.query_depots(url))+"\n") + \ No newline at end of file diff --git a/pros/conductor/conductor.py b/pros/conductor/conductor.py index 7592c659..c7021f01 100644 --- a/pros/conductor/conductor.py +++ b/pros/conductor/conductor.py @@ -320,3 +320,14 @@ def new_project(self, path: str, no_default_libs: bool = False, **kwargs) -> Pro except Exception as e: logger(__name__).exception(e) return proj + + def add_depot(self, name: str, url: str): + self.depots[name] = HttpDepot(name, url) + self.save() + + def remove_depot(self, name: str): + del self.depots[name] + self.save() + + def query_depots(self, url: bool): + return [name + ((' -- ' + depot.location) if url else '') for name, depot in self.depots.items()] diff --git a/pros/conductor/depots.md b/pros/conductor/depots.md new file mode 100644 index 00000000..33a92336 --- /dev/null +++ b/pros/conductor/depots.md @@ -0,0 +1,45 @@ +# Adding Depots + +`pros conduct add-depot ` + +Example: +```bash +$ pros conduct add-depot test "https://pros.cs.purdue.edu/v5/_static/beta/testing-mainline.json" +> Added depot test from https://pros.cs.purdue.edu/v5/_static/beta/testing-mainline.json +``` + +# Removing Depots + +`pros conduct remove-depot ` + +Example: +```bash +$ pros conduct remove-depot test +> Removed depot test +``` + + +# Query Depots + +`pros conduct query-depots --url` +`pros conduct query-depots` + +Examples: +```bash +$ pros conduct query-depots --url +> Available Depots: +> +> kernel-beta-mainline -- https://raw.githubusercontent.com/purduesigbots/pros-mainline/master/beta/kernel-beta-mainline.json +> pros-mainline -- https://purduesigbots.github.io/pros-mainline/pros-mainline.json +> test -- https://pros.cs.purdue.edu/v5/_static/beta/testing-mainline.json +> +``` +```bash +$ pros conduct query-depots +> Available Depots (Add --url for the url): +> +> kernel-beta-mainline +> pros-mainline +> test +> +```