60 lines
1.7 KiB
Python
Executable File
60 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from __future__ import print_function
|
|
import argparse
|
|
import os
|
|
import sys
|
|
from pprint import pprint
|
|
|
|
|
|
try:
|
|
import boxes
|
|
except ImportError:
|
|
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/..")
|
|
import boxes
|
|
|
|
import boxes.generators
|
|
|
|
def printusage():
|
|
print("""Usage:
|
|
boxes [NAME] [options]
|
|
--list list possible names
|
|
--help show help for given NAME
|
|
""")
|
|
|
|
def main():
|
|
generators = {name.split('.')[-1].lower() : box for name, box in
|
|
boxes.generators.getAllBoxGenerators().items()}
|
|
groups = boxes.generators.ui_groups
|
|
groups_by_name = boxes.generators.ui_groups_by_name
|
|
for name, box in generators.items():
|
|
groups_by_name.get(box.ui_group,
|
|
groups_by_name["Misc"]).add(box)
|
|
if len(sys.argv) > 1 and sys.argv[1].startswith("--id="):
|
|
del sys.argv[1]
|
|
if len(sys.argv) == 1:
|
|
printusage()
|
|
elif sys.argv[1] == '--list':
|
|
print("Available generators:")
|
|
for group in groups:
|
|
print('\n' + group.title)
|
|
if group.description:
|
|
print('\n%s\n' % group.description)
|
|
else:
|
|
print()
|
|
for box in group.generators:
|
|
print(" * ", box.__name__, ' - ', box.__doc__ or '')
|
|
else:
|
|
name = sys.argv[1].lower()
|
|
if name.startswith("--generator="):
|
|
name = name[12:]
|
|
if (name in generators):
|
|
box = generators[name]()
|
|
box.parseArgs(sys.argv[2:])
|
|
box.render()
|
|
else:
|
|
sys.stderr.write(str(sys.argv))
|
|
sys.stderr.write("Unknown generator name. Use boxes --list to get a list of available commands.")
|
|
|
|
main()
|