示例#1
0
        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);
            }
        }
示例#3
0
        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.");
            }
        }
示例#4
0
        // 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);
            }
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
            }
        }
示例#7
0
        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);
        }
示例#8
0
        // 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;
            }
        }