public string GetInstallerScriptSnippet( BuildScriptGeneratorContext context, PlatformDetectorResult detectorResult) { string installationScriptSnippet = null; if (_commonOptions.EnableDynamicInstall) { _logger.LogDebug("Dynamic install is enabled."); if (_platformInstaller.IsVersionAlreadyInstalled(detectorResult.PlatformVersion)) { _logger.LogDebug( "Python version {version} is already installed. So skipping installing it again.", detectorResult.PlatformVersion); } else { _logger.LogDebug( "Python version {version} is not installed. " + "So generating an installation script snippet for it.", detectorResult.PlatformVersion); installationScriptSnippet = _platformInstaller.GetInstallerScriptSnippet( detectorResult.PlatformVersion); } } else { _logger.LogDebug("Dynamic install not enabled."); } return(installationScriptSnippet); }
/// <inheritdoc/> public string GetInstallerScriptSnippet( BuildScriptGeneratorContext context, PlatformDetectorResult detectorResult) { var pythonPlatformDetectorResult = detectorResult as PythonPlatformDetectorResult; if (pythonPlatformDetectorResult != null && (pythonPlatformDetectorResult.HasCondaEnvironmentYmlFile || pythonPlatformDetectorResult.HasJupyterNotebookFiles)) { _logger.LogDebug( "Application in the source directory is a Conda based app, " + "so skipping dynamic installation of Python SDK."); return(null); } string installationScriptSnippet = null; if (_commonOptions.EnableDynamicInstall) { _logger.LogDebug("Dynamic install is enabled."); if (_platformInstaller.IsVersionAlreadyInstalled(detectorResult.PlatformVersion)) { _logger.LogDebug( "Python version {version} is already installed. So skipping installing it again.", detectorResult.PlatformVersion); } else { _logger.LogDebug( "Python version {version} is not installed. " + "So generating an installation script snippet for it.", detectorResult.PlatformVersion); installationScriptSnippet = _platformInstaller.GetInstallerScriptSnippet( detectorResult.PlatformVersion); } } else { _logger.LogDebug("Dynamic install not enabled."); } return(installationScriptSnippet); }
/// <inheritdoc/> public BuildScriptSnippet GenerateBashBuildScriptSnippet(BuildScriptGeneratorContext context) { string installationScriptSnippet = null; if (_commonOptions.EnableDynamicInstall) { _logger.LogDebug("Dynamic install is enabled."); if (_platformInstaller.IsVersionAlreadyInstalled(context.ResolvedPythonVersion)) { _logger.LogDebug( "Python version {version} is already installed. So skipping installing it again.", context.ResolvedPythonVersion); } else { _logger.LogDebug( "Python version {version} is not installed. So generating an installation script snippet for it.", context.ResolvedPythonVersion); installationScriptSnippet = _platformInstaller.GetInstallerScriptSnippet(context.ResolvedPythonVersion); } } else { _logger.LogDebug("Dynamic install not enabled."); } var manifestFileProperties = new Dictionary <string, string>(); // Write the version to the manifest file manifestFileProperties[ManifestFilePropertyKeys.PythonVersion] = context.ResolvedPythonVersion; var packageDir = GetPackageDirectory(context); var virtualEnvName = GetVirtualEnvironmentName(context); if (!string.IsNullOrWhiteSpace(packageDir) && !string.IsNullOrWhiteSpace(virtualEnvName)) { throw new InvalidUsageException($"Options '{TargetPackageDirectoryPropertyKey}' and " + $"'{VirtualEnvironmentNamePropertyKey}' are mutually exclusive. Please provide " + $"only the target package directory or virtual environment name."); } if (string.IsNullOrWhiteSpace(packageDir)) { // If the package directory was not provided, we default to virtual envs if (string.IsNullOrWhiteSpace(virtualEnvName)) { virtualEnvName = GetDefaultVirtualEnvName(context); } manifestFileProperties[PythonManifestFilePropertyKeys.VirtualEnvName] = virtualEnvName; } else { manifestFileProperties[PythonManifestFilePropertyKeys.PackageDir] = packageDir; } var virtualEnvModule = string.Empty; var virtualEnvCopyParam = string.Empty; var pythonVersion = context.ResolvedPythonVersion; _logger.LogDebug("Selected Python version: {pyVer}", pythonVersion); if (!string.IsNullOrEmpty(pythonVersion) && !string.IsNullOrWhiteSpace(virtualEnvName)) { (virtualEnvModule, virtualEnvCopyParam) = GetVirtualEnvModules(pythonVersion); _logger.LogDebug( "Using virtual environment {venv}, module {venvModule}", virtualEnvName, virtualEnvModule); } GetVirtualEnvPackOptions( context, virtualEnvName, out var compressVirtualEnvCommand, out var compressedVirtualEnvFileName); if (!string.IsNullOrWhiteSpace(compressedVirtualEnvFileName)) { manifestFileProperties[PythonManifestFilePropertyKeys.CompressedVirtualEnvFile] = compressedVirtualEnvFileName; } TryLogDependencies(pythonVersion, context.SourceRepo); var scriptProps = new PythonBashBuildSnippetProperties( virtualEnvironmentName: virtualEnvName, virtualEnvironmentModule: virtualEnvModule, virtualEnvironmentParameters: virtualEnvCopyParam, packagesDirectory: packageDir, enableCollectStatic: _pythonScriptGeneratorOptions.EnableCollectStatic, compressVirtualEnvCommand: compressVirtualEnvCommand, compressedVirtualEnvFileName: compressedVirtualEnvFileName); string script = TemplateHelper.Render( TemplateHelper.TemplateResource.PythonSnippet, scriptProps, _logger); return(new BuildScriptSnippet() { BashBuildScriptSnippet = script, BuildProperties = manifestFileProperties, PlatformInstallationScriptSnippet = installationScriptSnippet, }); }