@@ -4,16 +4,28 @@ import (
44 "fmt"
55
66 "github.com/pterm/pterm"
7+ "github.com/urfave/cli/v2"
78
89 "github.com/NodeOps-app/createos-cli/internal/api"
910 "github.com/NodeOps-app/createos-cli/internal/cmdutil"
1011)
1112
12- // resolveDomain resolves projectID and domainID from args or interactively.
13- func resolveDomain (args []string , client * api.APIClient ) (string , string , error ) {
13+ // resolveDomain resolves projectID and domainID from flags, args, or interactively.
14+ func resolveDomain (c * cli.Context , client * api.APIClient ) (string , string , error ) {
15+ args := c .Args ().Slice ()
16+
17+ // --domain flag takes priority
18+ if domainID := c .String ("domain" ); domainID != "" {
19+ projectID , err := cmdutil .ResolveProjectID (c .String ("project" ))
20+ if err != nil {
21+ return "" , "" , err
22+ }
23+ return projectID , domainID , nil
24+ }
25+
1426 switch len (args ) {
1527 case 0 :
16- projectID , err := cmdutil .ResolveProjectID ("" )
28+ projectID , err := cmdutil .ResolveProjectID (c . String ( "project" ) )
1729 if err != nil {
1830 return "" , "" , err
1931 }
@@ -23,7 +35,7 @@ func resolveDomain(args []string, client *api.APIClient) (string, string, error)
2335 }
2436 return projectID , domainID , nil
2537 case 1 :
26- projectID , err := cmdutil .ResolveProjectID ("" )
38+ projectID , err := cmdutil .ResolveProjectID (c . String ( "project" ) )
2739 if err != nil {
2840 return "" , "" , err
2941 }
@@ -65,6 +77,14 @@ func pickDomain(client *api.APIClient, projectID string) (string, error) {
6577 return "" , fmt .Errorf ("no domain selected" )
6678}
6779
80+ // resolveEnvironmentForDomain returns an environment ID from flag or interactive select.
81+ func resolveEnvironmentForDomain (c * cli.Context , client * api.APIClient , projectID string ) (string , error ) {
82+ if envID := c .String ("environment" ); envID != "" {
83+ return envID , nil
84+ }
85+ return pickEnvironment (client , projectID )
86+ }
87+
6888// pickEnvironment shows a required interactive environment selector.
6989func pickEnvironment (client * api.APIClient , projectID string ) (string , error ) {
7090 envs , err := client .ListEnvironments (projectID )
0 commit comments