예제 #1
0
        static int Main(string[] args)
        {
            VerificationLookup["dir_exists"]            = CheckDirectoryExists;
            VerificationLookup["file_exists"]           = CheckFileExists;
            VerificationLookup["dir_does_not_exist"]    = CheckDirectoryDoesNotExist;
            VerificationLookup["file_does_not_exist"]   = CheckFileDoesNotExist;
            VerificationLookup["file_contains"]         = CheckFileContains;
            VerificationLookup["file_does_not_contain"] = CheckFileDoesNotContain;

            string[] passthroughArgs = new string[args.Length - 2];

            for (int i = 0; i < passthroughArgs.Length; ++i)
            {
                passthroughArgs[i] = args[i + 2];
            }

            string verificationsFile         = args[0];
            string outputPath                = args[1];
            string verificationsFileContents = File.ReadAllText(verificationsFile);
            JArray verifications             = JArray.Parse(verificationsFileContents);
            ITemplateEngineHost host         = CreateHost();
            string profileDir                = Environment.ExpandEnvironmentVariables("%USERPROFILE%");

            if (string.IsNullOrWhiteSpace(profileDir))
            {
                profileDir = Environment.ExpandEnvironmentVariables("$HOME");
            }
            if (string.IsNullOrWhiteSpace(profileDir))
            {
                Console.Error.WriteLine("Could not determine home directory");
                return(0);
            }

            host.VirtualizeDirectory(Path.Combine(profileDir, ".templateengine"));
            host.VirtualizeDirectory(outputPath);

            int result = New3Command.Run(CommandName, host, FirstRun, passthroughArgs);

            bool verificationsPassed = false;

            try
            {
                verificationsPassed = RunVerifications(verifications, host.FileSystem, outputPath);
            }
            catch (Exception ex)
            {
                verificationsPassed = false;
                Console.Error.WriteLine(ex.ToString());
            }

            return(result != 0 ? result : verificationsPassed ? 0 : 1);
        }
예제 #2
0
        private static ITemplateEngineHost CreateHostWithVirtualizedHive(string hostIdentifier, string hostVersion)
        {
            ITemplateEngineHost host = CreateHost(hostIdentifier, hostVersion);

            string home = "%USERPROFILE%";

            if (Path.DirectorySeparatorChar == '/')
            {
                home = "%HOME%";
            }

            string profileDir = Environment.ExpandEnvironmentVariables(home);

            if (string.IsNullOrWhiteSpace(profileDir))
            {
                // Could not determine home directory
                return(null);
            }

            string hivePath = Path.Combine(profileDir, ".templateengine", hostIdentifier);

            host.VirtualizeDirectory(hivePath);

            return(host);
        }
예제 #3
0
        private static int Main(string[] args)
        {
            VerificationLookup["dir_exists"]            = CheckDirectoryExists;
            VerificationLookup["file_exists"]           = CheckFileExists;
            VerificationLookup["dir_does_not_exist"]    = CheckDirectoryDoesNotExist;
            VerificationLookup["file_does_not_exist"]   = CheckFileDoesNotExist;
            VerificationLookup["file_contains"]         = CheckFileContains;
            VerificationLookup["file_does_not_contain"] = CheckFileDoesNotContain;

            int    batteryCount = int.Parse(args[0], CultureInfo.InvariantCulture);
            string outputPath   = args[batteryCount + 1];

            List <string> passThroughArgs = new List <string>();

            passThroughArgs.AddRange(args.Skip(2 + batteryCount));
            passThroughArgs.Add("--debug:ephemeral-hive");

            ITemplateEngineHost host = CreateHost();

            host.VirtualizeDirectory(outputPath);

            var command = NewCommandFactory.Create(CommandName, _ => host, _ => new TelemetryLogger(null), new NewCommandCallbacks());

            int result = ParserFactory.CreateParser(command).Parse(passThroughArgs.ToArray()).Invoke();

            bool verificationsPassed = false;

            for (int i = 0; i < batteryCount; ++i)
            {
                string verificationsFile         = args[i + 1];
                string verificationsFileContents = File.ReadAllText(verificationsFile);
                JArray verifications             = JArray.Parse(verificationsFileContents);

                try
                {
                    verificationsPassed = RunVerifications(verifications, host.FileSystem, outputPath);
                }
                catch (Exception ex)
                {
                    verificationsPassed = false;
                    Console.Error.WriteLine(ex.ToString());
                }
            }

            Console.Error.WriteLine(" ");
            Console.Error.WriteLine("Output Files:");
            foreach (string fileName in host.FileSystem.EnumerateFiles(outputPath, "*", SearchOption.AllDirectories))
            {
                Console.Error.WriteLine(fileName.Substring(outputPath.Length));
            }

            return(result != 0 ? result : batteryCount == 0 ? 0 : verificationsPassed ? 0 : 1);
        }
예제 #4
0
        internal static Bootstrapper GetBootstrapper(IEnumerable <string> additionalVirtualLocations = null, bool loadBuiltInTemplates = false)
        {
            ITemplateEngineHost host = CreateHost(loadBuiltInTemplates);

            if (additionalVirtualLocations != null)
            {
                foreach (string virtualLocation in additionalVirtualLocations)
                {
                    host.VirtualizeDirectory(virtualLocation);
                }
            }
            return(new Bootstrapper(host, null, true));
        }
        internal static Bootstrapper GetBootstrapper(bool installAllTemplates = false, IEnumerable <string> additionalVirtualLocations = null)
        {
            ITemplateEngineHost host = CreateHost();

            if (additionalVirtualLocations != null)
            {
                foreach (string virtualLocation in additionalVirtualLocations)
                {
                    host.VirtualizeDirectory(virtualLocation);
                }
            }

            if (installAllTemplates)
            {
                return(new Bootstrapper(host, InstallAllTemplatesOnFirstRun, true));
            }
            return(new Bootstrapper(host, null, true));
        }
예제 #6
0
 public void VirtualizeDirectory(string path)
 {
     _baseHost.VirtualizeDirectory(path);
 }
예제 #7
0
        static int Main(string[] args)
        {
            VerificationLookup["dir_exists"] = CheckDirectoryExists;
            VerificationLookup["file_exists"] = CheckFileExists;
            VerificationLookup["dir_does_not_exist"] = CheckDirectoryDoesNotExist;
            VerificationLookup["file_does_not_exist"] = CheckFileDoesNotExist;
            VerificationLookup["file_contains"] = CheckFileContains;
            VerificationLookup["file_does_not_contain"] = CheckFileDoesNotContain;

            int batteryCount = int.Parse(args[0], CultureInfo.InvariantCulture);
            string[] passthroughArgs = new string[args.Length - 2 - batteryCount];
            string outputPath = args[batteryCount + 1];

            for(int i = 0; i < passthroughArgs.Length; ++i)
            {
                passthroughArgs[i] = args[i + 2 + batteryCount];
            }

            string home = "%USERPROFILE%";

            if (Path.DirectorySeparatorChar == '/')
            {
                home = "%HOME%";
            }

            ITemplateEngineHost host = CreateHost();
            string profileDir = Environment.ExpandEnvironmentVariables(home);

            if (string.IsNullOrWhiteSpace(profileDir))
            {
                Console.Error.WriteLine("Could not determine home directory");
                return 0;
            }

            string hivePath = Path.Combine(profileDir, ".tetestharness");
            host.VirtualizeDirectory(hivePath);
            host.VirtualizeDirectory(outputPath);

            int result = New3Command.Run(CommandName, host, new TelemetryLogger(null), FirstRun, passthroughArgs, hivePath);
            bool verificationsPassed = false;

            for (int i = 0; i < batteryCount; ++i)
            {
                string verificationsFile = args[i + 1];
                string verificationsFileContents = File.ReadAllText(verificationsFile);
                JArray verifications = JArray.Parse(verificationsFileContents);

                try
                {
                    verificationsPassed = RunVerifications(verifications, host.FileSystem, outputPath);
                }
                catch (Exception ex)
                {
                    verificationsPassed = false;
                    Console.Error.WriteLine(ex.ToString());
                }
            }

            Console.Error.WriteLine(" ");
            Console.Error.WriteLine("Output Files:");
            foreach (string fileName in host.FileSystem.EnumerateFiles(outputPath, "*", SearchOption.AllDirectories))
            {
                Console.Error.WriteLine(fileName.Substring(outputPath.Length));
            }

            return result != 0 ? result : verificationsPassed ? 0 : 1;
        }