summaryrefslogtreecommitdiffstats
path: root/base/common/python/pki/cli.py
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2016-02-24 22:22:10 +0100
committerAde Lee <alee@redhat.com>2016-02-26 13:12:14 -0500
commit935633c5ea9f2b5c4321d924af166367008ac4b3 (patch)
tree514fdf2533b8be3cc3fe7789a3736b294f6952ba /base/common/python/pki/cli.py
parent1d58b883ff9d0056d89d74d30f1375ab12d01f03 (diff)
downloadpki-935633c5ea9f2b5c4321d924af166367008ac4b3.tar.gz
pki-935633c5ea9f2b5c4321d924af166367008ac4b3.tar.xz
pki-935633c5ea9f2b5c4321d924af166367008ac4b3.zip
Added Python wrapper for pki pkcs12-import.
A Python wrapper module has been added for the pki pkcs12-import command to provide a mechanism to implement a workaround for JSS import limitation. Additional fixes by cheimes have been merged into this patch: setup.py: We must track all sub-packages manually. pylint-build-scan.py: pylint confuses the 'pki' package with the 'pki' command. The workaround symlinks the command and analysis the command under its alternative name. https://fedorahosted.org/pki/ticket/1742
Diffstat (limited to 'base/common/python/pki/cli.py')
-rw-r--r--base/common/python/pki/cli.py203
1 files changed, 0 insertions, 203 deletions
diff --git a/base/common/python/pki/cli.py b/base/common/python/pki/cli.py
deleted file mode 100644
index 3be9cce2e..000000000
--- a/base/common/python/pki/cli.py
+++ /dev/null
@@ -1,203 +0,0 @@
-# Authors:
-# Endi S. Dewata <edewata@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2015 Red Hat, Inc.
-# All rights reserved.
-#
-
-from __future__ import absolute_import
-from __future__ import print_function
-import collections
-import getopt
-import sys
-from six import itervalues
-
-
-class CLI(object):
-
- def __init__(self, name, description):
-
- self.name = name
- self.description = description
- self.parent = None
-
- self.verbose = False
- self.debug = False
-
- self.modules = collections.OrderedDict()
-
- def set_verbose(self, verbose):
- self.verbose = verbose
- if self.parent:
- self.parent.set_verbose(verbose)
-
- def set_debug(self, debug):
- self.debug = debug
- if self.parent:
- self.parent.set_debug(debug)
-
- def get_full_name(self):
- if self.parent:
- return self.parent.get_full_module_name(self.name)
- return self.name
-
- def get_full_module_name(self, module_name):
- return self.get_full_name() + '-' + module_name
-
- def add_module(self, module):
- self.modules[module.name] = module
- module.parent = self
-
- def get_module(self, name):
- return self.modules.get(name)
-
- def get_top_module(self):
- if self.parent:
- return self.parent.get_top_module()
- return self
-
- def print_message(self, message):
- print('-' * len(message))
- print(message)
- print('-' * len(message))
-
- def print_help(self):
-
- print('Commands:')
-
- for module in itervalues(self.modules):
- full_name = module.get_full_name()
- print(' {:30}{:30}'.format(full_name, module.description))
-
- def find_module(self, command):
-
- module = self
-
- while True:
- (module, command) = module.parse_command(command)
-
- if not module or not command:
- return module
-
- def parse_command(self, command):
-
- # A command consists of parts joined by dashes: <part 1>-<part 2>-...-<part N>.
- # For example: cert-request-find
-
- # The command will be split into module name and sub command, for example:
- # - module name: cert
- # - sub command: request-find
- module_name = None
- sub_command = None
-
- # Search the module by incrementally adding parts into module name.
- # Repeat until it finds the module or until there is no more parts to
- # add.
- module = None
- position = 0
-
- while True:
-
- # Find the next dash.
- i = command.find('-', position)
- if i >= 0:
- # Dash found. Split command into module name and sub command.
- module_name = command[0:i]
- sub_command = command[i + 1:]
- else:
- # Dash not found. Use the whole command.
- module_name = command
- sub_command = None
-
- if self.debug:
- print('Module: %s' % module_name)
-
- m = self.get_module(module_name)
- if m:
- # Module found. Check sub command.
- if not sub_command:
- # No sub command. Use this module.
- module = m
- break
-
- # There is a sub command. It must be processed by module's
- # children.
- if len(m.modules) > 0:
- # Module has children. Use this module.
- module = m
- break
-
- # Module doesn't have children. Keep looking.
-
- # If there's no more dashes, stop.
- if i < 0:
- break
-
- position = i + 1
-
- return (module, sub_command)
-
- def parse_args(self, args):
-
- command = args[0]
- (module, sub_command) = self.parse_command(command)
-
- if not module:
- raise Exception('Invalid module "%s".' % command)
-
- # Prepare module arguments.
- if sub_command:
- # If module command exists, include it as arguments:
- # <module command> <args>...
- module_args = [sub_command] + args[1:]
-
- else:
- # Otherwise, pass the original arguments: <args>...
- module_args = args[1:]
-
- return (module, module_args)
-
- def execute(self, argv):
-
- try:
- opts, args = getopt.getopt(argv, 'v', [
- 'verbose', 'help'])
-
- except getopt.GetoptError as e:
- print('ERROR: ' + str(e))
- self.print_help()
- sys.exit(1)
-
- if len(args) == 0:
- self.print_help()
- sys.exit()
-
- for o, _ in opts:
- if o in ('-v', '--verbose'):
- self.set_verbose(True)
-
- elif o == '--help':
- self.print_help()
- sys.exit()
-
- else:
- print('ERROR: unknown option %s' % o)
- self.print_help()
- sys.exit(1)
-
- (module, module_args) = self.parse_args(argv)
-
- module.execute(module_args)