@@ -2,19 +2,18 @@ package main
22
33import (
44 "context"
5- "flag"
65 "fmt"
76 "io"
87 "net/url"
9- "os"
108
119 "github.com/sourcegraph/src-cli/internal/api"
10+ "github.com/sourcegraph/src-cli/internal/clicompat"
1211 "github.com/sourcegraph/src-cli/internal/cmderrors"
1312 "github.com/sourcegraph/src-cli/internal/oauth"
13+ "github.com/urfave/cli/v3"
1414)
1515
16- func init () {
17- usage := `'src login' helps you authenticate 'src' to access a Sourcegraph instance with your user credentials.
16+ const loginExamples = `'src login' helps you authenticate 'src' to access a Sourcegraph instance with your user credentials.
1817
1918Usage:
2019
@@ -35,49 +34,37 @@ Examples:
3534 $ src login https://sourcegraph.com
3635`
3736
38- flagSet := flag .NewFlagSet ("login" , flag .ExitOnError )
39- usageFunc := func () {
40- fmt .Fprintln (flag .CommandLine .Output (), usage )
41- flagSet .PrintDefaults ()
42- }
43-
44- var (
45- apiFlags = api .NewFlags (flagSet )
46- )
47-
48- handler := func (args []string ) error {
49- if err := flagSet .Parse (args ); err != nil {
50- return err
51- }
52-
37+ var loginCommand = clicompat .Wrap (& cli.Command {
38+ Name : "login" ,
39+ Usage : "authenticate to a Sourcegraph instance with your user credentials" ,
40+ UsageText : "src login [command options] [SOURCEGRAPH_URL]" ,
41+ Description : loginExamples ,
42+ HideVersion : true ,
43+ Flags : clicompat .WithAPIFlags (),
44+ Action : func (ctx context.Context , cmd * cli.Command ) error {
5345 var loginEndpointURL * url.URL
54- if flagSet . NArg () >= 1 {
55- arg := flagSet . Arg ( 0 )
46+ if cmd . Args (). Present () {
47+ arg := cmd . Args (). First ( )
5648 u , err := parseEndpoint (arg )
5749 if err != nil {
5850 return cmderrors .Usage (fmt .Sprintf ("invalid endpoint URL: %s" , arg ))
5951 }
6052 loginEndpointURL = u
6153 }
6254
55+ apiFlags := clicompat .APIFlagsFromCmd (cmd )
6356 client := cfg .apiClient (apiFlags , io .Discard )
6457
65- return loginCmd (context . Background () , loginParams {
58+ return loginCmd (ctx , loginParams {
6659 cfg : cfg ,
6760 client : client ,
68- out : os . Stdout ,
61+ out : cmd . Writer ,
6962 apiFlags : apiFlags ,
7063 oauthClient : oauth .NewClient (oauth .DefaultClientID ),
7164 loginEndpointURL : loginEndpointURL ,
7265 })
73- }
74-
75- commands = append (commands , & command {
76- flagSet : flagSet ,
77- handler : handler ,
78- usageFunc : usageFunc ,
79- })
80- }
66+ },
67+ })
8168
8269type loginParams struct {
8370 cfg * config
0 commit comments