1- package cmd
1+ package ability
22
33import (
44 "flag"
55 "fmt"
6+ "github.com/digitalghost-dev/poke-cli/cmd/utils"
67 "github.com/digitalghost-dev/poke-cli/connections"
78 "github.com/digitalghost-dev/poke-cli/flags"
89 "github.com/digitalghost-dev/poke-cli/styling"
@@ -12,7 +13,9 @@ import (
1213 "strings"
1314)
1415
15- func AbilityCommand () {
16+ func AbilityCommand () string {
17+ var output strings.Builder
18+
1619 flag .Usage = func () {
1720 helpMessage := styling .HelpBorder .Render (
1821 "Get details about a specific ability.\n \n " ,
@@ -24,7 +27,7 @@ func AbilityCommand() {
2427 fmt .Sprintf ("\n \t %-30s %s" , "-p, --pokemon" , "Prints Pokémon that learn this ability." ),
2528 fmt .Sprintf ("\n \t %-30s %s" , "-h, --help" , "Prints the help menu." ),
2629 )
27- fmt . Println (helpMessage )
30+ output . WriteString (helpMessage )
2831 }
2932
3033 abilityFlags , pokemonFlag , shortPokemonFlag := flags .SetupAbilityFlagSet ()
@@ -35,33 +38,33 @@ func AbilityCommand() {
3538
3639 if len (os .Args ) == 3 && (os .Args [2 ] == "-h" || os .Args [2 ] == "--help" ) {
3740 flag .Usage ()
38- return
41+ return output . String ()
3942 }
4043
41- if err := ValidateAbilityArgs (args ); err != nil {
42- fmt .Println (err .Error ())
43- if os .Getenv ("GO_TESTING" ) != "1" {
44- os .Exit (1 )
45- }
44+ if err := utils .ValidateAbilityArgs (args ); err != nil {
45+ output .WriteString (err .Error ())
46+ return output .String ()
4647 }
4748
4849 endpoint := strings .ToLower (args [1 ])
4950 abilityName := strings .ToLower (args [2 ])
5051
5152 if err := abilityFlags .Parse (args [3 :]); err != nil {
52- fmt .Printf ("error parsing flags: %v\n " , err )
53+ output . WriteString ( fmt .Sprintf ("error parsing flags: %v\n " , err ) )
5354 abilityFlags .Usage ()
5455 if os .Getenv ("GO_TESTING" ) != "1" {
5556 os .Exit (1 )
5657 }
58+ return output .String ()
5759 }
5860
5961 abilitiesStruct , abilityName , err := connections .AbilityApiCall (endpoint , abilityName , connections .APIURL )
6062 if err != nil {
61- fmt .Println (err )
6263 if os .Getenv ("GO_TESTING" ) != "1" {
64+ fmt .Fprintln (os .Stderr , err )
6365 os .Exit (1 )
6466 }
67+ return err .Error ()
6568 }
6669
6770 // Extract English short_effect
@@ -83,29 +86,33 @@ func AbilityCommand() {
8386 }
8487
8588 capitalizedAbility := cases .Title (language .English ).String (strings .ReplaceAll (abilityName , "-" , " " ))
86- fmt . Println (styling .StyleBold .Render (capitalizedAbility ))
89+ output . WriteString (styling .StyleBold .Render (capitalizedAbility ) + " \n " )
8790
8891 // API is missing some data for the short_effect for abilities from Generation 9.
8992 // If short_effect is empty, fallback to the move's flavor_text_entry.
9093 if englishShortEffect == "" {
91- fmt . Println ("Effect:" , englishFlavorEntry )
94+ output . WriteString ("Effect: " + englishFlavorEntry + " \n " )
9295 } else {
93- fmt . Println ("Effect:" , englishShortEffect )
96+ output . WriteString ("Effect: " + englishShortEffect + " \n " )
9497 }
9598
9699 // Print the generation where the move was first introduced.
97100 generationParts := strings .Split (abilitiesStruct .Generation .Name , "-" )
98101 if len (generationParts ) > 1 {
99102 generationUpper := strings .ToUpper (generationParts [1 ])
100- fmt . Println ("Generation:" , generationUpper )
103+ output . WriteString ("Generation: " + generationUpper + " \n " )
101104 } else {
102- fmt . Println ("Generation: Unknown" )
105+ output . WriteString ("Generation: Unknown\n " )
103106 }
104107
105108 if * pokemonFlag || * shortPokemonFlag {
106- if err := flags .PokemonAbilitiesFlag (endpoint , abilityName ); err != nil {
107- fmt .Printf ("error parsing flags: %v\n " , err )
108- os .Exit (1 )
109+ if err := flags .PokemonAbilitiesFlag (& output , endpoint , abilityName ); err != nil {
110+ output .WriteString (fmt .Sprintf ("error parsing flags: %v\n " , err ))
111+ if os .Getenv ("GO_TESTING" ) != "1" {
112+ os .Exit (1 )
113+ }
109114 }
110115 }
116+
117+ return output .String ()
111118}
0 commit comments