private static async Task <int> RunScript(string file, bool debugMode, LogFactory logFactory, OptimizationLevel optimizationLevel, IEnumerable <string> args, bool interactive, string[] packageSources) { if (!File.Exists(file)) { if (IsHttpUri(file)) { var downloader = new ScriptDownloader(); var code = await downloader.Download(file); return(await RunCode(code, debugMode, logFactory, optimizationLevel, args, Directory.GetCurrentDirectory(), packageSources)); } throw new Exception($"Couldn't find file '{file}'"); } var absoluteFilePath = Path.IsPathRooted(file) ? file : Path.Combine(Directory.GetCurrentDirectory(), file); var directory = Path.GetDirectoryName(absoluteFilePath); using (var filestream = new FileStream(absoluteFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var sourceText = SourceText.From(filestream); var context = new ScriptContext(sourceText, directory, args, absoluteFilePath, optimizationLevel, packageSources: packageSources); if (interactive) { var compiler = GetScriptCompiler(debugMode, logFactory); var runner = new InteractiveRunner(compiler, logFactory, ScriptConsole.Default, packageSources); await runner.RunLoopWithSeed(context); return(0); } return(await Run(debugMode, logFactory, context)); } }
private InteractiveTestContext GetRunner(string[] commands) { var reader = new StringReader(string.Join(Environment.NewLine, commands)); var writer = new StringWriter(); var error = new StringWriter(); var console = new ScriptConsole(writer, reader, error); var logger = new ScriptLogger(console.Error, true); var runtimeDependencyResolver = new RuntimeDependencyResolver(type => ((level, message) => { if (level == LogLevel.Debug) { logger.Verbose(message); } if (level == LogLevel.Info) { logger.Log(message); } })); var compiler = new ScriptCompiler(logger, runtimeDependencyResolver); var runner = new InteractiveRunner(compiler, logger, console); return(new InteractiveTestContext(console, runner)); }
private static async Task <int> RunScript(string file, bool debugMode, bool useRestoreCache, LogFactory logFactory, OptimizationLevel optimizationLevel, IEnumerable <string> args, bool interactive, string[] packageSources) { if (!File.Exists(file)) { if (IsHttpUri(file)) { var downloader = new ScriptDownloader(); var code = await downloader.Download(file); return(await RunCode(code, debugMode, useRestoreCache, logFactory, optimizationLevel, args, Directory.GetCurrentDirectory(), packageSources)); } throw new Exception($"Couldn't find file '{file}'"); } var absoluteFilePath = file.GetRootedPath(); var directory = Path.GetDirectoryName(absoluteFilePath); var sourceText = absoluteFilePath.ToSourceText(); var context = new ScriptContext(sourceText, directory, args, absoluteFilePath, optimizationLevel, packageSources: packageSources); if (interactive) { var compiler = GetScriptCompiler(debugMode, useRestoreCache, logFactory); var runner = new InteractiveRunner(compiler, logFactory, ScriptConsole.Default, packageSources); await runner.RunLoopWithSeed(context); return(0); } return(await Run(debugMode, useRestoreCache, logFactory, context)); }
private static async Task <int> RunScript(string file, bool debugMode, IEnumerable <string> args, bool interactive) { if (!File.Exists(file)) { throw new Exception($"Couldn't find file '{file}'"); } var absoluteFilePath = Path.IsPathRooted(file) ? file : Path.Combine(Directory.GetCurrentDirectory(), file); var directory = Path.GetDirectoryName(absoluteFilePath); using (var filestream = new FileStream(absoluteFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var sourceText = SourceText.From(filestream); var context = new ScriptContext(sourceText, directory, args, absoluteFilePath, debugMode); if (interactive) { var compiler = GetScriptCompiler(debugMode); var runner = new InteractiveRunner(compiler, compiler.Logger, ScriptConsole.Default); await runner.RunLoopWithSeed(debugMode, context); return(0); } return(await Run(debugMode, context)); } }
private async Task <EnvironmentDeployment> InteractivePrompt(Channel channel, Channel defaultChannel, OctoPlusCore.Models.Environment environment, IList <Project> projects) { InteractiveRunner runner = PopulateRunner(String.Format(languageProvider.GetString(LanguageSection.UiStrings, "DeployingTo"), channel.Name, environment.Name), languageProvider.GetString(LanguageSection.UiStrings, "PackageNotSelectable"), projects); var indexes = runner.GetSelectedIndexes(); if (!indexes.Any()) { System.Console.WriteLine(languageProvider.GetString(LanguageSection.UiStrings, "NothingSelected")); return(null); } var deployment = await PrepareEnvironmentDeployment(channel, defaultChannel, environment, projects, indexes); return(deployment); }
private InteractiveTestContext GetRunner(params string[] commands) { var reader = new StringReader(string.Join(Environment.NewLine, commands)); var writer = new StringWriter(); var error = new StringWriter(); var console = new ScriptConsole(writer, reader, error); var logFactory = TestOutputHelper.CreateTestLogFactory(); var compiler = new ScriptCompiler(logFactory, useRestoreCache: false); var runner = new InteractiveRunner(compiler, logFactory, console, Array.Empty <string>()); return(new InteractiveTestContext(console, runner)); }
public async Task <int> Execute(ExecuteInteractiveCommandOptions options) { var compiler = new ScriptCompiler(_logFactory, useRestoreCache: false); var runner = new InteractiveRunner(compiler, _logFactory, _scriptConsole, options.PackageSources); if (options.ScriptFile == null) { await runner.RunLoop(); } else { var context = new ScriptContext(options.ScriptFile.Path.ToSourceText(), Path.GetDirectoryName(options.ScriptFile.Path), options.Arguments, options.ScriptFile.Path, OptimizationLevel.Debug, packageSources: options.PackageSources); await runner.RunLoopWithSeed(context); } return(0); }
private InteractiveRunner PopulateRunner(string prompt, IList <Project> projects, IList <Project> targetProjects) { var runner = new InteractiveRunner(prompt, languageProvider.GetString(LanguageSection.UiStrings, "PackageNotSelectable"), languageProvider, languageProvider.GetString(LanguageSection.UiStrings, "ProjectName"), languageProvider.GetString(LanguageSection.UiStrings, "OnSource"), languageProvider.GetString(LanguageSection.UiStrings, "OnTarget")); foreach (var project in projects) { var packagesAvailable = project.CurrentRelease != null; runner.AddRow(project.Checked, packagesAvailable, new[] { project.ProjectName, project.CurrentRelease.Version, targetProjects.FirstOrDefault(p => p.ProjectId == project.ProjectId)?.CurrentRelease?.Version }); } runner.Run(); return(runner); }
private InteractiveRunner PopulateRunner(string prompt, string unselectableText, IEnumerable <Project> projects) { var runner = new InteractiveRunner(prompt, unselectableText, languageProvider, languageProvider.GetString(LanguageSection.UiStrings, "ProjectName"), languageProvider.GetString(LanguageSection.UiStrings, "CurrentRelease"), languageProvider.GetString(LanguageSection.UiStrings, "CurrentPackage"), languageProvider.GetString(LanguageSection.UiStrings, "NewPackage")); foreach (var project in projects) { var packagesAvailable = project.AvailablePackages.Count > 0 && project.AvailablePackages.All(p => p.SelectedPackage != null); runner.AddRow(project.Checked, packagesAvailable, new[] { project.ProjectName, project.CurrentRelease.Version, project.AvailablePackages.Count > 1 ? languageProvider.GetString(LanguageSection.UiStrings, "Multi") : project.CurrentRelease.DisplayPackageVersion, project.AvailablePackages.Count > 1 ? languageProvider.GetString(LanguageSection.UiStrings, "Multi") : (packagesAvailable ? project.AvailablePackages.First().SelectedPackage.Version : string.Empty) }); } runner.Run(); return(runner); }
private EnvironmentDeployment InteractivePrompt(OctoPlusCore.Models.Environment environment, OctoPlusCore.Models.Environment targetEnvironment, IList <Project> projects, IList <Project> targetProjects) { InteractiveRunner runner = PopulateRunner(String.Format(languageProvider.GetString(LanguageSection.UiStrings, "PromotingTo"), environment.Name, targetEnvironment.Name), projects, targetProjects); var indexes = runner.GetSelectedIndexes(); if (!indexes.Any()) { System.Console.WriteLine(languageProvider.GetString(LanguageSection.UiStrings, "NothingSelected")); return(null); } var deployment = new EnvironmentDeployment { ChannelName = string.Empty, DeployAsync = true, EnvironmentId = targetEnvironment.Id, EnvironmentName = targetEnvironment.Name }; foreach (var index in indexes) { var current = projects[index]; var currentTarget = targetProjects[index]; if (current.CurrentRelease != null) { deployment.ProjectDeployments.Add(new ProjectDeployment { ProjectId = currentTarget.ProjectId, ProjectName = currentTarget.ProjectName, LifeCycleId = currentTarget.LifeCycleId, ReleaseId = current.CurrentRelease.Id }); } } return(deployment); }
public InteractiveTestContext(ScriptConsole console, InteractiveRunner runner) { Console = console; Runner = runner; }
private static async Task RunInteractive(bool debugMode, bool useRestoreCache, LogFactory logFactory, string[] packageSources) { var compiler = GetScriptCompiler(debugMode, useRestoreCache, logFactory); var runner = new InteractiveRunner(compiler, logFactory, ScriptConsole.Default, packageSources); await runner.RunLoop(); }
private static async Task RunInteractive(bool debugMode) { var compiler = GetScriptCompiler(debugMode); var runner = new InteractiveRunner(compiler, compiler.Logger, ScriptConsole.Default); await runner.RunLoop(debugMode); }
private static async Task RunInteractive(bool debugMode, string[] packageSources) { var compiler = GetScriptCompiler(debugMode); var runner = new InteractiveRunner(compiler, compiler.Logger, ScriptConsole.Default, packageSources); await runner.RunLoop(); }
public CommandContext(ScriptConsole console, InteractiveRunner runner) { Console = console; Runner = runner; }