diff --git a/internal/namespaces/info/custom.go b/internal/namespaces/info/custom.go index 6f6c6143a1..25abf1ecac 100644 --- a/internal/namespaces/info/custom.go +++ b/internal/namespaces/info/custom.go @@ -79,6 +79,7 @@ func infosRoot() *core.Command { defaultRegion(ctx, config, profileName), defaultZone(ctx, config, profileName), defaultOrganizationID(ctx, config, profileName), + defaultProjectID(ctx, config, profileName), accessKey(ctx, config, profileName), secretKey(ctx, config, profileName, req.ShowSecret), }, @@ -203,6 +204,29 @@ func defaultOrganizationID(ctx context.Context, config *scw.Config, profileName } return setting } +func defaultProjectID(ctx context.Context, config *scw.Config, profileName string) *setting { + setting := &setting{Key: "default_project_id"} + switch { + // Environment variable check + case core.ExtractEnv(ctx, scw.ScwDefaultProjectIDEnv) != "": + setting.Value = core.ExtractEnv(ctx, scw.ScwDefaultProjectIDEnv) + setting.Origin = fmt.Sprintf("env (%s)", scw.ScwDefaultProjectIDEnv) + // There is no config file + case config == nil: + setting.Origin = "" + // Config file with profile name + case config.Profiles[profileName] != nil && config.Profiles[profileName].DefaultProjectID != nil: + setting.Value = *config.Profiles[profileName].DefaultProjectID + setting.Origin = fmt.Sprintf("profile (%s)", profileName) + // Default config + case config.Profile.DefaultProjectID != nil: + setting.Value = *config.Profile.DefaultProjectID + setting.Origin = defaultProfileOrigin + default: + setting.Origin = unknownOrigin + } + return setting +} func accessKey(ctx context.Context, config *scw.Config, profileName string) *setting { setting := &setting{Key: "access_key"} diff --git a/internal/namespaces/info/custom_test.go b/internal/namespaces/info/custom_test.go index 92c97aefa7..693eda967d 100644 --- a/internal/namespaces/info/custom_test.go +++ b/internal/namespaces/info/custom_test.go @@ -17,6 +17,7 @@ func Test_Info(t *testing.T) { OverrideEnv: map[string]string{ "SCW_SECRET_KEY": "22222222-2222-2222-2222-222222222222", "SCW_DEFAULT_ORGANIZATION_ID": "22222222-2222-2222-2222-222222222222", + "SCW_DEFAULT_PROJECT_ID": "22222222-2222-2222-2222-222222222222", "SCW_ACCESS_KEY": "SCWYYYYYYYYYYYYYYYYY", "SCW_CONFIG_PATH": "/tmp/.config/scw/config.yaml", "SCW_DEFAULT_REGION": "fr-par", @@ -34,6 +35,7 @@ func Test_Info(t *testing.T) { OverrideEnv: map[string]string{ "SCW_SECRET_KEY": "22222222-2222-2222-2222-222222222222", "SCW_DEFAULT_ORGANIZATION_ID": "22222222-2222-2222-2222-222222222222", + "SCW_DEFAULT_PROJECT_ID": "22222222-2222-2222-2222-222222222222", "SCW_ACCESS_KEY": "SCWYYYYYYYYYYYYYYYYY", "SCW_CONFIG_PATH": "/tmp/.config/scw/config.yaml", "SCW_DEFAULT_REGION": "fr-par", diff --git a/internal/namespaces/info/testdata/test-info-show-secret.golden b/internal/namespaces/info/testdata/test-info-show-secret.golden index 177e1c691d..fe6de41d0c 100644 --- a/internal/namespaces/info/testdata/test-info-show-secret.golden +++ b/internal/namespaces/info/testdata/test-info-show-secret.golden @@ -16,6 +16,7 @@ profile default - default_region fr-par env (SCW_DEFAULT_REGION) default_zone fr-par-1 env (SCW_DEFAULT_ZONE) default_organization_id 22222222-2222-2222-2222-222222222222 env (SCW_DEFAULT_ORGANIZATION_ID) +default_project_id 22222222-2222-2222-2222-222222222222 env (SCW_DEFAULT_PROJECT_ID) access_key SCWYYYYYYYYYYYYYYYYY env (SCW_ACCESS_KEY) secret_key 22222222-2222-2222-2222-222222222222 env (SCW_SECRET_KEY) 🟩🟩🟩 JSON STDOUT 🟩🟩🟩 @@ -55,6 +56,11 @@ secret_key 22222222-2222-2222-2222-222222222222 env (SCW_SECRET_K "value": "22222222-2222-2222-2222-222222222222", "origin": "env (SCW_DEFAULT_ORGANIZATION_ID)" }, + { + "key": "default_project_id", + "value": "22222222-2222-2222-2222-222222222222", + "origin": "env (SCW_DEFAULT_PROJECT_ID)" + }, { "key": "access_key", "value": "SCWYYYYYYYYYYYYYYYYY", diff --git a/internal/namespaces/info/testdata/test-info-simple.golden b/internal/namespaces/info/testdata/test-info-simple.golden index d748f912c0..c21e0b19a4 100644 --- a/internal/namespaces/info/testdata/test-info-simple.golden +++ b/internal/namespaces/info/testdata/test-info-simple.golden @@ -16,6 +16,7 @@ profile default - default_region fr-par env (SCW_DEFAULT_REGION) default_zone fr-par-1 env (SCW_DEFAULT_ZONE) default_organization_id 22222222-2222-2222-2222-222222222222 env (SCW_DEFAULT_ORGANIZATION_ID) +default_project_id 22222222-2222-2222-2222-222222222222 env (SCW_DEFAULT_PROJECT_ID) access_key SCWYYYYYYYYYYYYYYYYY env (SCW_ACCESS_KEY) secret_key 22222222-xxxx-xxxx-xxxx-xxxxxxxxxxxx env (SCW_SECRET_KEY) 🟩🟩🟩 JSON STDOUT 🟩🟩🟩 @@ -55,6 +56,11 @@ secret_key 22222222-xxxx-xxxx-xxxx-xxxxxxxxxxxx env (SCW_SECRET_K "value": "22222222-2222-2222-2222-222222222222", "origin": "env (SCW_DEFAULT_ORGANIZATION_ID)" }, + { + "key": "default_project_id", + "value": "22222222-2222-2222-2222-222222222222", + "origin": "env (SCW_DEFAULT_PROJECT_ID)" + }, { "key": "access_key", "value": "SCWYYYYYYYYYYYYYYYYY",