public override void Initialize(Config config) { Type[] types = null; try { types = CodeGeneratorUtil.LoadTypesFromCodeGeneratorAssemblies(); } catch (Exception ex) { _configException = ex; } if (_configException == null) { var defaultEnabledDataProviderNames = initPhase <ICodeGeneratorDataProvider>(types, out _availableDataProviderTypes, out _availableDataProviderNames); var defaultEnabledGeneratorNames = initPhase <ICodeGenerator>(types, out _availableGeneratorTypes, out _availableGeneratorNames); var defaultEnabledPostProcessorNames = initPhase <ICodeGenFilePostProcessor>(types, out _availablePostProcessorTypes, out _availablePostProcessorNames); _codeGeneratorConfig = new CodeGeneratorConfig(config, defaultEnabledDataProviderNames, defaultEnabledGeneratorNames, defaultEnabledPostProcessorNames); _contexts = new List <string>(_codeGeneratorConfig.contexts); _contextList = new UnityEditorInternal.ReorderableList(_contexts, typeof(string), true, true, true, true); _contextList.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "Contexts"); _contextList.drawElementCallback = (rect, index, isActive, isFocused) => { rect.width -= 20; _contexts[index] = EditorGUI.TextField(rect, _contexts[index]); }; _contextList.onAddCallback = list => list.list.Add("New Context"); _contextList.onCanRemoveCallback = list => list.count > 1; _contextList.onChangedCallback = list => GUI.changed = true; } }
static void scanDlls() { if (File.Exists(Preferences.configPath)) { printTypes(CodeGeneratorUtil.LoadTypesFromCodeGeneratorAssemblies()); printTypes(CodeGeneratorUtil.LoadTypesFromAssemblies()); } else { printNoConfig(); } }
static void status() { if (File.Exists(Preferences.configPath)) { var fileContent = File.ReadAllText(Preferences.configPath); var properties = new Properties(fileContent); var config = new CodeGeneratorConfig(new Config(fileContent)); _logger.Debug(config.ToString()); Type[] types = null; string[] configurableKeys = null; try { types = CodeGeneratorUtil.LoadTypesFromCodeGeneratorAssemblies(); configurableKeys = getConfigurableKeys( CodeGeneratorUtil.GetUsed <ICodeGeneratorDataProvider>(types, config.dataProviders), CodeGeneratorUtil.GetUsed <ICodeGenerator>(types, config.codeGenerators), CodeGeneratorUtil.GetUsed <ICodeGenFilePostProcessor>(types, config.postProcessors) ); } catch (Exception ex) { foreach (var key in getUnusedKeys(properties)) { _logger.Info("Unused key: " + key); } foreach (var key in getMissingKeys(properties)) { _logger.Warn("Missing key: " + key); } throw ex; } foreach (var key in getUnusedKeys(properties).Where(key => !configurableKeys.Contains(key))) { _logger.Info("Unused key: " + key); } foreach (var key in getMissingKeys(properties)) { _logger.Warn("Missing key: " + key); } foreach (var key in configurableKeys.Where(key => !properties.HasKey(key))) { _logger.Warn("Missing key: " + key); } printUnavailable(CodeGeneratorUtil.GetUnavailable <ICodeGeneratorDataProvider>(types, config.dataProviders)); printUnavailable(CodeGeneratorUtil.GetUnavailable <ICodeGenerator>(types, config.codeGenerators)); printUnavailable(CodeGeneratorUtil.GetUnavailable <ICodeGenFilePostProcessor>(types, config.postProcessors)); printAvailable(CodeGeneratorUtil.GetAvailable <ICodeGeneratorDataProvider>(types, config.dataProviders)); printAvailable(CodeGeneratorUtil.GetAvailable <ICodeGenerator>(types, config.codeGenerators)); printAvailable(CodeGeneratorUtil.GetAvailable <ICodeGenFilePostProcessor>(types, config.postProcessors)); } else { printNoConfig(); } }