private async Task PreRunConditions() { if (GlobalCoreToolsSettings.CurrentWorkerRuntime == WorkerRuntime.python) { var pythonVersion = await PythonHelpers.GetEnvironmentPythonVersion(); PythonHelpers.AssertPythonVersion(pythonVersion, errorIfNotSupported: true, errorIfNoVersion: true); PythonHelpers.SetWorkerPath(pythonVersion?.ExecutablePath, overwrite: false); PythonHelpers.SetWorkerRuntimeVersionPython(pythonVersion); } else if (GlobalCoreToolsSettings.CurrentWorkerRuntime == WorkerRuntime.dotnet && !NoBuild) { if (DotnetHelpers.CanDotnetBuild()) { var outputPath = Path.Combine("bin", "output"); await DotnetHelpers.BuildDotnetProject(outputPath, string.Empty); Environment.CurrentDirectory = Path.Combine(Environment.CurrentDirectory, outputPath); } else if (StaticSettings.IsDebug) { ColoredConsole.WriteLine("Could not find a valid .csproj file. Skipping the build."); } } else if (GlobalCoreToolsSettings.CurrentWorkerRuntime == WorkerRuntime.powershell && !CommandChecker.CommandExists("dotnet")) { throw new CliException("Dotnet is required for PowerShell Functions. Please install dotnet (.NET Core SDK) for your system from https://www.microsoft.com/net/download"); } if (!NetworkHelpers.IsPortAvailable(Port)) { throw new CliException($"Port {Port} is unavailable. Close the process using that port, or specify another port using --port [-p]."); } }
public async void WorkerInfoRuntimeShouldBePython() { WorkerLanguageVersionInfo worker = await PythonHelpers.GetEnvironmentPythonVersion(); if (worker.Runtime != WorkerRuntime.python) { throw new Exception("Worker runtime should always be python"); } }
public async void InterpreterShouldHaveMajorVersion() { WorkerLanguageVersionInfo worker = await PythonHelpers.GetEnvironmentPythonVersion(); if (worker.Major != 2 && worker.Major != 3) { throw new Exception("Python major version should be 2 or 3"); } }
public async void InterpreterShouldHaveExecutablePath() { WorkerLanguageVersionInfo worker = await PythonHelpers.GetEnvironmentPythonVersion(); if (worker.ExecutablePath == null) { throw new Exception("Python executable path should not be empty"); } }
private static async Task WritePythonDockerFile() { WorkerLanguageVersionInfo worker = await PythonHelpers.GetEnvironmentPythonVersion(); if (worker?.Major == 3 && worker?.Minor == 7) { await WriteFiles("Dockerfile", await StaticResources.DockerfilePython37); } else { await WriteFiles("Dockerfile", await StaticResources.DockerfilePython36); } }
public async Task init_with_python_Dockerfile() { WorkerLanguageVersionInfo worker = await PythonHelpers.GetEnvironmentPythonVersion(); Skip.If(worker == null); await CliTester.Run(new RunConfiguration { Commands = new[] { $"init . --worker-runtime python --docker" }, CheckFiles = new[] { new FileResult { Name = "Dockerfile", ContentContains = new[] { $"FROM mcr.microsoft.com/azure-functions/python:2.0-python{worker.Major}.{worker.Minor}" } } }, OutputContains = new[] { "Dockerfile" } }, _output); }