static void Main(string[] args)
        {
            TransformArgs strongArgs = new TransformArgs();
            if (args.Any(p=> p.Contains("help")))
            {
                Console.WriteLine("Usage: transform.exe <original file>  <tranformation file> [output file]");
            }
            else if (args.Length > 1)
            {
                strongArgs = new TransformArgs(args);
            }
            else
            {
                Console.Write("Enter the name of original configuration file:");
                strongArgs.SourceFile = Path.Combine(Directory.GetCurrentDirectory(), Console.ReadLine());

                Console.Write("Enter the name of the transformation file:");
                strongArgs.TransformFile = Path.Combine(Directory.GetCurrentDirectory(), Console.ReadLine());

                Console.Write("Enter the name of the output file:");
                strongArgs.DestinationFile = Path.Combine(Directory.GetCurrentDirectory(), Console.ReadLine());
            }

            var successful = ProcessTransform(strongArgs);
            Console.WriteLine("Transformer returned {0}",successful);

            Environment.ExitCode = successful ? 0 : 1;
        }
        private static bool ProcessTransform(TransformArgs args)
        {
            if (string.Equals(args.SourceFile, args.DestinationFile))
            {
                var tempFileName = Path.GetTempFileName();
                File.Delete(tempFileName);
                File.Copy(args.SourceFile, tempFileName);
                args.SourceFile = tempFileName;
            }

            var engine = new TransformOnlyBuildEngine();

            var transformer = new TransformXml
            {
                BuildEngine = engine,
                Source = args.SourceFile,
                Destination = args.DestinationFile,
                Transform = args.TransformFile
            };

            return transformer.Execute();
        }