Skip to content

Commit 9267b5f

Browse files
committed
feat: add server id to login command
this allows scripting the login without the modal prompt
1 parent 9133283 commit 9267b5f

7 files changed

Lines changed: 76 additions & 4 deletions

File tree

general/login/cli.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ func LoginCmd(c *cli.Context) error {
1010
if c.NArg() > 0 {
1111
return cliutils.WrongNumberOfArgumentsHandler(c)
1212
}
13-
return coreLogin.NewLoginCommand().Run()
13+
return coreLogin.NewLoginCommand().SetServerId(c.String("server-id")).Run()
1414
}

general/login/cli_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package login
2+
3+
import (
4+
"flag"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"github.com/urfave/cli"
9+
)
10+
11+
func TestLoginCmdRejectsExtraArguments(t *testing.T) {
12+
app := cli.NewApp()
13+
app.Commands = []cli.Command{
14+
{
15+
Name: "login",
16+
Action: LoginCmd,
17+
},
18+
}
19+
err := app.Run([]string{"jf", "login", "extra-arg"})
20+
assert.Error(t, err)
21+
}
22+
23+
func TestLoginCmdPassesServerIdFlag(t *testing.T) {
24+
const testServerId = "my-test-server"
25+
var capturedServerId string
26+
27+
app := cli.NewApp()
28+
app.Commands = []cli.Command{
29+
{
30+
Name: "login",
31+
Flags: []cli.Flag{
32+
cli.StringFlag{Name: "server-id"},
33+
},
34+
Action: func(c *cli.Context) error {
35+
capturedServerId = c.String("server-id")
36+
// Return early without running the actual login command.
37+
return nil
38+
},
39+
},
40+
}
41+
err := app.Run([]string{"jf", "login", "--server-id", testServerId})
42+
assert.NoError(t, err)
43+
assert.Equal(t, testServerId, capturedServerId)
44+
}
45+
46+
func TestLoginCmdNoArgsCallsLoginWithEmptyServerId(t *testing.T) {
47+
set := flag.NewFlagSet("test", 0)
48+
set.String("server-id", "", "")
49+
c := cli.NewContext(nil, set, nil)
50+
51+
// Verify that the context has no arguments and server-id is empty.
52+
assert.Equal(t, 0, c.NArg())
53+
assert.Equal(t, "", c.String("server-id"))
54+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ require (
2020
github.com/jfrog/gofrog v1.7.6
2121
github.com/jfrog/jfrog-cli-application v1.0.2-0.20260405065840-c930d515ef34
2222
github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260421101844-c42ed5f491fa
23-
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260420010255-65b7a8d432af
23+
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260427010241-873f53d940b3
2424
github.com/jfrog/jfrog-cli-evidence v0.9.2
2525
github.com/jfrog/jfrog-cli-platform-services v1.10.1-0.20260421062714-60f8615a2c6c
2626
github.com/jfrog/jfrog-cli-security v1.27.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,8 @@ github.com/jfrog/jfrog-cli-application v1.0.2-0.20260405065840-c930d515ef34 h1:q
420420
github.com/jfrog/jfrog-cli-application v1.0.2-0.20260405065840-c930d515ef34/go.mod h1:xum2HquWO5uExa/A7MQs3TgJJVEeoqTR+6Z4mfBr1Xw=
421421
github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260421101844-c42ed5f491fa h1:TYcV+5qmFF1x8+jNpklseXQnKc4K5xh6XminwFhZbTo=
422422
github.com/jfrog/jfrog-cli-artifactory v0.8.1-0.20260421101844-c42ed5f491fa/go.mod h1:6QJFQvde/CLnFeIIFOvm/6QuQr8OT1QWiTJAkQ+1Mnc=
423-
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260420010255-65b7a8d432af h1:TGYTFW5egYMD1MhLtuLbYwB2vn+KRlVZLk+9uLVjKyM=
424-
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260420010255-65b7a8d432af/go.mod h1:qpD7einonjqskDTEyqeG3NzAbZO6se0s0Pet0ObBQ3I=
423+
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260427010241-873f53d940b3 h1:LdLQQmhOMUfU+3x7wbtB7kY/Dd2LXKHz7CCUpHWn7uM=
424+
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20260427010241-873f53d940b3/go.mod h1:qpD7einonjqskDTEyqeG3NzAbZO6se0s0Pet0ObBQ3I=
425425
github.com/jfrog/jfrog-cli-evidence v0.9.2 h1:huiBzQSI9z3OF3l2RphthdXl1aH9zBsvAt+zLsApORI=
426426
github.com/jfrog/jfrog-cli-evidence v0.9.2/go.mod h1:R9faPfyQESBmKrdZCmHvlpmYSHmffswjNnFeT3RMq8I=
427427
github.com/jfrog/jfrog-cli-platform-services v1.10.1-0.20260421062714-60f8615a2c6c h1:FmKtkKwf9LPXwikjCmX5ofJ1qg4T7hfsg3v00QDvaUY=

main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ func getCommands() ([]cli.Command, error) {
300300
Usage: loginDocs.GetDescription(),
301301
HelpName: corecommon.CreateUsage("login", loginDocs.GetDescription(), loginDocs.Usage),
302302
BashComplete: corecommon.CreateBashCompletionFunc(),
303+
Flags: cliutils.GetCommandFlags(cliutils.Login),
303304
Category: otherCategory,
304305
Action: login.LoginCmd,
305306
},

utils/cliutils/commandsflags.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ const (
130130
ExchangeOidcToken = "exchange-oidc-token"
131131
Api = "api"
132132

133+
// Login command key
134+
Login = "login"
135+
133136
// *** Artifactory Commands' flags ***
134137
// Base flags
135138
url = "url"
@@ -2183,6 +2186,9 @@ var commandFlags = map[string][]string{
21832186
Setup: {
21842187
serverId, url, user, password, accessToken, sshPassphrase, sshKeyPath, ClientCertPath, ClientCertKeyPath, Project, setupRepo,
21852188
},
2189+
Login: {
2190+
serverId,
2191+
},
21862192
}
21872193

21882194
func GetCommandFlags(cmd string) []cli.Flag {

utils/cliutils/utils_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,3 +429,14 @@ func TestSettingCIFlagRemovesSurvey(t *testing.T) {
429429
shouldHide := ShouldHideSurveyLink()
430430
assert.True(t, shouldHide, "Expected survey to be hidden when CI flag is set")
431431
}
432+
433+
func TestLoginCommandFlagsIncludeServerId(t *testing.T) {
434+
flags := GetCommandFlags(Login)
435+
assert.NotEmpty(t, flags, "Expected login command to have flags")
436+
437+
var flagNames []string
438+
for _, f := range flags {
439+
flagNames = append(flagNames, f.GetName())
440+
}
441+
assert.Contains(t, flagNames, "server-id", "Expected login command flags to include 'server-id'")
442+
}

0 commit comments

Comments
 (0)