Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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()));
        }