コード例 #1
0
        internal override IEnumerable <RegisteredTask> LoadPlugins()
        {
            AppDomain.CurrentDomain.AssemblyResolve += ResolveAssembly;

            IEnumerable <string> cakeTasksDirs = AddinFinder.Find(PluginsDir);

            foreach (string cakeTasksDir in cakeTasksDirs)
            {
                //TODO: Need to support for framework targets
                string dllDir = Path.Combine(cakeTasksDir, "lib", "netstandard2.0");
                if (!Directory.Exists(dllDir))
                {
                    continue;
                }

                string[] dllFiles = Directory.GetFiles(dllDir, "*.dll", SearchOption.TopDirectoryOnly);

                foreach (string dllFile in dllFiles)
                {
                    IEnumerable <RegisteredTask> dllPlugins = FindPlugins(dllFile);
                    foreach (RegisteredTask dllPlugin in dllPlugins)
                    {
                        yield return(dllPlugin);
                    }
                }
            }
        }
コード例 #2
0
 public void Simple()
 {
     var processor = new AddinFinder();
     processor.AddToolsAssemblyLocationToAddinSearch();
     var expected = Path.GetFullPath(Path.Combine(AssemblyLocation.CurrentDirectory(), @"..\..\"));
     Assert.AreEqual(expected, processor.AddinSearchPaths[0]+@"\");
 }
コード例 #3
0
        private void InitializeConfiguration()
        {
            // Setup action to initialize some really core stuff, including directories and version
            // details.
            RegisterSetupAction(ctx =>
            {
                Log.Verbose("Initializing Cake.Tasks configuration.");

                TaskConfig config = TaskConfig.Current;

                EnvConfig env = config.Load <EnvConfig>();
                env.Name      = Path.GetFileName(ctx.Environment.WorkingDirectory.FullPath)
                                .Replace('.', '-')
                                .Replace(' ', '-')
                                .Replace('_', '-')
                                .Trim();
                env.Configuration = ctx.Arguments.GetArgument("Configuration") ?? "Release";
                env.IsCi          = false;
                env.Branch        = null;

                env.Directories.Working       = ctx.Environment.WorkingDirectory.FullPath;
                string outputDirectory        = Path.Combine(env.Directories.Working, ".ci");
                env.Directories.Artifacts     = Path.Combine(outputDirectory, "artifacts");
                env.Directories.BinaryOutput  = Path.Combine(outputDirectory, "binaries");
                env.Directories.PublishOutput = Path.Combine(outputDirectory, "publish");
                env.Directories.TestOutput    = Path.Combine(outputDirectory, "testresults");

                env.Version.BuildNumber = "1";
                env.Version.Primary     = (Func <string>)(() => $"0.{env.Version.BuildNumber.Resolve()}.0");
                env.Version.Full        = (Func <string>)(() => env.Version.Primary.Resolve());
                env.Version.Build       = (Func <string>)(() => $"{env.Version.Full.Resolve()}+{env.Version.BuildNumber.Resolve()}");

                // Display the subdirectories under the tools/Addins directory.
                // To verify the versions of the addins and tools installed.
                // Useful for troubleshooting.
                //TODO: Make this a configuration
                ctx.LogHighlight("--------------------");
                ctx.LogHighlight("Addin subdirectories");
                ctx.LogHighlight("--------------------");
                string addinsBaseDir = Path.Combine(env.Directories.Working, "tools", "Addins");
                if (Directory.Exists(addinsBaseDir))
                {
                    IEnumerable <string> addinsDirs = AddinFinder.Find(addinsBaseDir);
                    IEnumerable <string> otherDirs  = Directory.EnumerateDirectories(addinsBaseDir, "*", SearchOption.TopDirectoryOnly)
                                                      .Except(addinsDirs, StringComparer.OrdinalIgnoreCase);
                    foreach (string addinsDir in addinsDirs)
                    {
                        ctx.LogHighlight(Path.GetFileName(addinsDir));
                    }
                    foreach (string otherDir in otherDirs)
                    {
                        ctx.Log.Information(Path.GetFileName(otherDir));
                    }
                }

                return(config);
            });
        }
コード例 #4
0
    public void WithNuGetPackageRoot()
    {
        var combine          = Path.GetFullPath(Path.Combine(AssemblyLocation.CurrentDirectory, "../../../Fody/FakeNuGetPackageRoot"));
        var nuGetPackageRoot = Path.GetFullPath(combine);
        var result           = AddinFinder.ScanNuGetPackageRoot(nuGetPackageRoot)
                               .Select(s => s.Replace(@"\\", @"\").Replace(combine, "")).ToList();

        ObjectApprover.VerifyWithJson(result);
    }
コード例 #5
0
 public void GetPackagesPathWithNugetConfigAndNoPath()
 {
     var processor = new AddinFinder
         {
             Logger = new Mock<BuildLogger>().Object,
             SolutionDir = "DirWithNugetConfigAndNoPath"
         };
     processor.FindNugetPackagePath();
     Assert.AreEqual(Path.Combine("DirWithNugetConfigAndNoPath", "Packages"), processor.PackagesPath);
 }
コード例 #6
0
 public void GetPackagesPathDefault()
 {
     var processor = new AddinFinder
         {
             Logger = new Mock<BuildLogger>().Object,
             SolutionDir = Environment.CurrentDirectory
         };
     processor.FindNugetPackagePath();
     Assert.AreEqual(Path.Combine(Environment.CurrentDirectory, "Packages"), processor.PackagesPath);
 }
コード例 #7
0
 public void Simple()
 {
     var processor = new AddinFinder
         {
             SolutionDirectoryPath = "Solution"
         };
     processor.AddToolsSolutionDirectoryToAddinSearch();
     var searchPaths = processor.AddinSearchPaths;
     Assert.AreEqual(@"Solution\Tools", searchPaths[0]);
 }
コード例 #8
0
    public void GetPackagesPathDefault()
    {
        var processor = new AddinFinder
        {
            Logger      = new Mock <BuildLogger>().Object,
            SolutionDir = Environment.CurrentDirectory
        };

        processor.FindNugetPackagePath();
        Assert.AreEqual(Path.Combine(Environment.CurrentDirectory, "Packages"), processor.PackagesPath);
    }
コード例 #9
0
    public void GetPackagesPathWithNugetConfigAndNoPath()
    {
        var processor = new AddinFinder
        {
            Logger      = new Mock <BuildLogger>().Object,
            SolutionDir = "DirWithNugetConfigAndNoPath"
        };

        processor.FindNugetPackagePath();
        Assert.AreEqual(Path.Combine("DirWithNugetConfigAndNoPath", "Packages"), processor.PackagesPath);
    }
コード例 #10
0
    public void NoNugetConfig()
    {
        var processor = new AddinFinder
            {
                SolutionDir = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, "../../NugetPackagePathFinder/FakeSolution")),
                Logger = new Mock<BuildLogger>().Object
            };

        processor.FindNugetPackagePath();
        Assert.IsTrue(processor.PackagesPath.EndsWith("\\FakeSolution\\Packages"));
    }
コード例 #11
0
 public void Simple()
 {
     var processor = new AddinFinder
                        {
                            SolutionDirectoryPath = Environment.CurrentDirectory
                        };
     processor.AddNugetDirectoryToAddinSearch();
     var searchPaths = processor.AddinSearchPaths;
     var expected = Path.Combine(Environment.CurrentDirectory, "Packages");
     Assert.AreEqual(expected , searchPaths[0]);
 }
コード例 #12
0
    public void NoNugetConfig()
    {
        var processor = new AddinFinder
        {
            SolutionDir = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, "../../NugetPackagePathFinder/FakeSolution")),
            Logger      = new Mock <BuildLogger>().Object
        };

        processor.FindNugetPackagePath();
        Assert.IsTrue(processor.PackagesPath.EndsWith("\\FakeSolution\\Packages"));
    }
コード例 #13
0
 public void Simple()
 {
     var logger = new Mock<BuildLogger>().Object;
     var processor = new AddinFinder
         {
             Logger = logger,
             SolutionDir = "Solution"
         };
     processor.AddToolsSolutionDirectoryToAddinSearch();
     var searchPaths = processor.AddinSearchPaths;
     Assert.AreEqual(Path.GetFullPath(@"Solution\Tools"), searchPaths[0]);
 }
コード例 #14
0
 public void Simple()
 {
     var loggerMock = new Mock<BuildLogger>();
     loggerMock.Setup(x => x.LogInfo("Directory added to addin search paths 'Path'."));
     var processor = new AddinFinder
                                {
                                    AddinSearchPaths = new List<string> {"Path"},
                                    Logger = loggerMock.Object
                                };
     processor.LogAddinSearchPaths();
     loggerMock.Verify();
 }
コード例 #15
0
 public void Valid()
 {
     var processor = new AddinFinder
         {
             AddinSearchPaths = new List<string>
                 {
                     Path.GetFullPath("Packages")
                 }
         };
     processor.CacheAllFodyAddinDlls();
     Assert.IsNotNull( processor.FindAddinAssembly("SampleTask"));
 }
コード例 #16
0
ファイル: AddinFinderTest.cs プロジェクト: zhaoqinghai/Fody
    static void Verify(string combine)
    {
        var addinFinder = new AddinFinder(
            log: s => { },
            solutionDirectory: Path.Combine(combine, "Solution"),
            msBuildTaskDirectory: Path.Combine(combine, "MsBuildDirectory/1/2/3"),
            nuGetPackageRoot: Path.Combine(combine, "NuGetPackageRoot"),
            packageDefinitions: null);

        addinFinder.FindAddinDirectories();
        ObjectApprover.VerifyWithJson(addinFinder.FodyFiles.Select(x => x.Replace(combine, "")));
    }
コード例 #17
0
 public void NotFound()
 {
     var processor = new AddinFinder
         {
             AddinSearchPaths = new List<string>
                 {
                     Path.GetFullPath("Packages")
                 }
         };
     processor.CacheAllFodyAddinDlls();
     Assert.IsNull(processor.FindAddinAssembly("DoesNotExist"));
 }
コード例 #18
0
ファイル: AddinFinderTest.cs プロジェクト: ximenchuifeng/Fody
    public void WithNuGetPackageRoot()
    {
        var combine          = Path.GetFullPath(Path.Combine(AssemblyLocation.CurrentDirectory, "Fody/FakeNuGetPackageRoot"));
        var nuGetPackageRoot = Path.GetFullPath(combine);
        var result           = AddinFinder.ScanDirectoryForPackages(nuGetPackageRoot)
                               .Select(s => s.Replace(@"\\", @"\").Replace(combine, ""))
                               .ToList();

#if NET46 // TODO: Remove when ObjectApproval supports .NET Core
        ObjectApprover.VerifyWithJson(result);
#endif
    }
コード例 #19
0
 public void Simple()
 {
     var logger = new Mock<BuildLogger>().Object;
     var processor = new AddinFinder
                        {
                            Logger = logger,
                            PackagesPath = Environment.CurrentDirectory
                        };
     processor.AddNugetDirectoryToAddinSearch();
     var searchPaths = processor.AddinSearchPaths;
     Assert.AreEqual(Environment.CurrentDirectory, searchPaths[0]);
 }
コード例 #20
0
    static void Verify(string combine)
    {
        var addinFinder = new AddinFinder(
            log: s => { },
            solutionDirectory: Path.Combine(combine, "Solution"),
            msBuildTaskDirectory: Path.Combine(combine, "MsBuildDirectory/1/2/3"),
            nuGetPackageRoot: Path.Combine(combine, "NuGetPackageRoot"),
            weaverFilesFromProps: new List <string>());

        addinFinder.FindAddinDirectories();
        ObjectApprover.VerifyWithJson(addinFinder.FodyFiles.Select(x => x.Replace(combine, "").Replace("packages", "Packages")));
    }
コード例 #21
0
    public void NotFound()
    {
        var processor = new AddinFinder
        {
            AddinSearchPaths = new List <string>
            {
                Path.GetFullPath("Packages")
            }
        };

        processor.CacheAllFodyAddinDlls();
        Assert.IsNull(processor.FindAddinAssembly("DoesNotExist"));
    }
コード例 #22
0
    public void WithNuGetPackageRoot()
    {
        var combine          = Path.GetFullPath(Path.Combine(AssemblyLocation.CurrentDirectory, "Fody/FakeNuGetPackageRoot"));
        var nuGetPackageRoot = Path.GetFullPath(combine);
        var result           = AddinFinder.ScanDirectoryForPackages(nuGetPackageRoot)
                               .Select(s => s.Replace(@"\\", @"\").Replace(combine, ""))
                               .ToList();

        using (ApprovalResults.UniqueForRuntime())
        {
            ObjectApprover.VerifyWithJson(result);
        }
    }
コード例 #23
0
    public void Valid()
    {
        var processor = new AddinFinder
        {
            AddinSearchPaths = new List <string>
            {
                Path.GetFullPath("Packages")
            }
        };

        processor.CacheAllFodyAddinDlls();
        Assert.IsNotNull(processor.FindAddinAssembly("SampleTask"));
    }
コード例 #24
0
    public void Simple()
    {
        var logger    = new Mock <BuildLogger>().Object;
        var processor = new AddinFinder
        {
            Logger      = logger,
            SolutionDir = "Solution"
        };

        processor.AddToolsSolutionDirectoryToAddinSearch();
        var searchPaths = processor.AddinSearchPaths;

        Assert.AreEqual(Path.GetFullPath(@"Solution\Tools"), searchPaths[0]);
    }
コード例 #25
0
 public void Simple()
 {
     var path = Path.Combine(Directory.GetParent(AssemblyLocation.CurrentDirectory()).FullName, "Tools");
     Directory.CreateDirectory(path);
     var logger = new Mock<BuildLogger>().Object;
     var processor = new AddinFinder
         {
             Logger = logger,
             SolutionDir = "Solution"
         };
     processor.AddToolsAssemblyLocationToAddinSearch();
     var searchPaths = processor.AddinSearchPaths;
     Assert.AreEqual(path, searchPaths[0]);
 }
コード例 #26
0
    public void Simple()
    {
        var logger    = new Mock <BuildLogger>().Object;
        var processor = new AddinFinder
        {
            Logger       = logger,
            PackagesPath = Environment.CurrentDirectory
        };

        processor.AddNugetDirectoryToAddinSearch();
        var searchPaths = processor.AddinSearchPaths;

        Assert.AreEqual(Environment.CurrentDirectory, searchPaths[0]);
    }
コード例 #27
0
ファイル: AddinDirectoriesTests.cs プロジェクト: yanglee/Fody
    public void Simple()
    {
        var loggerMock = new Mock <BuildLogger>();

        loggerMock.Setup(x => x.LogInfo("Directory added to addin search paths 'Path'."));
        var processor = new AddinFinder
        {
            AddinSearchPaths = new List <string> {
                "Path"
            },
            Logger = loggerMock.Object
        };

        processor.LogAddinSearchPaths();
        loggerMock.Verify();
    }
コード例 #28
0
    public void Simple()
    {
        var path = Path.Combine(Directory.GetParent(AssemblyLocation.CurrentDirectory()).FullName, "Tools");

        Directory.CreateDirectory(path);
        var logger    = new Mock <BuildLogger>().Object;
        var processor = new AddinFinder
        {
            Logger      = logger,
            SolutionDir = "Solution"
        };

        processor.AddToolsAssemblyLocationToAddinSearch();
        var searchPaths = processor.AddinSearchPaths;

        Assert.AreEqual(path, searchPaths[0]);
    }
コード例 #29
0
    void FindWeavers()
    {
        var stopwatch = Stopwatch.StartNew();

        Logger.LogDebug("Finding weavers");
        ReadProjectWeavers();
        addinFinder = new AddinFinder(Logger.LogDebug, SolutionDirectory, MSBuildDirectory, NuGetPackageRoot, PackageDefinitions);
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();

        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();

        Logger.LogDebug($"Finished finding weavers {stopwatch.ElapsedMilliseconds}ms");
    }
コード例 #30
0
ファイル: Processor.cs プロジェクト: yanglee/Fody
    void FindWeavers()
    {
        ReadProjectWeavers();
        addinFinder = new AddinFinder
        {
            Logger      = Logger,
            SolutionDir = SolutionDir
        };
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();


        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();
    }
コード例 #31
0
ファイル: Processor.cs プロジェクト: owodunni/Fody
    void FindWeavers()
    {
        var stopwatch = Stopwatch.StartNew();

        Logger.LogDebug("Finding weavers");
        ReadProjectWeavers();
        addinFinder = new AddinFinder(Logger.LogDebug, SolutionDirectory, MSBuildDirectory, NuGetPackageRoot, WeaverFilesFromProps);
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();

        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();

        ConfigFile.EnsureSchemaIsUpToDate(ProjectDirectory, WeaverFilesFromProps, Weavers, GenerateXsd);

        Logger.LogDebug($"Finished finding weavers {stopwatch.ElapsedMilliseconds}ms");
    }
コード例 #32
0
    public void IgnoreInvalidPackageDefinitions()
    {
        var root        = Path.Combine(AssemblyLocation.CurrentDirectory, "Fody/AddinFinderTest/NewNugetStructure");
        var addinFinder = new AddinFinder(
            log: s => { },
            solutionDirectory: Path.Combine(root, "Solution"),
            msBuildTaskDirectory: Path.Combine(root, "MsBuildDirectory/1/2/3"),
            nuGetPackageRoot: Path.Combine(root, "NuGetPackageRoot"),
            packageDefinitions: new List <string>
        {
            Path.Combine(root, "Solution/packages/Weaver.Fody/7.0.0"),
            Path.Combine(root, "Solution/packages/ThisIsATrap.Fody")
        });

        addinFinder.FindAddinDirectories();

        Assert.Contains(
            Path.Combine(root, "Solution/packages/Weaver.Fody/7.0.0/Weaver.Fody.dll").Replace('/', Path.DirectorySeparatorChar),
            addinFinder.FodyFiles.Select(i => i.Replace('/', Path.DirectorySeparatorChar))
            );
    }
コード例 #33
0
    void FindWeavers()
    {
        var stopwatch = Stopwatch.StartNew();

        Logger.LogDebug("Finding weavers");
        ReadProjectWeavers();
        addinFinder = new AddinFinder
        {
            Logger = Logger,
            SolutionDirectoryPath = SolutionDirectoryPath
        };
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();

        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();

        Logger.LogDebug(string.Format("Finished finding weavers {0}ms", stopwatch.ElapsedMilliseconds));
    }
コード例 #34
0
ファイル: Processor.cs プロジェクト: R4bb/Fody
    void FindWeavers()
    {
        ReadProjectWeavers();
        addinFinder = new AddinFinder
            {
                Logger = Logger,
                SolutionDirectoryPath = SolutionDirectoryPath
            };
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();

        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();
    }
コード例 #35
0
ファイル: WeaverNameComparer.cs プロジェクト: owodunni/Fody
 public int GetHashCode(string obj)
 {
     return(AddinFinder.GetAddinNameFromWeaverFile(obj)?.GetHashCode() ?? 0);
 }
コード例 #36
0
ファイル: Processor.cs プロジェクト: bbqchickenrobot/Fody
    void FindWeavers()
    {
        var stopwatch = Stopwatch.StartNew();
        Logger.LogInfo("Finding weavers");
        ReadProjectWeavers();
        addinFinder = new AddinFinder
            {
                Logger = Logger,
                SolutionDirectoryPath = SolutionDirectoryPath
            };
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();

        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();

        Logger.LogInfo(string.Format("Finished finding weavers {0}ms", stopwatch.ElapsedMilliseconds));
    }
コード例 #37
0
ファイル: WeaverNameComparer.cs プロジェクト: owodunni/Fody
 public bool Equals(string x, string y)
 {
     return(string.Equals(AddinFinder.GetAddinNameFromWeaverFile(x), AddinFinder.GetAddinNameFromWeaverFile(y), StringComparison.OrdinalIgnoreCase));
 }
コード例 #38
0
ファイル: Processor.cs プロジェクト: RichieYang/Fody
    void FindWeavers()
    {
        var stopwatch = Stopwatch.StartNew();
        Logger.LogDebug("Finding weavers");
        ReadProjectWeavers();
        addinFinder = new AddinFinder
            {
                Logger = Logger,
                SolutionDirectoryPath = SolutionDirectory,
                NuGetPackageRoot = NuGetPackageRoot
            };
        addinFinder.FindAddinDirectories();

        FindWeaverProjectFile();

        ConfigureWhenWeaversFound();

        ConfigureWhenNoWeaversFound();

        Logger.LogDebug($"Finished finding weavers {stopwatch.ElapsedMilliseconds}ms");
    }