예제 #1
0
def _get_app_to_push_to(build, api_key):
    app = build.tool_config.get('web.profile.heroku_app_name')

    if app is not None:
        return app

    LOG.info('Querying heroku about registered apps...')
    apps = json.loads(_heroku_get(api_key, 'apps').content)
    app_names = [app['name'] for app in apps]

    create_new_heroku_app = True
    if app_names:
        message = (
            "You don't have a heroku app name specified in local_config.json."
            'You can choose either to:')

        chosen_n = lib.ask_multichoice(
            question_text=message,
            choices=[
                'Create a new heroku application',
                'Push to a currently registered heroku application'
            ])

        if chosen_n == 1:
            create_new_heroku_app = True
        else:
            create_new_heroku_app = False

    # either create a new heroku app, or choose an already existing app
    if create_new_heroku_app:
        # TODO: allow user to specify app name?
        # have to deal with name already taken
        LOG.info('Creating new heroku application')
        response = _heroku_post(api_key, 'apps', data='app[stack]=cedar')
        chosen_app = json.loads(response.content)['name']

    else:
        chosen_n = lib.ask_multichoice(
            question_text='Choose an existing heroku app to deploy to:',
            choices=app_names,
            radio=False)
        chosen_app = app_names[chosen_n - 1]

    lib.set_dotted_attribute(
        build, 'web.profiles.%s.heroku_app_name' % build.tool_config.profile(),
        chosen_app)
    return chosen_app
예제 #2
0
def _get_app_to_push_to(build, api_key):
	app = build.tool_config.get('web.profile.heroku_app_name')

	if app is not None:
		return app

	LOG.info('Querying heroku about registered apps...')
	apps = json.loads(_heroku_get(api_key, 'apps').content)
	app_names = [app['name'] for app in apps]

	create_new_heroku_app = True
	if app_names:
		message = (
			"You don't have a heroku app name specified in local_config.json."
			'You can choose either to:'
		)

		chosen_n = lib.ask_multichoice(question_text=message, choices=[
			'Create a new heroku application',
			'Push to a currently registered heroku application'
		])

		if chosen_n == 1:
			create_new_heroku_app = True
		else:
			create_new_heroku_app = False

	# either create a new heroku app, or choose an already existing app
	if create_new_heroku_app:
		# TODO: allow user to specify app name?
		# have to deal with name already taken
		LOG.info('Creating new heroku application')
		response = _heroku_post(api_key, 'apps', data='app[stack]=cedar')
		chosen_app = json.loads(response.content)['name']

	else:
		chosen_n = lib.ask_multichoice(question_text='Choose an existing heroku app to deploy to:', choices=app_names, radio=False)
		chosen_app = app_names[chosen_n - 1]

	lib.set_dotted_attribute(
		build,
		'web.profiles.%s.heroku_app_name' % build.tool_config.profile(),
		chosen_app
	)
	return chosen_app
예제 #3
0
def _get_heroku_api_key(build):
    """Get a heroku API key for interaction with the heroku API.

	First looks to see if we have one stored in local_config.json,
	if not then asks the user for their heroku credentials
	so we can authenticate with the service to obtain one.
	"""
    api_key = build.tool_config.get('web.profile.heroku_api_key')

    while api_key is None:
        heroku_username, heroku_password = _request_heroku_credentials()
        api_key = _heroku_get_api_key(heroku_username, heroku_password)

        if api_key is not None:
            lib.set_dotted_attribute(
                build,
                'web.profiles.%s.heroku_api_key' % build.tool_config.profile(),
                api_key)

    # TODO: may want to check the api key is actually valid by hitting the api?
    return api_key
예제 #4
0
def _get_heroku_api_key(build):
	"""Get a heroku API key for interaction with the heroku API.

	First looks to see if we have one stored in local_config.json,
	if not then asks the user for their heroku credentials
	so we can authenticate with the service to obtain one.
	"""
	api_key = build.tool_config.get('web.profile.heroku_api_key')

	while api_key is None:
		heroku_username, heroku_password = _request_heroku_credentials()
		api_key = _heroku_get_api_key(heroku_username, heroku_password)

		if api_key is not None:
			lib.set_dotted_attribute(
				build,
				'web.profiles.%s.heroku_api_key' % build.tool_config.profile(),
				api_key
			)

	# TODO: may want to check the api key is actually valid by hitting the api?
	return api_key