public string Generate() { var b = new CodeWriter(); // 自動生成されたと宣言する b.WriteLine("// <auto-generated/>"); // Nullableを有効化する b.WriteLine("#nullable enable"); b.WriteLine(); // namespaceの宣言を行う。 { b.WriteLine($"namespace {_rootDefinition.CSharpNamespace}"); b.WriteLine("{"); using (b.Indent()) { var accessLevel = this.GetAccessLevel(); var enumWriter = new EnumWriter(); foreach (var enumDefinition in _rootDefinition.Enums) { enumWriter.Write(b, enumDefinition, accessLevel); } var objectWriter = new ObjectWriter(_rootDefinition, _externalDefinitions); foreach (var objectDefinition in _rootDefinition.Objects) { objectWriter.Write(b, objectDefinition, accessLevel); } var serviceWriter = new ServiceWriter(_rootDefinition, _externalDefinitions); foreach (var serviceDefinition in _rootDefinition.Services) { serviceWriter.Write(b, serviceDefinition, accessLevel); } } b.WriteLine("}"); } return(b.ToString()); }
public int Run(string[] args) { var appCommand = new CommandLineApplication(false) { Name = "Angular Generator", FullName = "Angular Generator", Description = "Angular Generator can generate Component, Service and Pipe", }; var help = appCommand.HelpOption("-h|--help"); var name = appCommand.Argument("[terms]", "Name of items to be generate"); var index = appCommand.Option("-i|--index", "Index", CommandOptionType.NoValue); var module = appCommand.Option("-m|--module", "Module", CommandOptionType.SingleValue); var feature = appCommand.Option("-f|--feature", "Feature", CommandOptionType.SingleValue); var component = appCommand.Option("-c|--component", "Generate a new Component with HTML, TS and SCSS", CommandOptionType.NoValue); var service = appCommand.Option("-s|--service", "Generate a new Angular service", CommandOptionType.NoValue); appCommand.OnExecute(() => { if (appCommand.OptionHelp.HasValue()) { appCommand.ShowHelp(); return(0); } if (index.HasValue()) { TypeScriptIndexExport.Run(Config.Angular.Path); return(0); } var moduleName = module.HasValue() ? module.Value() : ""; var featureName = feature.HasValue() ? feature.Value() : ""; if (component.HasValue()) { var erro = false; if (!feature.HasValue()) { Console.WriteLine("Name of component doesn't specified"); erro = true; } if (string.IsNullOrEmpty(name.Value) || !feature.HasValue()) { Console.WriteLine("Name of component doesn't specified"); erro = true; } if (erro) { return(-1); } var path = ParsePath(ItemType.Component, moduleName, featureName); ComponentWriter.Run(path, moduleName, featureName, GetItems(appCommand, name)); return(0); } if (service.HasValue()) { if (string.IsNullOrEmpty(name.Value)) { Console.WriteLine("Name of component/feature doesn't specified"); return(-1); } var path = ParsePath(ItemType.Service, moduleName, featureName); ServiceWriter.Run(path, GetItems(appCommand, name)); return(0); } appCommand.ShowHelp(); return(0); }); var arguments = args.ToList(); arguments.Remove("-a"); return(appCommand.Execute(arguments.ToArray())); }