Beispiel #1
0
def perform_quickstart(args):
    '''Ask the user for required information to initialize a project with the
    desired configuration automatically.
    '''
    def get_default_template_language():
        for option, default_value in DEFAULT_SETTINGS['general']:
            if option == 'template language':
                return default_value
    # the following instruction text is copied from
    #http://bitbucket.org/birkenfeld/sphinx/src/tip/sphinx/quickstart.py#cl-788
    print('''Please enter values for the following settings
(just press Enter to accept a default value, if one is given in brackets).''')
    prompts = [
        ('project directory', getcwd()),
        ('name of the project', None),
        ('template language', get_default_template_language())]
    answers = []
    for prompt, default_value in prompts:
        try:
            if default_value is None:
                full_prompt = '{0} (required!): '.format(prompt)
            else:
                full_prompt = '{0} [{1}]: '.format(prompt, default_value)
            answer = raw_input(full_prompt) or default_value
            # give the user a 2nd chance to enter a value if the default value
            # is None and the user hit enter anyway
            if answer is None:
                print('Error: the {0} is required'.format(prompt))
                answer = raw_input(full_prompt)
                if not answer:
                    raise EOFError
            answers.append(answer)
        except EOFError:
            sys.exit('interrupted')
    template_language = answers.pop()
    project = Project(*answers)
    template_specific_prompts = DEFAULT_SETTINGS.get(template_language, [])
    template_specific_answers = []
    for option, default_value in template_specific_prompts:
        try:
            prompt = '{0} [{1}]: '.format(option, default_value)
            answer = raw_input(prompt) or default_value
            template_specific_answers.append(answer)
        except EOFError:
            sys.exit('interrupted')
    project.init()
    config_items = izip(template_specific_prompts, template_specific_answers)
    defaultless_config_items = map(itemgetter(0), config_items)
    project.update_config(
        'general', [('template language', template_language)])
    project.update_config(template_language, defaultless_config_items)
    project.create_default_template()
Beispiel #2
0
def init_project(args):
    project = Project(args.project_directory, args.name)
    project.init()