Source code for canvascli.cli
# -*- coding: utf-8 -*-
"""Console script for canvascli."""
# Standard library imports
import sys
# Local imports
from canvascli.parser import ArgumentParserError, CommandParserHandler
[docs]def main(commands_list=None, print_help=True):
"""
Main entry fucntion.
`commands_list` and `print_help` are useful for debugging and testing.
"""
parser = CommandParserHandler()
if print_help:
parser.print_help()
counter = 0
while True:
if commands_list:
data = commands_list.pop(0)
else:
data = input('\nEnter command: ') # pragma: no cover
raw_args = data.strip().split(' ')
raw_args = [arg.strip() for arg in raw_args if arg.strip()]
if raw_args:
# Accept lower case commands
raw_args = [raw_args[0].upper()] + raw_args[1:]
try:
namespace = parser.parse_args(raw_args)
args = vars(namespace) # Convert to dictionary
canvas_method = args.pop('func', None)
args.pop('help', None)
if canvas_method:
canvas_method(**args)
except ArgumentParserError as error:
print(' ' + error.message.capitalize() + '. ' + parser.HELP)
except SystemExit:
return 0
except Exception as error:
print(' ' + str(error))
counter += 1
parser.print_canvas()
if __name__ == "__main__":
sys.exit(main()) # pragma: no cover