예제 #1
0
        //static void Main(string[] args) // for tests
        //{
        //    ILogger logger = new ConsoleLogger();
        //    GitSourceControlProvider pro = new GitSourceControlProvider("https://github.com/CagdasTrials/Trials.git", "CagdasTrials","---", logger);
        //    pro.LoadWorkspace(@"D:\GitRepos\RepoX");
        //    pro.DeleteServerItemsWhichHaveNoLocalItems();

        //    string xx = "";
        //}

        static void Main(string[] args)
        {
            var logger = new ConsoleLogger();

            if (args.Length < 1)
            {
                logger.LogError("Invalid arguments - at least path to folder is required");

                return;
            }

            if (args[0] == "?")
            {
                WriteHelpInfo();

                return;
            }

            SyncToolParameters parameters = GetParameters(args);

            if (string.IsNullOrEmpty(parameters.FolderPath))
            {
                logger.LogError("Folder parameter (f) should be specified.");

                return;
            }

            if (Directory.Exists(parameters.FolderPath) == false)
            {
                logger.LogError($"Folder {parameters.FolderPath} does not exist");

                return;
            }

            ISourceControlProvider provider;

            bool useGit = false;

            if (string.IsNullOrEmpty(parameters.SourceControl))
            {
                if (parameters.SourceControl.ToLower() == "git")
                {
                    useGit = true;
                }
            }

            if (useGit)
            {
                try
                {
                    provider = new GitSourceControlProvider(
                        parameters.ServerUri,
                        parameters.User,
                        parameters.Password,
                        logger
                        );
                }
                catch (Exception e)
                {
                    logger.LogError(e.Message);
                    return;
                }
            }
            else
            {
                try
                {
                    provider = new TfsSourceControlProvider(
                        parameters.ServerUri,
                        parameters.User,
                        parameters.Password,
                        logger
                        );
                }
                catch (TeamFoundationServerUnauthorizedException)
                {
                    logger.LogError("Could not connect to Source Control with providere credentials");
                    return;
                }
            }

            var merger = new DifferencesMerger(provider, logger);

            try
            {
                StringBuilder log = new StringBuilder();
                merger.MergeDifferencesInFolder(parameters.FolderPath, parameters.Comment, log);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            CommandLine.Parser.Default.ParseArguments <Options>(args)
            .WithParsed(opts =>
            {
                if (!Directory.Exists(opts.WorkingDirectory))
                {
                    Console.Error.WriteLine($"Directory {opts.WorkingDirectory} is invalid.");
                    return;
                }

                string solutionPath = opts.SolutionPath;
                if (!Path.IsPathRooted(opts.SolutionPath))
                {
                    solutionPath = Path.Combine(opts.WorkingDirectory, opts.SolutionPath);
                }

                if (!File.Exists(solutionPath))
                {
                    Console.Error.WriteLine($"File {solutionPath} does not exist.");
                    return;
                }

                Console.WriteLine(CommandLine.Text.HeadingInfo.Default);
                Console.WriteLine(CommandLine.Text.CopyrightInfo.Default);
                Console.WriteLine();

                IOutputFormatter formatter = new ConsoleOutputFormatter();
                if (!string.IsNullOrEmpty(opts.OutputPath))
                {
                    formatter = new PrettyOutputFormatter(opts.OutputPath);
                }

                Console.WriteLine("Analyzing changes...");
                DateTime now = DateTime.Now;
                var provider = new GitSourceControlProvider(opts.WorkingDirectory);
                var analyzer = new Analyzer <string>(provider, solutionPath, opts.CommitId);
                analyzer.OpenSolution();

                formatter.WriteHeading(opts.SolutionPath, opts.CommitId, provider.GetTimestamp(opts.CommitId));

                var changedStyles = analyzer.GetChangedStyles();
                formatter.WriteChangedAssets("stylesheets", changedStyles);
                formatter.AppendSectionBreak();

                var changedScripts = analyzer.GetChangedScripts();
                formatter.WriteChangedAssets("JavaScripts", changedScripts);
                formatter.AppendSectionBreak();

                if (opts.IncludeChangedMethodSignatures)
                {
                    var changedMethods = analyzer.GetChangedMethodSignatures();
                    formatter.WriteChangedMethods(changedMethods);
                    formatter.AppendSectionBreak();
                }

                var referencingProjects = analyzer.GetReferencingProjects();
                formatter.WriteReferencingProjects(referencingProjects);

                formatter.WriteFooter();

                Console.WriteLine($"Elapsed time: {DateTime.Now - now}");
            });
        }