示例#1
0
        private static async Task <int> UpdateItem(int id, float completedWork, float remainingWork)
        {
            await CheckSettings();

            var update = await AzureDevOps.SaveWorkItemsAsync(new WorkItem { Id = id, Fields = new Fields {
                                                                                 CompletedWork = completedWork, RemainingWork = remainingWork
                                                                             } });

            ColorConsole.WriteLine(update ? $"{id} updated! ".Green() : $" Could not update {id}! ".Red());
            return(0);
        }
示例#2
0
        private static async Task <int> GetUserAssignments(IEnumerable <string> users)
        {
            await CheckSettings();

            if (users?.Any() == true)
            {
                foreach (var u in users)
                {
                    try
                    {
                        var user      = Users?.FirstOrDefault(x => (u?.Contains("@") == true && x?.PrincipalName?.Equals(u, StringComparison.OrdinalIgnoreCase) == true) || ((u?.Contains("@") != true) && x?.PrincipalName?.Split('@')?.FirstOrDefault()?.Equals(u, StringComparison.OrdinalIgnoreCase) == true))?.PrincipalName ?? u;
                        var workItems = await AzureDevOps.GetWorkItems(user);

                        var bugs  = workItems?.Count(x => x.Fields.WorkItemType.Equals("Bug")).ToString();
                        var tasks = workItems?.Count(x => x.Fields.WorkItemType.Equals("Task")).ToString();
                        ColorConsole.WriteLine($"\n{workItems?.FirstOrDefault()?.Fields?.AssignedTo.ToUpperInvariant() ?? user.ToUpperInvariant()}: {workItems?.Count}".Cyan(), " (", "B: ", $" {bugs ?? string.Empty} ".White().OnRed(), " / T: ", $" {tasks ?? string.Empty} ".Black().OnYellow(), ")\n");
                        var i = 0;
                        workItems?.ForEach(wi =>
                        {
                            i++;
                            var createdDate = wi.Fields.CreatedDate.ToString(DateFormat);
                            var elapsed     = new StringBuilder($" {createdDate} ");
                            for (var e = 1; e < DateTimeOffset.Now.Subtract(wi.Fields.CreatedDate).Days - createdDate.Length; e++)
                            {
                                elapsed.Append(" ");
                            }

                            var completed = $" {wi.Fields.CompletedWork} (C) ".White().OnDarkGreen();
                            var remaining = $" {wi.Fields.RemainingWork} (R) ".White().OnDarkRed();
                            var original  = $" {wi.Fields.OriginalEstimate} (O) ".White().OnDarkGray();

                            var severity = $" {wi.Fields.Severity} ".White().OnDarkMagenta();
                            var priority = $" P{wi.Fields.Priority} ".White().OnDarkCyan();

                            var index  = i.ToString().PadLeft(2, '0');
                            var wiType = $"[{index}.{wi.Fields.WorkItemType.FirstOrDefault()}]";
                            ColorConsole.WriteLine($"  ", wiType.EndsWith("B]", StringComparison.OrdinalIgnoreCase) ? wiType.Red() : wiType.Yellow(), " ", $" {wi.Id} ".Black().OnWhite(), $" {wi.Fields.Title}");
                            ColorConsole.WriteLine(SpacesPrefix, elapsed.ToString().OnRed());
                            ColorConsole.WriteLine(SpacesPrefix, severity, " / ", priority);
                            ColorConsole.WriteLine(SpacesPrefix, completed, " + ", remaining, " / ", original);
                            Console.WriteLine();
                        });
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "Invalid Command");
                        ColorConsole.WriteLine("Invalid Command: " + ex.Message?.Red() ?? string.Empty);
                    }
                }
            }

            return(0);
        }
示例#3
0
        private static async Task CheckSettings()
        {
            if (string.IsNullOrWhiteSpace(AzureDevOps.Account) || string.IsNullOrWhiteSpace(AzureDevOps.Project) || string.IsNullOrWhiteSpace(AzureDevOps.Token))
            {
                ColorConsole.WriteLine("\n Please provide Azure DevOps details using the 'setup' option".Black().OnCyan());
                var details = Console.ReadLine().Split(' ');
                Parser.Default
                .ParseArguments <AddAccountOptions>(details)
                .MapResult(
                    (AddAccountOptions opts) => AddAccount(opts.Account, opts.Project, opts.Token),
                    errs => HandleParseErrors(errs?.ToList()));
            }

            if (Users == null || Users.Count == 0)
            {
                Users = await AzureDevOps.GetUsers().ConfigureAwait(false);
            }
        }