Esempio n. 1
0
        public override void Execute(string[] args)
        {
            if (AssertProperties())
            {
                var properties = LoadProperties();
                var config     = new CodeGeneratorConfig();
                config.Configure(properties);

                ForceAddKeys(config.DefaultProperties, properties);

                Type[] types = null;

                try
                {
                    types = CodeGeneratorUtil.LoadTypesFromPlugins(properties);
                    GetConfigurables(types, config);
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                var askedRemoveKeys = new HashSet <string>();
                var askedAddKeys    = new HashSet <string>();
                while (Fix(askedRemoveKeys, askedAddKeys, types, config, properties))
                {
                }
            }
        }
Esempio n. 2
0
        public override void Execute(string[] args)
        {
            if (AssertProperties())
            {
                var properties = LoadProperties();
                var config     = new CodeGeneratorConfig();
                config.Configure(properties);

                Log.I(config.ToString());

                Type[] types = null;
                Dictionary <string, string> configurables = null;

                try
                {
                    types         = CodeGeneratorUtil.LoadTypesFromPlugins(properties);
                    configurables = CodeGeneratorUtil.GetConfigurables(
                        CodeGeneratorUtil.GetUsed <ICodeGeneratorDataProvider>(types, config.DataProviders),
                        CodeGeneratorUtil.GetUsed <ICodeGenerator>(types, config.CodeGenerators),
                        CodeGeneratorUtil.GetUsed <ICodeGenFilePostProcessor>(types, config.PostProcessors)
                        );
                }
                catch (Exception ex)
                {
                    PrintKeyStatus(config.DefaultProperties.Keys.ToArray(), properties);
                    throw ex;
                }

                var requiredKeys = config.DefaultProperties.Merge(configurables).Keys.ToArray();

                PrintKeyStatus(requiredKeys, properties);
                PrintPluginStatus(types, config);
            }
        }
Esempio n. 3
0
 public override void Execute(string[] args)
 {
     if (AssertProperties())
     {
         PrintTypes(CodeGeneratorUtil.LoadTypesFromPlugins(LoadProperties()));
     }
 }
Esempio n. 4
0
 static Dictionary <string, string> GetConfigurables(Type[] types, CodeGeneratorConfig config)
 {
     return(CodeGeneratorUtil.GetConfigurables(
                CodeGeneratorUtil.GetUsed <ICodeGeneratorDataProvider>(types, config.DataProviders),
                CodeGeneratorUtil.GetUsed <ICodeGenerator>(types, config.CodeGenerators),
                CodeGeneratorUtil.GetUsed <ICodeGenFilePostProcessor>(types, config.PostProcessors)
                ));
 }
Esempio n. 5
0
 public static void AddValue(string question, string value, string[] values, Action <string[]> updateAction,
                             Properties properties)
 {
     Log.I(question + ": '" + value + "' ? (y / n)");
     if (GetUserDecision())
     {
         var valueList = values.ToList();
         valueList.Add(value);
         updateAction(CodeGeneratorUtil.GetOrderedNames(valueList.ToArray()));
         Preferences.SaveProperties(properties);
         Log.I("Added: " + value);
     }
 }
Esempio n. 6
0
        static void PrintPluginStatus(Type[] types, CodeGeneratorConfig config)
        {
            var unavailableDataProviders =
                CodeGeneratorUtil.GetUnavailable <ICodeGeneratorDataProvider>(types, config.DataProviders);
            var unavailableCodeGenerators =
                CodeGeneratorUtil.GetUnavailable <ICodeGenerator>(types, config.CodeGenerators);
            var unavailablePostProcessors =
                CodeGeneratorUtil.GetUnavailable <ICodeGenFilePostProcessor>(types, config.PostProcessors);

            var availableDataProviders =
                CodeGeneratorUtil.GetAvailable <ICodeGeneratorDataProvider>(types, config.DataProviders);
            var availableCodeGenerators = CodeGeneratorUtil.GetAvailable <ICodeGenerator>(types, config.CodeGenerators);
            var availablePostProcessors =
                CodeGeneratorUtil.GetAvailable <ICodeGenFilePostProcessor>(types, config.PostProcessors);

            PrintUnavailable(unavailableDataProviders);
            PrintUnavailable(unavailableCodeGenerators);
            PrintUnavailable(unavailablePostProcessors);

            PrintAvailable(availableDataProviders);
            PrintAvailable(availableCodeGenerators);
            PrintAvailable(availablePostProcessors);
        }
Esempio n. 7
0
        static bool FixPlugins(HashSet <string> askedRemoveKeys, HashSet <string> askedAddKeys, Type[] types,
                               CodeGeneratorConfig config, Properties properties)
        {
            var changed = false;

            var unavailableDataProviders =
                CodeGeneratorUtil.GetUnavailable <ICodeGeneratorDataProvider>(types, config.DataProviders);
            var unavailableCodeGenerators =
                CodeGeneratorUtil.GetUnavailable <ICodeGenerator>(types, config.CodeGenerators);
            var unavailablePostProcessors =
                CodeGeneratorUtil.GetUnavailable <ICodeGenFilePostProcessor>(types, config.PostProcessors);

            var availableDataProviders =
                CodeGeneratorUtil.GetAvailable <ICodeGeneratorDataProvider>(types, config.DataProviders);
            var availableCodeGenerators = CodeGeneratorUtil.GetAvailable <ICodeGenerator>(types, config.CodeGenerators);
            var availablePostProcessors =
                CodeGeneratorUtil.GetAvailable <ICodeGenFilePostProcessor>(types, config.PostProcessors);

            foreach (var key in unavailableDataProviders.Where(k => !askedRemoveKeys.Contains(k)))
            {
                Helper.RemoveValue("Remove unavailable data provider", key, config.DataProviders,
                                   values => config.DataProviders = values, properties);
                askedRemoveKeys.Add(key);
                changed = true;
            }

            foreach (var key in unavailableCodeGenerators.Where(k => !askedRemoveKeys.Contains(k)))
            {
                Helper.RemoveValue("Remove unavailable code generator", key, config.CodeGenerators,
                                   values => config.CodeGenerators = values, properties);
                askedRemoveKeys.Add(key);
                changed = true;
            }

            foreach (var key in unavailablePostProcessors.Where(k => !askedRemoveKeys.Contains(k)))
            {
                Helper.RemoveValue("Remove unavailable post processor", key, config.PostProcessors,
                                   values => config.PostProcessors = values, properties);
                askedRemoveKeys.Add(key);
                changed = true;
            }

            foreach (var key in availableDataProviders.Where(k => !askedRemoveKeys.Contains(k)))
            {
                Helper.AddValue("Add available data provider", key, config.DataProviders,
                                values => config.DataProviders = values, properties);
                askedAddKeys.Add(key);
                changed = true;
            }

            foreach (var key in availableCodeGenerators.Where(k => !askedRemoveKeys.Contains(k)))
            {
                Helper.AddValue("Add available code generator", key, config.CodeGenerators,
                                values => config.CodeGenerators = values, properties);
                askedAddKeys.Add(key);
                changed = true;
            }

            foreach (var key in availablePostProcessors.Where(k => !askedRemoveKeys.Contains(k)))
            {
                Helper.AddValue("Add available post processor", key, config.PostProcessors,
                                values => config.PostProcessors = values, properties);
                askedAddKeys.Add(key);
                changed = true;
            }

            return(changed);
        }