11package cmd
22
33import (
4+ "bytes"
45 "fmt"
56
67 "github.com/mubbie/gx-cli/internal/git"
@@ -25,37 +26,42 @@ func runGraph(cmd *cobra.Command, args []string) error {
2526
2627 sp := ui .StartSpinner ("Building branch tree..." )
2728 tree := stack .BuildTree ()
28- sp . Stop ()
29+
2930 if len (tree .Roots ) == 0 && len (tree .Orphans ) == 0 {
31+ sp .Stop ()
3032 fmt .Println ("No branches found." )
3133 return nil
3234 }
3335
34- fmt .Println ()
35- fmt .Println (ui .BoldStyle .Render ("Branch Stack:" ))
36- fmt .Println ()
36+ var buf bytes.Buffer
37+ fmt .Fprintln (& buf )
38+ fmt .Fprintln (& buf , ui .BoldStyle .Render ("Branch Stack:" ))
39+ fmt .Fprintln (& buf )
3740
3841 for i , root := range tree .Roots {
3942 isLast := i == len (tree .Roots )- 1 && len (tree .Orphans ) == 0
40- renderNode ( root , "" , isLast )
43+ renderNodeTo ( & buf , root , "" , isLast )
4144 }
4245
4346 if len (tree .Orphans ) > 0 {
44- fmt .Println ( )
45- fmt .Println ( ui .WarningStyle .Bold (true ).Render ("Orphaned Branches:" ))
47+ fmt .Fprintln ( & buf )
48+ fmt .Fprintln ( & buf , ui .WarningStyle .Bold (true ).Render ("Orphaned Branches:" ))
4649 for i , orphan := range tree .Orphans {
47- renderNode ( orphan , "" , i == len (tree .Orphans )- 1 )
50+ renderNodeTo ( & buf , orphan , "" , i == len (tree .Orphans )- 1 )
4851 }
4952 }
5053
51- fmt .Println ()
52- fmt .Println (ui .DimStyle .Render ("Legend: * current branch + merged (+ahead/-behind) ! orphaned" ))
53- fmt .Println (ui .DimStyle .Render ("Relationships stored in .git/gx/stack.json" ))
54- fmt .Println ()
54+ fmt .Fprintln (& buf )
55+ fmt .Fprintln (& buf , ui .DimStyle .Render ("Legend: * current branch + merged (+ahead/-behind) ! orphaned" ))
56+ fmt .Fprintln (& buf , ui .DimStyle .Render ("Relationships stored in .git/gx/stack.json" ))
57+ fmt .Fprintln (& buf )
58+
59+ sp .Stop ()
60+ fmt .Print (buf .String ())
5561 return nil
5662}
5763
58- func renderNode ( node * stack.BranchNode , prefix string , isLast bool ) {
64+ func renderNodeTo ( buf * bytes. Buffer , node * stack.BranchNode , prefix string , isLast bool ) {
5965 connector := ui .DimStyle .Render ("|-- " )
6066 if isLast {
6167 connector = ui .DimStyle .Render ("`-- " )
@@ -87,13 +93,13 @@ func renderNode(node *stack.BranchNode, prefix string, isLast bool) {
8793 name = ui .BranchStyle .Render (node .Name )
8894 }
8995
90- fmt .Printf ( "%s%s%s%s\n " , prefix , connector , name , indicators )
96+ fmt .Fprintf ( buf , "%s%s%s%s\n " , prefix , connector , name , indicators )
9197
9298 childPrefix := prefix + ui .DimStyle .Render ("|" ) + " "
9399 if isLast {
94100 childPrefix = prefix + " "
95101 }
96102 for i , child := range node .Children {
97- renderNode ( child , childPrefix , i == len (node .Children )- 1 )
103+ renderNodeTo ( buf , child , childPrefix , i == len (node .Children )- 1 )
98104 }
99105}
0 commit comments