MCPcopy Index your code
hub / github.com/cli/cli / validateRepoOrTeamFlag

Function validateRepoOrTeamFlag

pkg/cmd/project/link/link.go:112–153  ·  view source on GitHub ↗
(opts *linkOpts)

Source from the content-addressed store, hash-verified

110}
111
112func validateRepoOrTeamFlag(opts *linkOpts) error {
113
114 linkedTarget := ""
115 if opts.repo != "" {
116 linkedTarget = opts.repo
117 } else if opts.team != "" {
118 linkedTarget = opts.team
119 }
120
121 if strings.Contains(linkedTarget, "/") {
122 nameArgs := strings.Split(linkedTarget, "/")
123 var host, owner, name string
124
125 if len(nameArgs) == 2 {
126 owner = nameArgs[0]
127 name = nameArgs[1]
128 } else if len(nameArgs) == 3 {
129 host = nameArgs[0]
130 owner = nameArgs[1]
131 name = nameArgs[2]
132 } else {
133 if opts.repo != "" {
134 return fmt.Errorf("expected the \"[HOST/]OWNER/REPO\" or \"REPO\" format, got \"%s\"", linkedTarget)
135 } else if opts.team != "" {
136 return fmt.Errorf("expected the \"[HOST/]OWNER/TEAM\" or \"TEAM\" format, got \"%s\"", linkedTarget)
137 }
138 }
139
140 if opts.owner != "" && opts.owner != owner {
141 return fmt.Errorf("'%s' has different owner from '%s'", linkedTarget, opts.owner)
142 }
143
144 opts.owner = owner
145 opts.host = host
146 if opts.repo != "" {
147 opts.repo = name
148 } else if opts.team != "" {
149 opts.team = name
150 }
151 }
152 return nil
153}
154
155func runLink(config linkConfig) error {
156 canPrompt := config.io.CanPrompt()

Callers 1

NewCmdLinkFunction · 0.70

Calls 2

ContainsMethod · 0.80
ErrorfMethod · 0.65

Tested by

no test coverage detected