docs: def run(self, args):
          '''
          Run the SPM command
          '''
          command = args[0]
          try:
              if command == 'install':
                  self._install(args)
              elif command == 'local':
                  self._local(args)
              elif command == 'repo':
                  self._repo(args)
              elif command == 'remove':
                  self._remove(args)
              elif command == 'build':
                  self._build(args)
              elif command == 'update_repo':
                  self._download_repo_metadata(args)
              elif command == 'create_repo':
                  self._create_repo(args)
              elif command == 'files':
                  self._list_files(args)
              elif command == 'info':
                  self._info(args)
              elif command == 'list':
                  self._list(args)
              elif command == 'close':
                  self._close()
              else:
                  raise SPMInvocationError('Invalid command \'{0}\''.format(command))
          except SPMException as exc:
              self.ui.error(six.text_type(exc))