public CommandResult Execute() { _logger.Info("Installing packages..."); var packagesFolder = Path.Combine(_fileSystem.CurrentDirectory, _fileSystem.PackagesFolder); if (!string.IsNullOrWhiteSpace(_composer.ScriptLibrariesFile)) { var scriptLibrariesFile = Path.Combine(packagesFolder, _composer.ScriptLibrariesFile); if (_fileSystem.FileExists(scriptLibrariesFile)) { _logger.DebugFormat("Deleting: {0}", scriptLibrariesFile); _fileSystem.FileDelete(scriptLibrariesFile); } } var packages = GetPackages(_fileSystem.CurrentDirectory); try { _packageInstaller.InstallPackages(packages, _allowPre); _logger.Info("Package installation succeeded."); return(CommandResult.Success); } catch (Exception ex) { _logger.ErrorException("Package installation failed.", ex); return(CommandResult.Error); } }
private async Task ValidateEFSqlServerDependency() { if (_libraryManager.GetLibrary(EFSqlServerPackageName) == null) { await _packageInstaller.InstallPackages(new List <PackageMetadata>() { new PackageMetadata() { Name = EFSqlServerPackageName, Version = EFSqlServerPackageVersion } }); throw new InvalidOperationException(MessageStrings.ScaffoldingNeedsToRerun); } }
private async Task ValidateEFSqlServerDependency() { if (_libraryManager.GetLibraryInformation(EFSqlServerPackageName) == null) { await _packageInstaller.InstallPackages(new List <PackageMetadata>() { new PackageMetadata() { Name = EFSqlServerPackageName, Version = EFSqlServerPackageVersion } }); throw new InvalidOperationException("Scaffolding should be run again since it needs to reload the application with the added package reference - just run the previous command one more time."); } }
// prepare NuGet dependencies, download them if required private static IEnumerable <string> PreparePackages( string scriptPath, IFileSystem fileSystem, IPackageAssemblyResolver packageAssemblyResolver, IPackageInstaller packageInstaller) { var workingDirectory = Path.GetDirectoryName(scriptPath); var binDirectory = Path.Combine(workingDirectory, @"bin\debug"); //TODO : ScriptCs.Constants.BinFolder var packages = packageAssemblyResolver.GetPackages(workingDirectory); packageInstaller.InstallPackages( packages, allowPreRelease: true); // current implementeation of RoslynCTP required dependencies to be in 'bin' folder if (!fileSystem.DirectoryExists(binDirectory)) { fileSystem.CreateDirectory(binDirectory); } // copy dependencies one by one from 'packages' to 'bin' foreach (var assemblyName in packageAssemblyResolver.GetAssemblyNames(workingDirectory)) { var assemblyFileName = Path.GetFileName(assemblyName); var destFile = Path.Combine(binDirectory, assemblyFileName); var sourceFileLastWriteTime = fileSystem.GetLastWriteTime(assemblyName); var destFileLastWriteTime = fileSystem.GetLastWriteTime(destFile); if (sourceFileLastWriteTime == destFileLastWriteTime) { //outputCallback(string.Format("Skipped: '{0}' because it is already exists", assemblyName)); } else { fileSystem.Copy(assemblyName, destFile, overwrite: true); //if (outputCallback != null) //{ // outputCallback(string.Format("Copy: '{0}' to '{1}'", assemblyName, destFile)); //} } yield return(destFile); } }
public CommandResult Execute() { _logger.Info("Installing packages..."); var packages = GetPackages(_fileSystem.CurrentDirectory); try { _packageInstaller.InstallPackages(packages, _allowPre); _logger.Info("Package installation succeeded."); return(CommandResult.Success); } catch (Exception ex) { _logger.ErrorFormat("Package installation failed: {0}.", ex, ex.Message); return(CommandResult.Error); } }
public CommandResult Execute() { _logger.Info("Installing packages..."); var workingDirectory = _fileSystem.CurrentDirectory; var packages = GetPackages(workingDirectory); try { _packageInstaller.InstallPackages(packages, _allowPre, _logger.Info); _logger.Info("Installation completed successfully."); return(CommandResult.Success); } catch (Exception e) { _logger.ErrorFormat("Installation failed: {0}.", e.Message); return(CommandResult.Error); } }
public object Execute(IScriptExecutor repl, object[] args) { Guard.AgainstNullArgument("repl", repl); if (args == null || args.Length == 0) { return(null); } string version = null; var allowPre = false; if (args.Length >= 2) { version = args[1].ToString(); } allowPre = args.Length >= 3 && args[2].ToString().ToUpperInvariant() == "PRE"; _logger.InfoFormat("Installing {0}", args[0]); _installationProvider.Initialize(); var packageRef = new PackageReference( args[0].ToString(), new FrameworkName(".NETFramework,Version=v4.0"), version); _packageInstaller.InstallPackages(new[] { packageRef }, allowPre); _packageAssemblyResolver.SavePackages(); var dlls = _packageAssemblyResolver.GetAssemblyNames(repl.FileSystem.CurrentDirectory) .Except(repl.References.PathReferences).ToArray(); repl.AddReferences(dlls); foreach (var dll in dlls) { _logger.InfoFormat("Added reference to {0}", dll); } return(null); }
// prepare NuGet dependencies, download them if required private static IEnumerable<string> PreparePackages( string scriptPath, IFileSystem fileSystem, IPackageAssemblyResolver packageAssemblyResolver, IPackageInstaller packageInstaller) { var workingDirectory = Path.GetDirectoryName(scriptPath); var binDirectory = Path.Combine(workingDirectory, @"bin\debug"); //TODO : ScriptCs.Constants.BinFolder var packages = packageAssemblyResolver.GetPackages(workingDirectory); packageInstaller.InstallPackages( packages, allowPreRelease: true); // current implementeation of RoslynCTP required dependencies to be in 'bin' folder if (!fileSystem.DirectoryExists(binDirectory)) { fileSystem.CreateDirectory(binDirectory); } // copy dependencies one by one from 'packages' to 'bin' foreach (var assemblyName in packageAssemblyResolver.GetAssemblyNames(workingDirectory)) { var assemblyFileName = Path.GetFileName(assemblyName); var destFile = Path.Combine(binDirectory, assemblyFileName); var sourceFileLastWriteTime = fileSystem.GetLastWriteTime(assemblyName); var destFileLastWriteTime = fileSystem.GetLastWriteTime(destFile); if (sourceFileLastWriteTime == destFileLastWriteTime) { //outputCallback(string.Format("Skipped: '{0}' because it is already exists", assemblyName)); } else { fileSystem.Copy(assemblyName, destFile, overwrite: true); //if (outputCallback != null) //{ // outputCallback(string.Format("Copy: '{0}' to '{1}'", assemblyName, destFile)); //} } yield return destFile; } }