Mini Shell
# -*- coding: utf-8 -*-
# Command line arguments parser for cloudlinux-license utility
# cloudlinux-license Utility to check/set Cloudlinux license
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
from docopt import docopt
from docopt import DocoptExit
from schema import Schema, And, Or, SchemaError
def parse_cloudlinux_packages_opts(argv, _is_json_need=False):
"""
Parse arguments for cloudlinux-packages command
:param argv: sys.argv
:param _is_json_need: sys.argv contains --json key
:return cortege: (error_flag, s_message)
"""
# program name
prog_name = "cloudlinux-license"
docstring = f"""Utility to get Cloudlinux license status or register Cloudlinux license
Usage:
{prog_name} [get] [--json]
{prog_name} [set] [--json] [--key <str>]
{prog_name} [set] [--json] --ip
{prog_name} get_trial --config <str> [--json]
{prog_name} (-h | --help)
Options:
--config <str> Register Cloudlinux trial license
--json Return data in JSON format
--key <str> Register Cloudlinux license by key
--ip Register IP based Cloudlinux license
-h, --help Show this help message and exit
"""
try:
args = docopt(docstring, argv)
except DocoptExit:
s_error_string = 'ERROR: Invalid parameter passed'
if not _is_json_need:
s_error_string += "\n\n" + docstring
return False, s_error_string
# get mode by default
if not args["get"] and not args["set"] and not args["get_trial"]:
args["get"] = True
s = Schema({
"get": bool,
"set": bool,
"get_trial": bool,
"--config": Or(None, str),
"--json": And(bool, lambda x: x, error="use --json option, other modes currently unsupported"),
"--key": Or(None, str),
"--ip": bool,
"--help": bool,
})
try:
args = s.validate(args)
status = True
except SchemaError as e:
args = str(e)
status = False
return status, args
Zerion Mini Shell 1.0