public static void Explain(this CustomBuilder runnable, TextWriter writer)
    {
        writer.WriteLine(@"
- Category useless knowledge
- Make fun of your coworkers
");
    }
        private static void generatePegs(CustomBuilder builder, Vector3 facing, string namePrefix, bool prefixOnly, float xMultiplier, float xConstant, float zMultiplier, float zConstant, int pinCount, bool reversed, bool output)
        {
            var rotation = Quaternion.FromToRotation(new Vector3(0, 1, 0), facing);
            int start    = reversed ? pinCount - 1 : 0;
            int end      = reversed ? -1 : pinCount;
            int step     = reversed ? -1 : 1;

            for (int i = start; i != end; i += step)
            {
                var pos  = new Vector3(xMultiplier * i + xConstant, yOffset, zMultiplier * i + zConstant);
                var name = prefixOnly ? namePrefix : namePrefix + (reversed ? (pinCount - i - 1) : i).ToString();
                if (output)
                {
                    builder.WithOutput(pos, rotation, name);
                }
                else
                {
                    builder.WithInput(pos, rotation, name);
                }
            }
        }
Esempio n. 3
0
        public void CustomBlobs()
        {
            var assembly  = NetAssemblyFactory.CreateAssembly("SomeAssembly", false);
            var header    = assembly.NetDirectory.MetadataHeader;
            var image     = header.LockMetadata();
            var importer  = new ReferenceImporter(image);
            var writeLine = importer.ImportMethod(typeof(Console).GetMethod("WriteLine", new[] { typeof(string) }));

            var main = new MethodDefinition("Main", MethodAttributes.Public | MethodAttributes.Static,
                                            new MethodSignature(image.TypeSystem.Void));

            main.CilMethodBody = new CilMethodBody(main);
            main.CilMethodBody.Instructions.AddRange(new[]
            {
                CilInstruction.Create(CilOpCodes.Ldstr, "Hello, world!"),
                CilInstruction.Create(CilOpCodes.Call, writeLine),
                CilInstruction.Create(CilOpCodes.Ret)
            });

            image.Assembly.Modules[0].TopLevelTypes[0].Methods.Add(main);

            image.ManagedEntrypoint = main;

            var extraBlobs = new BlobSignature[]
            {
                new DataBlobSignature(new byte[] { 1, 2, 3 }),
                new DataBlobSignature(new byte[] { 4, 5, 6 })
            };

            // Commit changes to assembly
            var builder = new CustomBuilder(extraBlobs);

            image.Header.UnlockMetadata(builder);

            var blobStream = header.GetStream <BlobStream>();

            Assert.Equal(new byte[] { 1, 2, 3 }, blobStream.GetBlobByOffset(builder.GetBlobOffset(extraBlobs[0])));
            Assert.Equal(new byte[] { 4, 5, 6 }, blobStream.GetBlobByOffset(builder.GetBlobOffset(extraBlobs[1])));
        }
        public void GetPostBuildActionScriptsShouldReturnActionScriptFromSiteExtensions()
        {
            const string DeploymentToolsPath = @"x:\DeploymentToolsPath";
            string[] DefaultActionScripts = new string[] {
                Path.Combine(DeploymentToolsPath, "CmdTest.cmd"),
                Path.Combine(DeploymentToolsPath, "BatTest.bat"),
                Path.Combine(DeploymentToolsPath, "Ps1Test.ps1")
            };

            var enviromentMock = new Mock<IEnvironment>();
            enviromentMock.Setup(e => e.DeploymentToolsPath).Returns(DeploymentToolsPath);

            var directoryMock = new Mock<DirectoryBase>();
            directoryMock.Setup(d => d.Exists(Path.Combine(DeploymentToolsPath, "PostDeploymentActions"))).Returns(true);
            directoryMock.Setup(d => d.GetFiles(
                Path.Combine(DeploymentToolsPath, "PostDeploymentActions"),
                "*")
            ).Returns(DefaultActionScripts.Union(new string[] { Path.Combine(DeploymentToolsPath, "PostDeploymentActions", "Foo.txt") }).ToArray());

            System.Environment.SetEnvironmentVariable("Foo_EXTENSION_VERSION", "1.0.0", EnvironmentVariableTarget.Process);
            System.Environment.SetEnvironmentVariable("Bar_EXTENSION_VERSION", "latest", EnvironmentVariableTarget.Process);

            try
            {
                string siteExtensionFolder = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86), "SiteExtensions");

                string[] FooActionScripts = new string[] {
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions", "CmdTest-Foo.cmd"),
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0","PostDeploymentActions", "BatTest-Foo.bat"),
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions","Ps1Test-Foo.ps1")
                };

                string[] BarActionScripts = new string[] {
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0","PostDeploymentActions", "CmdTest-Bar.cmd"),
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0","PostDeploymentActions", "BatTest-Bar.bat"),
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0","PostDeploymentActions", "Ps1Test-Bar.ps1")
                };

                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Foo"))).Returns(true);
                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions"))).Returns(true);
                directoryMock.Setup(d => d.GetFiles(
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions"),
                    "*")
                ).Returns(FooActionScripts.Union(new string[] { Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions", "Foo.txt") }).ToArray());

                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Bar"))).Returns(true);
                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions"))).Returns(true);
                directoryMock.Setup(d => d.GetFiles(
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions"),
                    "*")
                ).Returns(BarActionScripts.Union(new string[] { Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions", "Foo.txt") }).ToArray());

                directoryMock.Setup(d => d.GetDirectories(Path.Combine(siteExtensionFolder, "Bar"))
                ).Returns(new string[] {
                Path.Combine(siteExtensionFolder, "Bar", "10.0.0"),
                Path.Combine(siteExtensionFolder, "Bar", "1.0.0"),
                Path.Combine(siteExtensionFolder, "Bar", "2.0.0"),
                });

                var fileSystemMock = new Mock<IFileSystem>();
                fileSystemMock.Setup(f => f.Directory).Returns(directoryMock.Object);
                FileSystemHelpers.Instance = fileSystemMock.Object;

                var builder = new CustomBuilder(
                    enviromentMock.Object,
                    Mock.Of<IDeploymentSettingsManager>(),
                    Mock.Of<IBuildPropertyProvider>(),
                    string.Empty,
                    string.Empty);

                IList<string> actionScripts = builder.GetPostBuildActionScripts();
                Assert.Equal(DefaultActionScripts.Count() + FooActionScripts.Count() + BarActionScripts.Count(), actionScripts.Count);
            }
            finally
            {
                System.Environment.SetEnvironmentVariable("Foo_EXTENSION_VERSION", null, EnvironmentVariableTarget.Process);
                System.Environment.SetEnvironmentVariable("Bar_EXTENSION_VERSION", null, EnvironmentVariableTarget.Process);
            }
        }
        public void GetPostBuildActionScriptsShouldReturnDefaultFiles()
        {
            const string DeploymentToolsPath = @"x:\DeploymentToolsPath";
            string[] DefaultActionScripts = new string[] {
                Path.Combine(DeploymentToolsPath, "CmdTest.cmd"),
                Path.Combine(DeploymentToolsPath, "BatTest.bat"),
                Path.Combine(DeploymentToolsPath, "Ps1Test.ps1")
            };

            var enviromentMock = new Mock<IEnvironment>();
            enviromentMock.Setup(e => e.DeploymentToolsPath).Returns(DeploymentToolsPath);

            var directoryMock = new Mock<DirectoryBase>();
            directoryMock.Setup(d => d.Exists(Path.Combine(DeploymentToolsPath, "PostDeploymentActions"))).Returns(true);
            directoryMock.Setup(d => d.GetFiles(
                Path.Combine(DeploymentToolsPath, "PostDeploymentActions"),
                "*")
            ).Returns(DefaultActionScripts.Union(new string[] { Path.Combine(DeploymentToolsPath, "PostDeploymentActions", "Foo.txt") }).ToArray());

            var fileSystemMock = new Mock<IFileSystem>();
            fileSystemMock.Setup(f => f.Directory).Returns(directoryMock.Object);
            FileSystemHelpers.Instance = fileSystemMock.Object;

            var builder = new CustomBuilder(
                enviromentMock.Object,
                Mock.Of<IDeploymentSettingsManager>(),
                Mock.Of<IBuildPropertyProvider>(),
                string.Empty,
                string.Empty);

            TestTracer.Trace("Should return action script from default folder");
            IList<string> actionScripts = builder.GetPostBuildActionScripts();
            Assert.NotEmpty(actionScripts);
            Assert.Equal(DefaultActionScripts.Count(), actionScripts.Count);
            Assert.NotEqual(DefaultActionScripts[0], actionScripts[0]);
            Array.Sort(DefaultActionScripts);
            Assert.Equal(DefaultActionScripts[0], actionScripts[0]);
            Assert.Equal(DefaultActionScripts[1], actionScripts[1]);
            Assert.Equal(DefaultActionScripts[2], actionScripts[2]);

            const string CustomDeploymentActionDir = @"x:\CustomDeploymentToolsPath\CustomPostDeploymentActions";
            string[] CustomActionScripts = new string[] {
                Path.Combine(DeploymentToolsPath, "CmdTest-Custom.cmd"),
                Path.Combine(DeploymentToolsPath, "BatTest-Custom.bat"),
                Path.Combine(DeploymentToolsPath, "Ps1Test-Custom.ps1")
            };

            directoryMock.Setup(d => d.Exists(CustomDeploymentActionDir)).Returns(true);
            directoryMock.Setup(d => d.GetFiles(CustomDeploymentActionDir, "*"))
                         .Returns(CustomActionScripts.Union(new string[] { Path.Combine(CustomDeploymentActionDir, "Foo.txt") }).ToArray());

            TestTracer.Trace("Override SCM_POST_DEPLOYMENT_ACTIONS_PATH to a custom location");
            var originalVal = System.Environment.GetEnvironmentVariable("SCM_POST_DEPLOYMENT_ACTIONS_PATH");
            System.Environment.SetEnvironmentVariable("SCM_POST_DEPLOYMENT_ACTIONS_PATH", CustomDeploymentActionDir, EnvironmentVariableTarget.Process);

            try
            {
                TestTracer.Trace("Should return action script from custom folder");
                actionScripts = builder.GetPostBuildActionScripts();
                Assert.NotEmpty(actionScripts);
                Assert.Equal(DefaultActionScripts.Count(), actionScripts.Count);
                Assert.NotEqual(DefaultActionScripts[0], actionScripts[0]);
                Assert.NotEqual(DefaultActionScripts[1], actionScripts[1]);
                Assert.NotEqual(DefaultActionScripts[2], actionScripts[2]);

                Assert.Equal(CustomActionScripts.Count(), actionScripts.Count);
                Assert.NotEqual(CustomActionScripts[0], actionScripts[0]);
                Array.Sort(CustomActionScripts);

                Assert.Equal(CustomActionScripts[0], actionScripts[0]);
                Assert.Equal(CustomActionScripts[1], actionScripts[1]);
                Assert.Equal(CustomActionScripts[2], actionScripts[2]);
            }
            finally
            {
                System.Environment.SetEnvironmentVariable("SCM_POST_DEPLOYMENT_ACTIONS_PATH", originalVal, EnvironmentVariableTarget.Process);
            }
        }
Esempio n. 6
0
        public void GetPostBuildActionScriptsShouldReturnDefaultFiles()
        {
            const string DeploymentToolsPath = @"x:\DeploymentToolsPath";

            string[] DefaultActionScripts = new string[] {
                Path.Combine(DeploymentToolsPath, "CmdTest.cmd"),
                Path.Combine(DeploymentToolsPath, "BatTest.bat"),
                Path.Combine(DeploymentToolsPath, "Ps1Test.ps1")
            };

            var enviromentMock = new Mock <IEnvironment>();

            enviromentMock.Setup(e => e.RepositoryPath).Returns(@"e:\");
            enviromentMock.Setup(e => e.DeploymentToolsPath).Returns(DeploymentToolsPath);

            var deploymentSettingsMock = new Mock <IDeploymentSettingsManager>();

            var directoryMock = new Mock <DirectoryBase>();

            directoryMock.Setup(d => d.Exists(Path.Combine(DeploymentToolsPath, "PostDeploymentActions"))).Returns(true);
            directoryMock.Setup(d => d.GetFiles(
                                    Path.Combine(DeploymentToolsPath, "PostDeploymentActions"),
                                    "*")
                                ).Returns(DefaultActionScripts.Union(new string[] { Path.Combine(DeploymentToolsPath, "PostDeploymentActions", "Foo.txt") }).ToArray());

            var fileSystemMock = new Mock <IFileSystem>();

            fileSystemMock.Setup(f => f.Directory).Returns(directoryMock.Object);
            FileSystemHelpers.Instance = fileSystemMock.Object;

            var builder = new CustomBuilder(
                enviromentMock.Object,
                deploymentSettingsMock.Object,
                Mock.Of <IBuildPropertyProvider>(),
                string.Empty,
                string.Empty);

            TestTracer.Trace("Should return action script from default folder");
            IList <string> actionScripts = builder.GetPostBuildActionScripts();

            Assert.NotEmpty(actionScripts);
            Assert.Equal(DefaultActionScripts.Count(), actionScripts.Count);
            Assert.NotEqual(DefaultActionScripts[0], actionScripts[0]);
            Array.Sort(DefaultActionScripts);
            Assert.Equal(DefaultActionScripts[0], actionScripts[0]);
            Assert.Equal(DefaultActionScripts[1], actionScripts[1]);
            Assert.Equal(DefaultActionScripts[2], actionScripts[2]);

            const string CustomDeploymentActionDir = @"x:\CustomDeploymentToolsPath\CustomPostDeploymentActions";

            string[] CustomActionScripts = new string[] {
                Path.Combine(DeploymentToolsPath, "CmdTest-Custom.cmd"),
                Path.Combine(DeploymentToolsPath, "BatTest-Custom.bat"),
                Path.Combine(DeploymentToolsPath, "Ps1Test-Custom.ps1")
            };

            directoryMock.Setup(d => d.Exists(CustomDeploymentActionDir)).Returns(true);
            directoryMock.Setup(d => d.GetFiles(CustomDeploymentActionDir, "*"))
            .Returns(CustomActionScripts.Union(new string[] { Path.Combine(CustomDeploymentActionDir, "Foo.txt") }).ToArray());

            TestTracer.Trace("Override SCM_POST_DEPLOYMENT_ACTIONS_PATH to a custom location");
            deploymentSettingsMock.Setup(d =>
                                         d.GetValue(It.Is <string>(key => "SCM_POST_DEPLOYMENT_ACTIONS_PATH".Equals(key)), It.IsAny <bool>()))
            .Returns(CustomDeploymentActionDir);

            TestTracer.Trace("Should return action script from custom folder");
            actionScripts = builder.GetPostBuildActionScripts();
            Assert.NotEmpty(actionScripts);
            Assert.Equal(DefaultActionScripts.Count(), actionScripts.Count);
            Assert.NotEqual(DefaultActionScripts[0], actionScripts[0]);
            Assert.NotEqual(DefaultActionScripts[1], actionScripts[1]);
            Assert.NotEqual(DefaultActionScripts[2], actionScripts[2]);

            Assert.Equal(CustomActionScripts.Count(), actionScripts.Count);
            Assert.NotEqual(CustomActionScripts[0], actionScripts[0]);
            Array.Sort(CustomActionScripts);

            Assert.Equal(CustomActionScripts[0], actionScripts[0]);
            Assert.Equal(CustomActionScripts[1], actionScripts[1]);
            Assert.Equal(CustomActionScripts[2], actionScripts[2]);
        }
Esempio n. 7
0
        public void GetPostBuildActionScriptsShouldReturnActionScriptFromSiteExtensions()
        {
            const string DeploymentToolsPath = @"x:\DeploymentToolsPath";

            string[] DefaultActionScripts = new string[] {
                Path.Combine(DeploymentToolsPath, "CmdTest.cmd"),
                Path.Combine(DeploymentToolsPath, "BatTest.bat"),
                Path.Combine(DeploymentToolsPath, "Ps1Test.ps1")
            };

            var enviromentMock = new Mock <IEnvironment>();

            enviromentMock.Setup(e => e.RepositoryPath).Returns(@"e:\");
            enviromentMock.Setup(e => e.DeploymentToolsPath).Returns(DeploymentToolsPath);

            var directoryMock = new Mock <DirectoryBase>();

            directoryMock.Setup(d => d.Exists(Path.Combine(DeploymentToolsPath, "PostDeploymentActions"))).Returns(true);
            directoryMock.Setup(d => d.GetFiles(
                                    Path.Combine(DeploymentToolsPath, "PostDeploymentActions"),
                                    "*")
                                ).Returns(DefaultActionScripts.Union(new string[] { Path.Combine(DeploymentToolsPath, "PostDeploymentActions", "Foo.txt") }).ToArray());

            System.Environment.SetEnvironmentVariable("Foo_EXTENSION_VERSION", "1.0.0", EnvironmentVariableTarget.Process);
            System.Environment.SetEnvironmentVariable("Bar_EXTENSION_VERSION", "latest", EnvironmentVariableTarget.Process);

            try
            {
                string siteExtensionFolder = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86), "SiteExtensions");

                string[] FooActionScripts = new string[] {
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions", "CmdTest-Foo.cmd"),
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions", "BatTest-Foo.bat"),
                    Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions", "Ps1Test-Foo.ps1")
                };

                string[] BarActionScripts = new string[] {
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions", "CmdTest-Bar.cmd"),
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions", "BatTest-Bar.bat"),
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions", "Ps1Test-Bar.ps1")
                };

                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Foo"))).Returns(true);
                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions"))).Returns(true);
                directoryMock.Setup(d => d.GetFiles(
                                        Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions"),
                                        "*")
                                    ).Returns(FooActionScripts.Union(new string[] { Path.Combine(siteExtensionFolder, "Foo", "1.0.0", "PostDeploymentActions", "Foo.txt") }).ToArray());

                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Bar"))).Returns(true);
                directoryMock.Setup(d => d.Exists(Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions"))).Returns(true);
                directoryMock.Setup(d => d.GetFiles(
                                        Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions"),
                                        "*")
                                    ).Returns(BarActionScripts.Union(new string[] { Path.Combine(siteExtensionFolder, "Bar", "10.0.0", "PostDeploymentActions", "Foo.txt") }).ToArray());

                directoryMock.Setup(d => d.GetDirectories(Path.Combine(siteExtensionFolder, "Bar"))
                                    ).Returns(new string[] {
                    Path.Combine(siteExtensionFolder, "Bar", "10.0.0"),
                    Path.Combine(siteExtensionFolder, "Bar", "1.0.0"),
                    Path.Combine(siteExtensionFolder, "Bar", "2.0.0"),
                });

                var fileSystemMock = new Mock <IFileSystem>();
                fileSystemMock.Setup(f => f.Directory).Returns(directoryMock.Object);
                FileSystemHelpers.Instance = fileSystemMock.Object;

                var builder = new CustomBuilder(
                    enviromentMock.Object,
                    Mock.Of <IDeploymentSettingsManager>(),
                    Mock.Of <IBuildPropertyProvider>(),
                    string.Empty,
                    string.Empty);

                IList <string> actionScripts = builder.GetPostBuildActionScripts();
                Assert.Equal(DefaultActionScripts.Count() + FooActionScripts.Count() + BarActionScripts.Count(), actionScripts.Count);
            }
            finally
            {
                System.Environment.SetEnvironmentVariable("Foo_EXTENSION_VERSION", null, EnvironmentVariableTarget.Process);
                System.Environment.SetEnvironmentVariable("Bar_EXTENSION_VERSION", null, EnvironmentVariableTarget.Process);
            }
        }
Esempio n. 8
0
 public void SetTarget(CustomBuilder bldr)
 {
     target = bldr;
 }
Esempio n. 9
0
    static public void Open(CustomBuilder bldr)
    {
        CustomBuilderEditorWindow editor = GetWindow <CustomBuilderEditorWindow>();

        editor.SetTarget(bldr);
    }
 public static void PrintResult(this CustomBuilder runnable, Int32 result)
 {
     Console.WriteLine($"Result: {result}");
 }