77
88 "github.com/Bananenpro/cli"
99 "github.com/code-game-project/go-utils/sessions"
10+ "github.com/google/uuid"
1011 "github.com/spf13/cobra"
1112)
1213
@@ -19,41 +20,57 @@ var shareGameCmd = &cobra.Command{
1920 var gameURL string
2021 var gameId string
2122
23+ cgConfURL := findGameURL ()
24+
2225 if len (args ) > 0 {
2326 gameURL = args [0 ]
2427 if len (args ) > 1 {
2528 gameId = args [1 ]
29+ } else if _ , err := uuid .Parse (gameURL ); err == nil && cgConfURL != "" {
30+ gameId = gameURL
31+ gameURL = ""
2632 }
2733 }
2834
2935 var err error
3036 if gameURL == "" {
31- fromSession , err := cli .YesNo ("Select game URL from session?" , true )
32- abort (err )
33- if fromSession {
34- urls , err := sessions .ListGames ()
35- abortf ("Failed to load games: %s" , err )
36- selected , err := cli .Select ("Game URL:" , urls )
37- abort (err )
38- gameURL = urls [selected ]
37+ if cgConfURL != "" {
38+ gameURL = cgConfURL
39+ cli .Print ("Game URL: %s" , gameURL )
3940 } else {
40- gameURL , err = cli .Input ( "Game URL:" )
41+ fromSession , err : = cli .YesNo ( "Select game URL from session?" , true )
4142 abort (err )
43+ if fromSession {
44+ urls , err := sessions .ListGames ()
45+ abortf ("Failed to load games: %s" , err )
46+ selected , err := cli .Select ("Game URL:" , urls )
47+ abort (err )
48+ gameURL = urls [selected ]
49+ cli .Print ("Game URL: %s" , gameURL )
50+ } else {
51+ gameURL , err = cli .Input ("Game URL:" )
52+ abort (err )
53+ }
4254 }
4355 }
4456
4557 if gameId == "" {
46- fromSession , err := cli .YesNo ("Select game ID from session?" , true )
47- abort (err )
48- if fromSession {
49- usernames , err := sessions .ListUsernames (gameURL )
50- abortf ("Failed to load usernames: %s" , err )
51- selected , err := cli .Select ("Username:" , usernames )
58+ usernames , err := sessions .ListUsernames (gameURL )
59+ if len (usernames ) > 0 {
60+ fromSession , err := cli .YesNo ("Select game ID from session?" , true )
5261 abort (err )
53- session , err := sessions .LoadSession (gameURL , usernames [selected ])
54- abortf ("Failed to load session: %s" , err )
55- gameId = session .GameId
56- } else {
62+ if fromSession {
63+ usernames , err := sessions .ListUsernames (gameURL )
64+ abortf ("Failed to load usernames: %s" , err )
65+ selected , err := cli .Select ("Username:" , usernames )
66+ abort (err )
67+ session , err := sessions .LoadSession (gameURL , usernames [selected ])
68+ abortf ("Failed to load session: %s" , err )
69+ gameId = session .GameId
70+ cli .Print ("Game ID: %s" , gameId )
71+ }
72+ }
73+ if gameId == "" {
5774 gameId , err = cli .Input ("Game ID:" )
5875 abort (err )
5976 }
0 commit comments