Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 37 additions & 15 deletions cmd/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -610,10 +610,31 @@ Examples:
},
}

func showNoProjects() {
func listProjects(ctx context.Context, logger logger.Logger, apiUrl string, apikey string, orgId string) []project.ProjectListData {
unfilteredProjects, err := project.ListProjects(ctx, logger, apiUrl, apikey)
if err != nil {
errsystem.New(errsystem.ErrApiRequest, err, errsystem.WithContextMessage("Failed to list projects")).ShowErrorAndExit()
}
if orgId == "" {
return unfilteredProjects
}
var projects []project.ProjectListData
for _, project := range unfilteredProjects {
if project.OrgId == orgId {
projects = append(projects, project)
}
}
return projects
}

func showNoProjects(orgId string) {
fmt.Println()
tui.ShowWarning("no projects found")
tui.ShowBanner("Create a new project", tui.Text("Use the ")+tui.Command("new")+tui.Text(" command to create a new project"), false)
if orgId != "" {
tui.ShowWarning("no projects found in organization %s", orgId)
} else {
tui.ShowWarning("no projects found")
tui.ShowBanner("Create a new project", tui.Text("Use the ")+tui.Command("new")+tui.Text(" command to create a new project"), false)
}
}

var projectListCmd = &cobra.Command{
Expand All @@ -634,14 +655,11 @@ Examples:
logger := env.NewLogger(cmd)
apikey, _ := util.EnsureLoggedIn(ctx, logger, cmd)
apiUrl, _, _ := util.GetURLs(logger)
orgId, _ := cmd.Flags().GetString("org-id")

var projects []project.ProjectListData
action := func() {
var err error
projects, err = project.ListProjects(ctx, logger, apiUrl, apikey)
if err != nil {
errsystem.New(errsystem.ErrApiRequest, err, errsystem.WithContextMessage("Failed to list projects")).ShowErrorAndExit()
}
projects = listProjects(ctx, logger, apiUrl, apikey, orgId)
}
tui.ShowSpinner("fetching projects ...", action)
format, _ := cmd.Flags().GetString("format")
Expand All @@ -650,7 +668,7 @@ Examples:
return
}
if len(projects) == 0 {
showNoProjects()
showNoProjects(orgId)
return
}

Expand Down Expand Up @@ -730,13 +748,11 @@ Examples:
logger := env.NewLogger(cmd)
apikey, _ := util.EnsureLoggedIn(ctx, logger, cmd)
apiUrl, _, _ := util.GetURLs(logger)
orgId, _ := cmd.Flags().GetString("org-id")

var projects []project.ProjectListData
action := func() {
var err error
projects, err = project.ListProjects(ctx, logger, apiUrl, apikey)
if err != nil {
errsystem.New(errsystem.ErrApiRequest, err, errsystem.WithContextMessage("Failed to list projects")).ShowErrorAndExit()
}
projects = listProjects(ctx, logger, apiUrl, apikey, orgId)
}
tui.ShowSpinner("fetching projects ...", action)
var options []tui.Option
Expand All @@ -752,7 +768,7 @@ Examples:
}

if len(options) == 0 {
showNoProjects()
showNoProjects(orgId)
return
}

Expand Down Expand Up @@ -873,6 +889,8 @@ func init() {
cmd.Flags().String("format", "text", "The format to use for the output. Can be either 'text' or 'json'")
}

projectListCmd.Flags().String("org-id", "", "Filter the projects by organization")

projectNewCmd.Flags().StringP("runtime", "r", "", "The runtime to use for the project")
projectNewCmd.Flags().StringP("template", "t", "", "The template to use for the project")
projectNewCmd.Flags().Bool("force", false, "Force the project to be created even if the directory already exists")
Expand All @@ -884,7 +902,11 @@ func init() {
projectImportCmd.Flags().String("description", "", "The description of the project to import")
projectImportCmd.Flags().Bool("force", false, "Force the processing of environment files")

// hidden because they must be all passed together and we havent documented that
projectImportCmd.Flags().MarkHidden("name")
projectImportCmd.Flags().MarkHidden("description")
projectImportCmd.Flags().MarkHidden("org-id")

projectDeleteCmd.Flags().String("org-id", "", "Only delete the projects in the specified organization")

}
Loading