Compare commits

...

5 Commits

6 changed files with 37 additions and 7 deletions

View File

@ -38,6 +38,8 @@ class Command:
self.needs_api_key = True
self.default = "help"
# FIXME: add support for argument parsing
self.init()
if self.needs_api_key and api_key is None:
@ -48,12 +50,13 @@ class Command:
def exec_shortcut(self, shortcut, *args):
fn = self.find(shortcut)
sig = inspect.signature(fn)
parity = len(sig.parameters)
if len(args) < len(sig.parameters):
if len(args) < parity:
name = fn.__name__[len(self.FTR_PRFX):].lower()
raise NotEnoughArgs(name, len(sig.parameters) - len(args))
raise NotEnoughArgs(name, parity - len(args))
data = fn(*args)
data = fn(*args[:parity])
# FIXME: Let functions choose the output format. This will allow help
# functions to still return a rendering.

View File

@ -1,2 +1,4 @@
# FIXME: build this dynamically
__all__ = ["account", "help", "regions", "vpcs"]
__all__ = [
"account", "application", "backup", "billing", "help", "region", "vpc"
]

View File

@ -0,0 +1,11 @@
import vultron.cmd
class Application(vultron.cmd.Command):
def init(self):
self.needs_api_key = False
def vultron_list(self):
"""Display all available applications."""
apps = self.api.get("applications")
return apps["applications"]

14
vultron/cmds/backup.py Normal file
View File

@ -0,0 +1,14 @@
import vultron.cmd
class Backup(vultron.cmd.Command):
def vultron_list(self):
"""Display all stored snapshots."""
backups = self.api.get("backups")
return backups["backups"]
def vultron_get(self, backup_id):
"""Display a specific snapshot."""
backup = self.api.get("backups", backup_id)
return [backup["backup"]]

View File

@ -1,7 +1,7 @@
import vultron.cmd
import vultron.display
class Regions(vultron.cmd.Command):
class Region(vultron.cmd.Command):
"""Query for information on Vultr regions."""
def init(self):
@ -13,7 +13,7 @@ class Regions(vultron.cmd.Command):
regions = self.api.get("regions")
return regions["regions"]
def vultron_plan(self, region_id):
def vultron_plans(self, region_id):
"""Display available plans for a given region."""
plans = self.api.get("regions", region_id, "availability")

View File

@ -1,7 +1,7 @@
import vultron.cmd
import vultron.display
class Vpcs(vultron.cmd.Command):
class Vpc(vultron.cmd.Command):
"""Query for information on VPCs."""
def vultron_list(self):