コード例 #1
0
        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;
            }
        }
コード例 #2
0
 static void scanDlls()
 {
     if (File.Exists(Preferences.configPath))
     {
         printTypes(CodeGeneratorUtil.LoadTypesFromCodeGeneratorAssemblies());
         printTypes(CodeGeneratorUtil.LoadTypesFromAssemblies());
     }
     else
     {
         printNoConfig();
     }
 }
コード例 #3
0
        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();
            }
        }