public static int Run(string[] args) { DebugHelper.HandleDebugSwitch(ref args); var app = new CommandLineApplication(); app.Name = "dotnet new"; app.FullName = ".NET Initializer"; app.Description = "Initializes empty project for .NET Platform"; app.HelpOption("-h|--help"); var csharp = new { Name = "C#", Alias = new[] { "c#", "cs", "csharp" }, TemplatePrefix = "CSharp", Templates = new[] { new { Name = "Console", isMsBuild = true }, new { Name = "Web", isMsBuild = true }, new { Name = "Lib", isMsBuild = true }, new { Name = "Xunittest", isMsBuild = true } } }; var languages = new[] { csharp }; string langValuesString = string.Join(", ", languages.Select(l => l.Name)); var typeValues = from l in languages let values = string.Join(", ", l.Templates.Select(t => t.Name)) select $"Valid values for {l.Name}: {values}."; string typeValuesString = string.Join(" ", typeValues); var lang = app.Option("-l|--lang <LANGUAGE>", $"Language of project Valid values: {langValuesString}.", CommandOptionType.SingleValue); var type = app.Option("-t|--type <TYPE>", $"Type of project {typeValuesString}", CommandOptionType.SingleValue); var dotnetNew = new NewCommand(); app.OnExecute(() => { string languageValue = lang.Value() ?? csharp.Name; var language = new[] { csharp } .FirstOrDefault(l => l.Alias.Contains(languageValue, StringComparer.OrdinalIgnoreCase)); if (language == null) { Reporter.Error.WriteLine($"Unrecognized language: {languageValue}".Red()); return(-1); } string typeValue = type.Value() ?? language.Templates.First().Name; var template = language.Templates.FirstOrDefault(t => StringComparer.OrdinalIgnoreCase.Equals(typeValue, t.Name)); if (template == null) { Reporter.Error.WriteLine($"Unrecognized type: {typeValue}".Red()); Reporter.Error.WriteLine($"Available types for {language.Name} :".Red()); foreach (var t in language.Templates) { Reporter.Error.WriteLine($"- {t}".Red()); } return(-1); } string templateDir = $"{language.TemplatePrefix}_{template.Name}"; return(dotnetNew.CreateEmptyProject(language.Name, templateDir, template.isMsBuild)); }); try { return(app.Execute(args)); } catch (Exception ex) { #if DEBUG Reporter.Error.WriteLine(ex.ToString()); #else Reporter.Error.WriteLine(ex.Message); #endif return(1); } }
public static int Run(string[] args) { DebugHelper.HandleDebugSwitch(ref args); var app = new CommandLineApplication(); app.Name = "dotnet new"; app.FullName = ".NET Initializer"; app.Description = "Initializes empty project for .NET Platform"; app.HelpOption("-h|--help"); var lang = app.Option("-l|--lang <LANGUAGE>", "Language of project [C#|F#]", CommandOptionType.SingleValue); var type = app.Option("-t|--type <TYPE>", "Type of project", CommandOptionType.SingleValue); var dotnetNew = new NewCommand(); app.OnExecute(() => { var csharp = new { Name = "C#", Alias = new[] { "c#", "cs", "csharp" }, TemplatePrefix = "CSharp", Templates = new[] { "Console" } }; var fsharp = new { Name = "F#", Alias = new[] { "f#", "fs", "fsharp" }, TemplatePrefix = "FSharp", Templates = new[] { "Console" } }; string languageValue = lang.Value() ?? csharp.Name; var language = new[] { csharp, fsharp } .FirstOrDefault(l => l.Alias.Contains(languageValue, StringComparer.OrdinalIgnoreCase)); if (language == null) { Reporter.Error.WriteLine($"Unrecognized language: {languageValue}".Red()); return(-1); } string typeValue = type.Value() ?? language.Templates.First(); string templateName = language.Templates.FirstOrDefault(t => StringComparer.OrdinalIgnoreCase.Equals(typeValue, t)); if (templateName == null) { Reporter.Error.WriteLine($"Unrecognized type: {typeValue}".Red()); Reporter.Error.WriteLine($"Avaiable types for {language.Name} :".Red()); foreach (var t in language.Templates) { Reporter.Error.WriteLine($"- {t}".Red()); } return(-1); } string templateDir = $"{language.TemplatePrefix}_{templateName}"; return(dotnetNew.CreateEmptyProject(language.Name, templateDir)); }); try { return(app.Execute(args)); } catch (Exception ex) { #if DEBUG Reporter.Error.WriteLine(ex.ToString()); #else Reporter.Error.WriteLine(ex.Message); #endif return(1); } }
public static int Run(string[] args) { DebugHelper.HandleDebugSwitch(ref args); var app = new CommandLineApplication(); app.Name = "dotnet new"; app.FullName = LocalizableStrings.AppFullName; app.Description = LocalizableStrings.AppDescription; app.HelpOption("-h|--help"); var csharp = new { Name = "C#", Alias = new[] { "c#", "cs", "csharp" }, TemplatePrefix = "CSharp", Templates = new[] { new { Name = "Console" }, new { Name = "Web" }, new { Name = "Web1.1" }, new { Name = "Lib" }, new { Name = "Mstest" }, new { Name = "Xunittest" } } }; var fsharp = new { Name = "F#", Alias = new[] { "f#", "fs", "fsharp" }, TemplatePrefix = "FSharp", Templates = new[] { new { Name = "Console" }, new { Name = "Web" }, new { Name = "Lib" }, new { Name = "Mstest" }, new { Name = "Xunittest" } } }; var languages = new[] { csharp, fsharp }; string langValuesString = string.Join(", ", languages.Select(l => l.Name)); var typeValues = from l in languages let values = string.Join(", ", l.Templates.Select(t => t.Name)) select string.Format(LocalizableStrings.ValidValuesText, l.Name, values); string typeValuesString = string.Join(" ", typeValues); var lang = app.Option( $"-l|--lang <{LocalizableStrings.Language}>", string.Format(LocalizableStrings.LanguageOfProject, langValuesString), CommandOptionType.SingleValue); var type = app.Option( $"-t|--type <{LocalizableStrings.Type}>", string.Format(LocalizableStrings.TypeOfProject, typeValuesString), CommandOptionType.SingleValue); var dotnetNew = new NewCommand(); app.OnExecute(() => { string languageValue = lang.Value() ?? csharp.Name; var language = languages .FirstOrDefault(l => l.Alias.Contains(languageValue, StringComparer.OrdinalIgnoreCase)); if (language == null) { Reporter.Error.WriteLine(string.Format(LocalizableStrings.UnrecognizedLanguage, languageValue).Red()); return -1; } string typeValue = type.Value() ?? language.Templates.First().Name; var template = language.Templates.FirstOrDefault(t => StringComparer.OrdinalIgnoreCase.Equals(typeValue, t.Name)); if (template == null) { Reporter.Error.WriteLine(string.Format(LocalizableStrings.UnrecognizedType, typeValue).Red()); Reporter.Error.WriteLine(string.Format(LocalizableStrings.AvailableTypes, language.Name).Red()); foreach (var t in language.Templates) { Reporter.Error.WriteLine($"- {t}".Red()); } return -1; } string fullTemplateName = $"{language.TemplatePrefix}_{template.Name}"; return dotnetNew.CreateEmptyProject(language.Name, fullTemplateName); }); return app.Execute(args); }
public static int Run(string[] args) { DebugHelper.HandleDebugSwitch(ref args); var app = new CommandLineApplication(); app.Name = "dotnet new"; app.FullName = ".NET Initializer"; app.Description = "Initializes empty project for .NET Platform"; app.HelpOption("-h|--help"); var lang = app.Option("-l|--lang <LANGUAGE>", "Language of project [C#|F#]", CommandOptionType.SingleValue); var type = app.Option("-t|--type <TYPE>", "Type of project", CommandOptionType.SingleValue); var dotnetNew = new NewCommand(); app.OnExecute(() => { var csharp = new { Name = "C#", Alias = new[] { "c#", "cs", "csharp" }, TemplatePrefix = "CSharp", Templates = new[] { "Console" } }; var fsharp = new { Name = "F#", Alias = new[] { "f#", "fs", "fsharp" }, TemplatePrefix = "FSharp", Templates = new[] { "Console" } }; string languageValue = lang.Value() ?? csharp.Name; var language = new[] { csharp, fsharp } .FirstOrDefault(l => l.Alias.Contains(languageValue, StringComparer.OrdinalIgnoreCase)); if (language == null) { Reporter.Error.WriteLine($"Unrecognized language: {languageValue}".Red()); return -1; } string typeValue = type.Value() ?? language.Templates.First(); string templateName = language.Templates.FirstOrDefault(t => StringComparer.OrdinalIgnoreCase.Equals(typeValue, t)); if (templateName == null) { Reporter.Error.WriteLine($"Unrecognized type: {typeValue}".Red()); Reporter.Error.WriteLine($"Avaiable types for {language.Name} :".Red()); foreach (var t in language.Templates) { Reporter.Error.WriteLine($"- {t}".Red()); } return -1; } string templateDir = $"{language.TemplatePrefix}_{templateName}"; return dotnetNew.CreateEmptyProject(language.Name, templateDir); }); try { return app.Execute(args); } catch (Exception ex) { #if DEBUG Reporter.Error.WriteLine(ex.ToString()); #else Reporter.Error.WriteLine(ex.Message); #endif return 1; } }