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)) { } } }
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); } }
public override void Execute(string[] args) { if (AssertProperties()) { PrintTypes(CodeGeneratorUtil.LoadTypesFromPlugins(LoadProperties())); } }
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) )); }
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); } }
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); }
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); }