Vim, mostly
This commit is contained in:
parent
90d5cd4d1f
commit
3f720e882d
7 changed files with 136 additions and 30 deletions
59
config/scripts/ovhcli
Executable file
59
config/scripts/ovhcli
Executable file
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import ovh
|
||||
import xdg.BaseDirectory
|
||||
import urllib.request
|
||||
from pprint import pprint
|
||||
import json
|
||||
import logging
|
||||
import coloredlogs
|
||||
import argparse
|
||||
|
||||
coloredlogs.install(level='DEBUG', fmt='%(levelname)s %(message)s')
|
||||
log = logging.getLogger()
|
||||
|
||||
debug = None
|
||||
|
||||
class OvhCli():
|
||||
ROOT = "https://api.ovh.com/1.0?null"
|
||||
def __init__(self):
|
||||
self.cacheDir = os.path.join(xdg.BaseDirectory.xdg_cache_home, 'ovhcli')
|
||||
# TODO Corner cases: links, cache dir not done, configurable cache
|
||||
if not os.path.isdir(self.cacheDir):
|
||||
assert not os.path.exists(self.cacheDir)
|
||||
os.makedirs(self.cacheDir)
|
||||
|
||||
def updateCache(self):
|
||||
log.info("Downloading the API description")
|
||||
rootJsonPath = os.path.join(self.cacheDir, 'root.json')
|
||||
log.debug(f"{self.ROOT} -> {rootJsonPath}")
|
||||
urllib.request.urlretrieve(self.ROOT, rootJsonPath)
|
||||
with open(rootJsonPath, 'rt') as rootJson:
|
||||
root = json.load(rootJson)
|
||||
basePath = root['basePath']
|
||||
|
||||
for apiRoot in root['apis']:
|
||||
fmt = 'json'
|
||||
assert fmt in apiRoot['format']
|
||||
path = apiRoot['path']
|
||||
schema = apiRoot['schema'].format(format=fmt, path=path)
|
||||
apiJsonPath = os.path.join(self.cacheDir, schema[1:])
|
||||
apiJsonUrl = basePath + schema
|
||||
log.debug(f"{apiJsonUrl} -> {apiJsonPath}")
|
||||
apiJsonPathDir = os.path.dirname(apiJsonPath)
|
||||
if not os.path.isdir(apiJsonPathDir):
|
||||
os.makedirs(apiJsonPathDir)
|
||||
urllib.request.urlretrieve(apiJsonUrl, apiJsonPath)
|
||||
|
||||
def createParser(self):
|
||||
parser = argparse.ArgumentParser(description='Access the OVH API')
|
||||
return parser
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
cli = OvhCli()
|
||||
# cli.updateCache()
|
||||
parser = cli.createParser()
|
||||
args = parser.parse_args()
|
||||
print(args)
|
Loading…
Add table
Add a link
Reference in a new issue