Ejemplo n.º 1
0
        public void Initialize()
        {
            if (PackageIndexActivityLevelProvider.ActivityLevel > ActivityLevel.On)
            {
                return;
            }

            var shouldClean = false;

            // if at least one directory where packages live does not exist,
            // we need to clean index and rebuild it from scratch. It would be
            // much faster than go package by package.
            var packageDirs = _indexBuilder.GetPackageDirectories();

            foreach (var packageDir in packageDirs)
            {
                if (!Directory.Exists(packageDir))
                {
                    shouldClean = true;
                    try
                    {
                        // create directory to avoid cleaning at next VS startup
                        Directory.CreateDirectory(packageDir);
                    }
                    catch (Exception e)
                    {
                        Debug.Write(e.ToString());
                    }
                }
            }

            // In addition to package sources we should also check WTE version,
            // since when there is new WTE installed, we have new set of default
            // packages and need to clean index complettely and rebuild
            // Note: yes we tied to WTE now, but whole current version of the
            // Package Index already very tied to WTE because of Roslyn limitation
            // and need to be redesigned to support all C# projects again after
            // Roslyn provides project info for file being analyzed and supports
            // VS UI thread correctly.
            var ideVersion      = GetCurrentIDEVersion();
            var indexIDEVersion = GetIndexIDEVersion();

            if (!string.IsNullOrEmpty(ideVersion))
            {
                if (!ideVersion.Equals(indexIDEVersion, StringComparison.OrdinalIgnoreCase))
                {
                    // remember new IDE version and clean/rebuild index
                    shouldClean = true;
                    SetIndexIDEVersion(ideVersion);
                }
            }

            if (shouldClean)
            {
                _indexBuilder.Clean();
            }

            Synchronize(shouldClean: shouldClean, force: true);
        }
        private void ProcessAction(ILocalPackageIndexBuilder builder, Arguments arguments, bool commandMode)
        {
            LocalPackageIndexBuilderResult result = null;

            switch (arguments.Action)
            {
            case PackageIndexManagerAction.Build:
                result = builder.BuildAsync().Result;
                break;

            case PackageIndexManagerAction.Rebuild:
                result = builder.Rebuild();
                break;

            case PackageIndexManagerAction.Clean:
                result = builder.Clean();
                break;

            case PackageIndexManagerAction.Add:
                if (!string.IsNullOrEmpty(arguments.Package))
                {
                    result = builder.AddPackage(arguments.Package, arguments.Force);
                }
                else
                {
                    _consoleUI.WriteNormalLine(Resources.PackageIsMissingToAdd);
                }
                break;

            case PackageIndexManagerAction.Remove:
                if (!string.IsNullOrEmpty(arguments.Package))
                {
                    result = builder.RemovePackage(arguments.Package);
                }
                else
                {
                    _consoleUI.WriteNormalLine(Resources.PackageIsMissingToRemove);
                }
                break;

            case PackageIndexManagerAction.Query:
                if (!string.IsNullOrEmpty(arguments.Type))
                {
                    DoQuery(() => { return(builder.Index.GetTypes(arguments.Type).Select(x => (object)x).ToList()); });
                }
                else if (!string.IsNullOrEmpty(arguments.Package))
                {
                    DoQuery(() => { return(builder.Index.GetPackages(arguments.Package).Select(x => (object)x).ToList()); });
                }
                else
                {
                    _consoleUI.WriteNormalLine(Resources.PackageOrTypeIsMissing);
                }
                break;

            default:
                _consoleUI.WriteNormalLine(Resources.ActionUnrecognized);
                return;
            }

            if (result != null)
            {
                _consoleUI.WriteHighlitedLine(string.Format(Resources.TimeElapsed, result.TimeElapsed));
                _consoleUI.WriteNormalLine(string.Empty);
            }
        }
Ejemplo n.º 3
0
        private void ProcessAction(ILocalPackageIndexBuilder builder, Arguments arguments, bool commandMode)
        {
            LocalPackageIndexBuilderResult result = null;

            switch (arguments.Action)
            {
            case PackageIndexManagerAction.Build:
                result = builder.BuildAsync(shouldClean: false, newOnly: false, cancellationToken: CancellationToken.None).Result;
                break;

            case PackageIndexManagerAction.Rebuild:
                result = builder.Rebuild();
                break;

            case PackageIndexManagerAction.Clean:
                result = builder.Clean();
                break;

            case PackageIndexManagerAction.Add:
                if (!string.IsNullOrEmpty(arguments.Package))
                {
                    result = builder.AddPackage(arguments.Package, arguments.Force);
                }
                else
                {
                    _consoleUI.WriteNormalLine(Resources.PackageIsMissingToAdd);
                }
                break;

            case PackageIndexManagerAction.Remove:
                if (!string.IsNullOrEmpty(arguments.Package))
                {
                    result = builder.RemovePackage(packageName: arguments.Package, force: false);
                }
                else
                {
                    _consoleUI.WriteNormalLine(Resources.PackageIsMissingToRemove);
                }
                break;

            case PackageIndexManagerAction.Query:
                if (!string.IsNullOrEmpty(arguments.Type))
                {
                    DoQuery(() => { return(builder.Index.GetTypes(arguments.Type).Select(x => (object)x).ToList()); });
                }
                else if (!string.IsNullOrEmpty(arguments.Package))
                {
                    DoQuery(() => { return(builder.Index.GetPackages(arguments.Package).Select(x => (object)x).ToList()); });
                }
                else if (!string.IsNullOrEmpty(arguments.Namespace))
                {
                    DoQuery(() => { return(builder.Index.GetNamespaces(arguments.Namespace).Select(x => (object)x).ToList()); });
                }
                else if (!string.IsNullOrEmpty(arguments.Extension))
                {
                    DoQuery(() => { return(builder.Index.GetExtensions(arguments.Extension).Select(x => (object)x).ToList()); });
                }
                else
                {
                    _consoleUI.WriteNormalLine(Resources.PackageOrTypeIsMissing);
                }
                break;

            case PackageIndexManagerAction.Dump:
                var dumpFile = arguments.DumpFile;
                if (string.IsNullOrEmpty(dumpFile))
                {
                    dumpFile = "IndexDump.csv";
                }

                DumpIndex(builder, dumpFile);
                break;

            default:
                _consoleUI.WriteNormalLine(Resources.ActionUnrecognized);
                return;
            }

            if (result != null)
            {
                _consoleUI.WriteHighlitedLine(string.Format(Resources.TimeElapsed, result.TimeElapsed));
                _consoleUI.WriteNormalLine(string.Empty);
            }
        }
        private void ProcessAction(ILocalPackageIndexBuilder builder, Arguments arguments, bool commandMode)
        {
            LocalPackageIndexBuilderResult result = null;
            switch (arguments.Action)
            {
                case PackageIndexManagerAction.Build:
                    result = builder.BuildAsync(shouldClean:false, newOnly: false, cancellationToken: CancellationToken.None).Result;
                    break;
                case PackageIndexManagerAction.Rebuild:
                    result = builder.Rebuild();
                    break;
                case PackageIndexManagerAction.Clean:
                    result = builder.Clean();
                    break;
                case PackageIndexManagerAction.Add:
                    if (!string.IsNullOrEmpty(arguments.Package))
                    {
                        result = builder.AddPackage(arguments.Package, arguments.Force);
                    }
                    else
                    {
                        _consoleUI.WriteNormalLine(Resources.PackageIsMissingToAdd);
                    }
                    break;
                case PackageIndexManagerAction.Remove:
                    if (!string.IsNullOrEmpty(arguments.Package))
                    {
                        result = builder.RemovePackage(packageName:arguments.Package, force: false);
                    }
                    else
                    {
                        _consoleUI.WriteNormalLine(Resources.PackageIsMissingToRemove);
                    }
                    break;
                case PackageIndexManagerAction.Query:
                    if (!string.IsNullOrEmpty(arguments.Type))
                    {
                        DoQuery(() => { return builder.Index.GetTypes(arguments.Type).Select(x => (object)x).ToList(); });
                    }
                    else if (!string.IsNullOrEmpty(arguments.Package))
                    {
                        DoQuery(() => { return builder.Index.GetPackages(arguments.Package).Select(x => (object)x).ToList(); });
                    }
                    else if (!string.IsNullOrEmpty(arguments.Namespace))
                    {
                        DoQuery(() => { return builder.Index.GetNamespaces(arguments.Namespace).Select(x => (object)x).ToList(); });
                    }
                    else if (!string.IsNullOrEmpty(arguments.Extension))
                    {
                        DoQuery(() => { return builder.Index.GetExtensions(arguments.Extension).Select(x => (object)x).ToList(); });
                    }
                    else
                    {
                        _consoleUI.WriteNormalLine(Resources.PackageOrTypeIsMissing);
                    }
                    break;
                case PackageIndexManagerAction.Dump:
                    var dumpFile = arguments.DumpFile;
                    if (string.IsNullOrEmpty(dumpFile))
                    {
                        dumpFile = "IndexDump.csv";
                    }

                    DumpIndex(builder, dumpFile);
                    break;
                default:
                    _consoleUI.WriteNormalLine(Resources.ActionUnrecognized);
                    return;
            }

            if (result != null)
            {
                _consoleUI.WriteHighlitedLine(string.Format(Resources.TimeElapsed, result.TimeElapsed));
                _consoleUI.WriteNormalLine(string.Empty);
            }
        }