From 5825a1b2b463629f53537bb3d804b8eadc834d1d Mon Sep 17 00:00:00 2001 From: James Walker Date: Sun, 19 Dec 2021 17:00:40 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20only=20list/stop=20active=20proj?= =?UTF-8?q?ects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close #8 --- cmd/list.go | 6 +++++- cmd/ps.go | 9 ++++++--- cmd/root.go | 4 ++-- cmd/stop.go | 3 +-- tmux/project.go | 22 +++++++++++++--------- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/cmd/list.go b/cmd/list.go index e5b3e90..b37f7aa 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -34,10 +34,14 @@ var listCmd = &cobra.Command{ Short: "A brief description of your command", Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { - err := tmux.ListProjects() + projects, err := tmux.ListProjects() if err != nil { fmt.Println("Unable to list projects:", err) } + + for _, project := range projects { + fmt.Println(project) + } }, } diff --git a/cmd/ps.go b/cmd/ps.go index 3da5da3..fe75f87 100644 --- a/cmd/ps.go +++ b/cmd/ps.go @@ -33,11 +33,14 @@ var psCmd = &cobra.Command{ Use: "ps", Short: "List currently running projects.", Run: func(cmd *cobra.Command, args []string) { - t := tmux.Tmux{} - for _, project := range t.ListSessions() { - fmt.Println(project) + projects, err := tmux.ListActiveProjects() + if err != nil { + fmt.Println(err) } + for _, project := range projects { + fmt.Println(project) + } }, } diff --git a/cmd/root.go b/cmd/root.go index 85756f5..6a79a92 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -44,7 +44,7 @@ var rootCmd = &cobra.Command{ Long: "", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { - return errors.New("No project or command given") + return errors.New("no project or command given") } startCmd.Run(cmd, args) return nil @@ -54,7 +54,7 @@ var rootCmd = &cobra.Command{ } func completeProjects(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - projects, err := tmux.ProjectList() + projects, err := tmux.ListProjects() if err != nil { return nil, cobra.ShellCompDirectiveNoFileComp } diff --git a/cmd/stop.go b/cmd/stop.go index 0a398e4..7077dd0 100644 --- a/cmd/stop.go +++ b/cmd/stop.go @@ -36,8 +36,7 @@ var stopCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { var projects []string if len(args) == 0 { - t := tmux.Tmux{} - projects = t.ListSessions() + projects, _ = tmux.ListActiveProjects() } else { projects = args } diff --git a/tmux/project.go b/tmux/project.go index a7827f7..5b80fa7 100644 --- a/tmux/project.go +++ b/tmux/project.go @@ -66,20 +66,24 @@ func StopProject(name string) { p.RunCommands(p.OnProjectStop) } -func ListProjects() error { - projects, err := ProjectList() +func ListActiveProjects() ([]string, error) { + activeProjects := []string{} + + projects, err := ListProjects() if err != nil { - return err + return activeProjects, err } for _, project := range projects { - fmt.Printf("%s\n", project) + if sessionExists(project) { + activeProjects = append(activeProjects, project) + } } - return nil + return activeProjects, nil } // ProjectList gets a list of -func ProjectList() ([]string, error) { +func ListProjects() ([]string, error) { configDir := getConfigDir() files, err := ioutil.ReadDir(configDir) if err != nil { @@ -112,7 +116,7 @@ func LoadProject(name string) (*Project, error) { err = yaml.Unmarshal(data, project) if len(project.Windows) < 1 { - return project, errors.New("No windows defined") + return project, errors.New("no windows defined") } rootPath := project.GetRoot() @@ -157,7 +161,7 @@ func EditProject(name string) error { _, err := os.Stat(fileName) if err != nil { - return errors.New("Config file does not exist") + return errors.New("config file does not exist") } editorName := os.Getenv("EDITOR") @@ -178,7 +182,7 @@ func (p *Project) Save() error { _, err := os.Stat(fileName) if err == nil { - return errors.New("Config file already exists") + return errors.New("config file already exists") } data, err := yaml.Marshal(p)