Exemplo n.º 1
0
        /// <summary>
        /// Performs execution of the command
        /// </summary>
        protected override void DoProcessRecord()
        {
            var member = GetItem <Models.Identity>(new
            {
                Identity = Member
            });

            ErrorUtil.ThrowIfNotFound(member, nameof(member), Member);

            var(_, _, t) = GetCollectionProjectAndTeam();

            var group = GetItem <Models.Identity>(new
            {
                Identity = t.Id
            });

            ErrorUtil.ThrowIfNotFound(group, nameof(group), Team);

            var client = GetClient <IdentityHttpClient>();

            if (!ShouldProcess($"Team '{t.Name}'",
                               $"Remove member '{member.DisplayName} ({member.UniqueName})'"))
            {
                return;
            }

            this.Log($"Removing '{member.DisplayName} ({member.UniqueName}))' from team '{t.Name}'");

            client.RemoveMemberFromGroupAsync(group.Descriptor, member.Descriptor)
            .GetResult($"Error removing '{member.DisplayName} ({member.UniqueName}))' from group '{group.DisplayName}'");
        }
Exemplo n.º 2
0
        protected override ClassificationNode DoSetItem()
        {
            var nodeToSet      = GetItem <ClassificationNode>();
            var startDate      = GetParameter <DateTime?>(nameof(SetIteration.StartDate));
            var finishDate     = GetParameter <DateTime?>(nameof(SetIteration.FinishDate));
            var structureGroup = GetParameter <TreeStructureGroup>("StructureGroup");

            ErrorUtil.ThrowIfNotFound(nodeToSet, nameof(SetIteration.Node), GetParameter <string>(nameof(SetIteration.Node)));

            var(_, tp) = GetCollectionAndProject();

            var client = GetClient <WorkItemTrackingHttpClient>();

            if (!ShouldProcess(tp, $"Set dates on iteration '{nodeToSet.RelativePath}'"))
            {
                return(null);
            }

            var patch = new WorkItemClassificationNode()
            {
                Attributes = new Dictionary <string, object>()
                {
                    ["startDate"]  = startDate,
                    ["finishDate"] = finishDate
                }
            };

            var result = client.UpdateClassificationNodeAsync(patch, tp.Name, structureGroup, nodeToSet.RelativePath.Substring(1))
                         .GetResult($"Error setting dates on iteration '{nodeToSet.FullPath}'");

            return(new ClassificationNode(result, tp.Name, client));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Performs execution of the command
        /// </summary>
        protected override void DoProcessRecord()
        {
            var(_, tp) = GetCollectionAndProject();

            var sourceNodes = GetItems <ClassificationNode>();

            if (sourceNodes == null)
            {
                return;
            }

            var destinationNode = GetItem <ClassificationNode>(new { Node = Destination });

            if (destinationNode == null && !Force)
            {
                ErrorUtil.ThrowIfNotFound(destinationNode, nameof(MoveClassificationNode.Destination), Destination);
            }

            this.Log($"Destination node: '{destinationNode.FullPath}'");

            foreach (var sourceNode in sourceNodes)
            {
                this.Log($"Source node: '{sourceNode.FullPath}'");

                var moveTo = $@"{destinationNode.Path}\{sourceNode.Name}";

                if (!ShouldProcess($"Team Project '{sourceNode.TeamProject}'", $"Move {StructureGroup} '{sourceNode.FullPath}'"))
                {
                    return;
                }

                var patch = new WorkItemClassificationNode()
                {
                    Id = sourceNode.Id
                };

                var client = GetClient <WorkItemTrackingHttpClient>();

                var result = client.CreateOrUpdateClassificationNodeAsync(patch, tp.Name, StructureGroup, destinationNode.RelativePath.Substring(1))
                             .GetResult($"Error moving node {sourceNode.RelativePath} to {destinationNode.RelativePath}");

                if (Passthru.IsPresent)
                {
                    WriteObject(result);
                }
            }
        }
Exemplo n.º 4
0
        protected override System.Collections.Generic.IEnumerable <TfsTeamAdmin> DoGetItems()
        {
            var admin = GetParameter <string>(nameof(GetTeamAdmin.Admin));
            var team  = GetItem <Models.Team>(new
            {
                QueryMembership = true
            });

            ErrorUtil.ThrowIfNotFound(team, nameof(team), GetParameter <object>(nameof(GetTeamAdmin.Team)));

            foreach (var member in team.TeamMembers.Where(m => m.IsTeamAdmin))
            {
                var a = new TeamAdmin(GetItem <Models.Identity>(new
                {
                    Identity = member.Identity.Id
                }), team);

                if (a.DisplayName.IsLike(admin) || a.UniqueName.IsLike(admin))
                {
                    yield return(a);
                }
            }
        }
Exemplo n.º 5
0
        protected override WebApiTeamProject DoNewItem()
        {
            var tpc     = GetCollection();
            var project = GetParameter <string>(nameof(NewTeamProject.Project));

            if (!ShouldProcess(tpc, $"Create team project '{project}'"))
            {
                return(null);
            }

            var processTemplate = GetParameter <object>(nameof(NewTeamProject.ProcessTemplate));
            var description     = GetParameter <string>(nameof(NewTeamProject.Description));
            var sourceControl   = GetParameter <string>(nameof(NewTeamProject.SourceControl));
            var done            = false;

            WebApiProcess template = null;

            while (!done)
            {
                switch (processTemplate)
                {
                case WebApiProcess p:
                {
                    template = p;
                    done     = true;
                    break;
                }

                case string s:
                {
                    template = GetItem <WebApiProcess>();
                    ErrorUtil.ThrowIfNotFound(template, nameof(NewTeamProject.ProcessTemplate), processTemplate);
                    done = true;
                    break;
                }

                default:
                {
                    throw new ArgumentException($"Invalid or non-existent process template '{processTemplate}'");
                }
                }
            }

            var client = GetClient <Microsoft.TeamFoundation.Core.WebApi.ProjectHttpClient>();

            var tpInfo = new WebApiTeamProject()
            {
                Name         = project,
                Description  = description,
                Capabilities = new Dictionary <string, Dictionary <string, string> >()
                {
                    ["versioncontrol"] = new Dictionary <string, string>()
                    {
                        ["sourceControlType"] = sourceControl
                    },
                    ["processTemplate"] = new Dictionary <string, string>()
                    {
                        ["templateTypeId"] = template.Id.ToString()
                    }
                }
            };

            // Trigger the project creation

            var token = client.QueueCreateProject(tpInfo)
                        .GetResult("Error queueing project creation");

            // Wait for the operation to complete

            var opsClient = GetClient <OperationsHttpClient>();
            var opsToken  = opsClient.GetOperation(token.Id)
                            .GetResult("Error getting operation status");

            while (
                (opsToken.Status != OperationStatus.Succeeded) &&
                (opsToken.Status != OperationStatus.Failed) &&
                (opsToken.Status != OperationStatus.Cancelled))
            {
                Thread.Sleep(2);
                opsToken = opsClient.GetOperation(token.Id)
                           .GetResult("Error getting operation status");
            }

            if (opsToken.Status != OperationStatus.Succeeded)
            {
                throw new Exception($"Error creating team project {project}: {opsToken.ResultMessage}");
            }

            return(GetItem <WebApiTeamProject>());
        }