Skip to content

Commit

Permalink
✨Adding and removing depots (#299)
Browse files Browse the repository at this point in the history
* add depot

* remove depot & query depot

* fix typo

* ui.echo instead of print

* add docstrings

* Better formatting & confirmation messages

* Documentation for adding/removing depots

* Better formatting

* Removed newlines

* Updated docs
  • Loading branch information
mayankpatibandla authored Oct 4, 2023
1 parent 149562b commit 4daf497
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 0 deletions.
44 changes: 44 additions & 0 deletions pros/cli/conductor.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from pros.conductor.templates import ExternalTemplate
from pros.ga.analytics import analytics


@pros_root
def conductor_cli():
pass
Expand Down Expand Up @@ -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")

11 changes: 11 additions & 0 deletions pros/conductor/conductor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()]
45 changes: 45 additions & 0 deletions pros/conductor/depots.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Adding Depots

`pros conduct add-depot <name-of-your-depot> <https://url-for-your-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 <name-of-your-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
>
```

0 comments on commit 4daf497

Please sign in to comment.