def main_config(): """ django-develop-config CLI entry point. """ if not utils.is_inside_virtual_env(): _fail('Run django-develop-config inside a virtualenv') dd = _get_DjangoDevelop() # type: DjangoDevelop try: [base_settings_module] = sys.argv[1:2] except ValueError: print('Usage: django-develop-config <base_settings_module>') print() # Show current configuration if dd.instance_path.exists(): print('Instance directory: {}'.format(dd.instance_path)) print() config = dd.read_config() base_settings_module = config.get('django-develop', 'base_settings_module', fallback=None) print('Current base settings module: {}'.format( utils.SUCCESS(base_settings_module) if base_settings_module else 'not configured')) print() # TODO: Add CLI flag for include_problems? utils.print_candidate_settings() raise SystemExit(2) else: dd.init_instance(base_settings_module)
def test_is_inside_virtual_env(self): """ Check `utils.is_inside_virtual_env()` against various sets of sys prefix paths. """ system = mock.sentinel.system virtual = mock.sentinel.virtual # These are the sets of sys module attributes that should be present or absent # with various versions of Python and virtualenv / venv. test_cases = { 'py2_base': dict(prefix=system), # Python 3 (as of 3.3 / PEP 405) adds a sys.base_prefix attribute 'py3_base': dict(base_prefix=system, prefix=system), 'py3_venv': dict(base_prefix=system, prefix=virtual), # virtualenv saves sys.real_prefix, and changes the others 'py2_virtualenv': dict(real_prefix=system, prefix=virtual), 'py3_virtualenv': dict(real_prefix=system, prefix=virtual, base_prefix=virtual), } for (label, sys_attrs) in test_cases.items(): with self.subTest(label=label): # Note: The spec=[] is important so that absent sys_attrs raise AttributeError # instead of returning mocks. with mock.patch('django_develop.utils.sys', spec=[], **sys_attrs): expected = sys_attrs['prefix'] is virtual self.assertEqual(utils.is_inside_virtual_env(), expected)
def main(): """ django-develop CLI entry point. """ # XXX: Bail out early if being invoked for autocompletion. utility = ManagementUtility() utility.autocomplete() if not utils.is_inside_virtual_env(): _fail('Run django-develop inside a virtualenv') dd = _get_DjangoDevelop() if not dd.instance_path.exists(): _fail('django-develop not configured, try "django-develop-config"') else: # Set up and hand over to Django dd.activate_dev_settings() utility.execute()