docs: def create_new_project():
      '''Creates a new XBMC Addon directory based on user input'''
      readline.parse_and_bind('tab: complete')
  
      print \
  '''
      xbmcswift2 - A micro-framework for creating XBMC plugins.
      xbmc@jonathanbeluch.com
      --
  '''
      print 'I\'m going to ask you a few questions to get this project' \
          ' started.'
  
      opts = {}
  
      # Plugin Name
      opts['plugin_name'] = get_valid_value(
          'What is your plugin name?',
          validate_nonblank
      )
  
      # Plugin ID
      opts['plugin_id'] = get_valid_value(
          'Enter your plugin id.',
          validate_pluginid,
          'plugin.video.%s' % (opts['plugin_name'].lower().replace(' ', ''))
      )
  
      # Parent Directory
      opts['parent_dir'] = get_valid_value(
          'Enter parent folder (where to create project)',
          validate_isfolder,
          getcwd()
      )
      opts['plugin_dir'] = os.path.join(opts['parent_dir'], opts['plugin_id'])
      assert not os.path.isdir(opts['plugin_dir']), \
          'A folder named %s already exists in %s.' % (opts['plugin_id'],
                                                       opts['parent_dir'])
  
      # Provider
      opts['provider_name'] = get_valid_value(
          'Enter provider name',
          validate_nonblank,
      )
  
      # Create the project folder by copying over skel
      copytree(SKEL, opts['plugin_dir'], ignore=ignore_patterns('*.pyc'))
  
      # Walk through all the new files and fill in with out options
      for root, dirs, files in os.walk(opts['plugin_dir']):
          for filename in files:
              update_file(os.path.join(root, filename), opts)
  
      print 'Projects successfully created in %s.' % opts['plugin_dir']
      print 'Done.'