Source code for klak.cli
# -*- coding: utf-8 -*-
"""Console script for klak."""
import sys
import os
from importlib.util import spec_from_loader, module_from_spec
from importlib.machinery import SourceFileLoader
import click
from path import Path
[docs]def import_module_from_file(module_name, path):
"""Load a modules from a raw file path."""
loader = SourceFileLoader(module_name, path)
spec = spec_from_loader(module_name, loader)
module = module_from_spec(spec)
spec.loader.exec_module(module)
return module
[docs]def import_clickfile():
"""Import a python file named Clickfile from os.getcwd()."""
cwd = Path(os.getcwd())
clickfile_path = Path(os.path.join(cwd, "Clickfile"))
if clickfile_path.isfile():
return import_module_from_file("clickfile_cmds", str(clickfile_path))
else:
raise click.exceptions.FileError(
clickfile_path, hint="Error: Could not find Clickfile!"
)
@click.group()
def root():
"""Click n' Klak."""
return 0
[docs]def main():
"""Console script for klak."""
try:
import_clickfile()
except click.exceptions.FileError as exception:
click.secho("\n{error}\n".format(error=str(exception)), fg="red", bold=True)
return 1
return root()
if __name__ == "__main__":
sys.exit(main()) # pragma: no cover