Ejemplo n.º 1
0
        public CommandResult Execute()
        {
            _logger.Info("Copying assemblies to bin folder...");

            var workingDirectory = _fileSystem.GetWorkingDirectory(_scriptName);
            var binFolder        = Path.Combine(workingDirectory, Constants.BinFolder);

            try
            {
                if (!_fileSystem.DirectoryExists(binFolder))
                {
                    _fileSystem.CreateDirectory(binFolder);
                }

                var packages = _packageAssemblyResolver.GetAssemblyNames(workingDirectory);
                foreach (var package in packages)
                {
                    CopyFile(package, binFolder);
                }

                _logger.Info("Restore completed successfully.");
                return(CommandResult.Success);
            }
            catch (Exception e)
            {
                _logger.ErrorFormat("Restore failed: {0}.", e.Message);
                return(CommandResult.Error);
            }
        }
Ejemplo n.º 2
0
 private IEnumerable <string> GetPackageAssemblyNames(string path)
 {
     foreach (var assembly in _packageAssemblyResolver.GetAssemblyNames(path))
     {
         _logger.DebugFormat("Found package assembly: {0}", Path.GetFileName(assembly));
         yield return(assembly);
     }
 }
Ejemplo n.º 3
0
        public CommandResult Execute()
        {
            _logger.Info("Cleaning initiated...");

            var workingDirectory = _fileSystem.GetWorkingDirectory(_scriptName);

            _logger.TraceFormat("Working directory: {0}", workingDirectory);

            var binFolder = Path.Combine(workingDirectory, Constants.BinFolder);

            _logger.TraceFormat("Bin folder: {0}", binFolder);

            var packageFolder = Path.Combine(workingDirectory, Constants.PackagesFolder);

            _logger.TraceFormat("Packages folder: {0}", packageFolder);

            try
            {
                if (_fileSystem.DirectoryExists(binFolder))
                {
                    var packages = _packageAssemblyResolver.GetAssemblyNames(workingDirectory);

                    foreach (var package in packages)
                    {
                        _logger.DebugFormat("Deleting file: {0}", package);
                        DeleteFile(package, binFolder);
                    }

                    var remaining = _fileSystem.EnumerateFiles(binFolder, "*.*").Any();
                    if (!remaining)
                    {
                        _logger.DebugFormat("Deleting bin directory: {0}", binFolder);
                        _fileSystem.DeleteDirectory(binFolder);
                    }
                }

                if (_fileSystem.DirectoryExists(packageFolder))
                {
                    _logger.DebugFormat("Deleting package directory: {0}", packageFolder);
                    _fileSystem.DeleteDirectory(packageFolder);
                }

                _logger.Info("Clean completed successfully.");
                return(CommandResult.Success);
            }
            catch (Exception e)
            {
                _logger.ErrorFormat("Clean failed: {0}.", e.Message);
                return(CommandResult.Error);
            }
        }
Ejemplo n.º 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);
            }
        }
Ejemplo n.º 5
0
        private IEnumerable <string> GetPackageAssemblies(string path)
        {
            var packagesFolder = Path.Combine(path, Constants.PackagesFolder);

            if (!_fileSystem.DirectoryExists(packagesFolder))
            {
                return(Enumerable.Empty <string>());
            }

            var assemblies = _packageAssemblyResolver.GetAssemblyNames(path).ToList();

            foreach (var packageAssembly in assemblies)
            {
                _logger.DebugFormat("Found package assembly: {0}", Path.GetFileName(packageAssembly));
            }

            return(assemblies);
        }
Ejemplo n.º 6
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);
        }
Ejemplo n.º 7
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;
            }
        }