Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import click 

2import yaml 

3import json 

4from jinja2 import Environment 

5from .cli import cli, drvmap, loadmodules 

6 

7 

8def yamlify(data): 

9 return yaml.dump(data, default_flow_style=False) 

10 

11 

12@cli.command() 

13@click.option("--driver", default="dummy", type=click.Choice(drvmap.keys())) 

14@click.option("--extension", "-x", multiple=True) 

15@click.option("--docdata", type=click.File('r')) 

16def docdata(driver, extension, docdata): 

17 drvcls = loadmodules(driver, extension) 

18 def_text = "(description write here)\n" 

19 result = {} 

20 if docdata is not None: 

21 result = yaml.safe_load(docdata) 

22 mods = drvcls.listmodule() 

23 for k in sorted(mods.keys()): 

24 print("%s: |" % (k)) 

25 txt = result.get(k, def_text) 

26 print(" " + "\n ".join(txt.split("\n"))) 

27 

28 

29@cli.command() 

30@click.option("--driver", default="dummy", type=click.Choice(drvmap.keys())) 

31@click.option("--extension", "-x", multiple=True) 

32@click.option("--name", default="echo") 

33@click.option("--docdata", type=click.File('r'), required=True) 

34@click.option("--longdoc", type=click.File('r')) 

35@click.option("--template", required=True) 

36def show(driver, extension, name, template, docdata, longdoc): 

37 drvcls = loadmodules(driver, extension) 

38 mods = drvcls.listmodule() 

39 arg = { 

40 "name": name, 

41 "example": mods.get(name), 

42 "schema": drvcls.schema.get("items", {}).get("properties", {}).get(name, None), 

43 "description": yaml.safe_load(docdata).get(name), 

44 } 

45 if longdoc is not None: 

46 arg["long_description"] = longdoc.read() 

47 env = Environment() 

48 env.filters['jsonify'] = json.dumps 

49 env.filters['yamlify'] = yamlify 

50 with open(template) as tmpl: 

51 print(env.from_string(tmpl.read()).render(arg)) 

52 

53 

54@cli.command("list-missing-schema", help="list missing json schema") 

55@click.option("--driver", default="dummy", type=click.Choice(drvmap.keys())) 

56@click.option("--extension", "-x", multiple=True) 

57def list_missing_schema(driver, extension): 

58 drvcls = loadmodules(driver, extension) 

59 props = drvcls.schema.get("items", {}).get("properties", {}) 

60 mods = drvcls.listmodule() 

61 ignore = ["name", "register", "when", "when_not", "with_items", "loop_control"] 

62 for k in sorted(mods.keys()): 

63 if k not in props: 

64 click.echo("missing schema: %s" % (k,)) 

65 for k in sorted(props.keys()): 

66 if k in ignore: 

67 continue 

68 if k not in mods: 

69 click.echo("missing method: %s" % (k,)) 

70 

71 

72if __name__ == "__main__": 

73 cli()