def run(self, cmd, args, options):
		cik = options['cik']
		rpc = options['rpc']
		ProvisionException = options['provision-exception']
		ExoException = options['exception']
		ExoUtilities = options['utils']
		exoconfig = options['config']
		options['pop'] = options['provision']

		err = "This command requires 'vendor' and 'vendortoken' in your Exoline config. See http://github.com/exosite/exoline#provisioning"
		if 'vendortoken' not in exoconfig.config or exoconfig.config['vendortoken'] is None:
			raise ExoException(err)
		if 'vendor' not in exoconfig.config or exoconfig.config['vendor'] is None:
			raise ExoException(err)

		argv = [cmd, args['<command>']] + args['<args>']
		methodInfo = self.digMethod(argv, self)
		if len(methodInfo) == 3:
			meth, obj, name = methodInfo
			if meth is not None and obj is not None:
				if args['<command>'] in obj.subcommands:
					doc = meth.__doc__
					try:
						args_cmd = docopt(doc, argv=argv)
					except __HOLE__ as ex:
						return ExoUtilities.handleSystemExit(ex)
					return meth(obj(), name, args_cmd, options)
				else:
					raise ExoException('Unknown command {0}. Try "exo --help"'.format(args['<command>']))

			else:
				raise ExoException("Could not find requested sub command {0}".format(args['<command>']))
		else:
			# did not find method. Detect help request manually or fail
			if ('-h' in argv or '--help' in argv):
				cls = self.findSubcommandClass(argv, self)
				print(cls.doc())
				return 0
			else:
				raise ExoException("Could not find requested sub command {0}".format(args['<command>']))

#  vim: set ai noet sw=4 ts=4 :
dataset/ETHPy150Open exosite/exoline/exoline/plugins/provision.py/Plugin.run