initial creation
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import os
|
||||
|
||||
import click
|
||||
|
||||
cmd_folder = os.path.join(os.path.dirname(__file__), 'commands')
|
||||
cmd_prefix = 'cmd_'
|
||||
|
||||
|
||||
class CLI(click.MultiCommand):
|
||||
def list_commands(self, ctx):
|
||||
"""
|
||||
Obtain a list of all available commands.
|
||||
|
||||
:param ctx: Click context
|
||||
:return: List of sorted commands
|
||||
"""
|
||||
commands = []
|
||||
|
||||
for filename in os.listdir(cmd_folder):
|
||||
if filename.endswith('.py') and filename.startswith(cmd_prefix):
|
||||
commands.append(filename[4:-3])
|
||||
|
||||
commands.sort()
|
||||
|
||||
return commands
|
||||
|
||||
def get_command(self, ctx, name):
|
||||
"""
|
||||
Get a specific command by looking up the module.
|
||||
|
||||
:param ctx: Click context
|
||||
:param name: Command name
|
||||
:return: Module's cli function
|
||||
"""
|
||||
ns = {}
|
||||
|
||||
filename = os.path.join(cmd_folder, cmd_prefix + name + '.py')
|
||||
|
||||
with open(filename) as f:
|
||||
code = compile(f.read(), filename, 'exec')
|
||||
eval(code, ns, ns)
|
||||
|
||||
return ns['cli']
|
||||
|
||||
|
||||
@click.command(cls=CLI)
|
||||
def cli():
|
||||
""" Commands to help manage your project. """
|
||||
pass
|
||||
Reference in New Issue
Block a user