docs: def prompt(self, error=''):
          """
          Prompts the user to set the value for this item.
          
          :return     <bool> | success
          """
          if self.hidden:
              return True
  
          cmd = [self.label]
  
          if self.default is not None:
              cmd.append('(default: {0})'.format(self.default))
          elif not self.required:
              cmd.append('(default: )')
  
          if self.type == 'bool':
              cmd.append('(y/n)')
  
          if self.choices:
              print 'Choices:'
              for choice in self.choices:
                  print choice
          if error:
              print error
  
          value = raw_input(' '.join(cmd) + ':')
          if value == '':
              value = self.default
  
          if self.type == 'bool':
              if value == 'y':
                  value = True
              elif value == 'n':
                  value = False
              else:
                  value = self.default
  
          if value is None and self.required:
              return self.prompt('{0} is required.')
  
          if self.regex and not re.match(self.regex, value):
              error = '{0} must match {1}'.format(self.name, self.regex)
              return self.prompt(error)
  
          self.value = value
          return True