Ejemplo n.º 1
0
        public void RunDir()
        {
            var cmd = new ConsoleTool("cmd.exe")
            {
                AssertSuccess = true
            };

            Task.WhenAll(
                cmd.Run("/c", "echo", "hello"),
                cmd.Run("/c", "dir")
                ).Wait();
        }
Ejemplo n.º 2
0
        public void CheckIfTemplatesBuild()
        {
            var sourceRoot  = Paths.BinDir.Parent.Parent.Parent.Parent;
            var templateDir = sourceRoot.CatDir(@"sidi.project\templates");

            log.Info(templateDir);

            var templates = new[] { "ConsoleExe" }.Select(_ => templateDir.CatDir(_));

            foreach (var template in templates)
            {
                var cmd = new ConsoleTool("cmd.exe")
                {
                    WorkingDirectory = template
                };
                var r = cmd.Run("/c", "build.cmd").Result;
                Assert.AreEqual(0, r.ExitCode);
            }
        }
Ejemplo n.º 3
0
        static async Task Init(LPath destination, string Product, string Company, LPath templateDirectory)
        {
            if (destination == null)
            {
                throw new ArgumentNullException(nameof(destination));
            }

            if (string.IsNullOrEmpty(Product))
            {
                throw new ArgumentException("message", nameof(Product));
            }

            if (Company == null)
            {
                throw new ArgumentNullException(nameof(Company));
            }

            var source = templateDirectory.CatDir("ConsoleExe");

            log.InfoFormat("Create project from template {0} in {1}", source, destination);
            if (!source.IsDirectory)
            {
                throw new ArgumentOutOfRangeException(nameof(source), source, "not a directory");
            }

            destination.EnsureDirectoryExists();

            if (destination.Children.Any())
            {
                throw new Exception("Cannot create project in non-empty directory");
            }

            var d = new Dictionary <string, string>
            {
                { "ProductNamePlaceHolder", Product },
                { "CompanyNamePlaceHolder", Company },
                { "CopyrightMessagePlaceHolder", String.Format("Copyright {0} by {1}", DateTime.Now.Year, Company) },
                { "LicenseHeader", @"This file is part of _ProductName_.

ProductNamePlaceHolder is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

ProductNamePlaceHolder is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with hagen. If not, see <http://www.gnu.org/licenses/>.
" }
            };

            d["CommentHeader"] = String.Format("{0}\r\n{1}\r\n", d["CopyrightMessagePlaceHolder"], d["LicenseHeader"]);

            foreach (var k in new[] {
                "99890FA4-3413-4B88-9561-F16DB96C2F64",
                "4BFAC30D-938A-404A-9C35-ABD085D3C19D"
            })
            {
                d[k] = Guid.NewGuid().ToString();
            }

            var transform = new DictionaryTransform(d);

            transform.CreateFromTemplate(source, destination);
            destination.Parent.CatDir("packages").EnsureDirectoryExists();
            var sn = new ConsoleTool(@"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe")
            {
                WorkingDirectory = destination
            };
            await sn.Run("-k", "key.snk");

            var nuget = new ConsoleTool("nuget")
            {
                WorkingDirectory = destination
            };
            await nuget.Run("update", LPath.GetValidFilename(d["ProductNamePlaceHolder"]) + ".sln");

            var git = new ConsoleTool("git.exe")
            {
                WorkingDirectory = destination
            };
            await git.Run("init");

            await git.Run("add", ".");

            await git.Run("commit", ".", "-m", "Initial version");

            var cmd = new ConsoleTool("cmd.exe")
            {
                WorkingDirectory = destination
            };
            await cmd.Run("/c", "build.cmd test");
        }