@@ -28,37 +28,51 @@ type AppConfig struct {
2828 Functions map [string ]FunctionConfig
2929}
3030
31- //TODO Better error handling for testing
32- func tplCommand (cmd * cobra.Command , args []string ) {
33- fc := initFunctionConfig (cmd , args )
34- output := fc .handleFunc (cmd )
31+ var fc FunctionConfig
32+
33+ func tplCommand (cmd * cobra.Command , args []string ) error {
34+ err := initFunctionConfig (cmd , args )
35+ if err != nil {
36+ return err
37+ }
38+
39+ output , err := fc .handleFunc (cmd )
40+ if err != nil {
41+ return err
42+ }
43+
3544 fmt .Fprintf (cmd .OutOrStdout (), output )
45+ return nil
3646}
3747
38- func initFunctionConfig (cmd * cobra.Command , args []string ) FunctionConfig {
39- fc := FunctionConfig {}
48+ func initFunctionConfig (cmd * cobra.Command , args []string ) error {
4049 config := viper .AllSettings ()
4150
4251 if len (config ) == 0 {
43- util .HandleError (cmd , util .NO_FUNC_NAME_ERR .Err (), util .NO_CONFIG_FILE_ERR )
52+ return util .HandleError (cmd , util .NO_FUNC_NAME_ERR .Err (), util .NO_CONFIG_FILE_ERR )
4453 }
4554
4655 if len (args ) == 0 {
47- util .HandleError (cmd , util .NO_FUNC_NAME_ERR .Err (), util .NO_FUNC_NAME_ERR )
56+ return util .HandleError (cmd , util .NO_FUNC_NAME_ERR .Err (), util .NO_FUNC_NAME_ERR )
4857 }
4958
5059 var appConfig AppConfig
5160 err := mapstructure .Decode (config , & appConfig .Functions )
5261 if err != nil {
53- util .HandleError (cmd , err , util .INVALID_CONFIG_ERR )
62+ return util .HandleError (cmd , err , util .INVALID_CONFIG_ERR )
5463 }
5564
56- fc , ok := appConfig .Functions [args [0 ]]
65+ funcConfig , ok := appConfig .Functions [args [0 ]]
5766 if ! ok {
58- util .HandleError (cmd , util .NO_FUNC_FOUND_ERR .Err (), util .NO_FUNC_FOUND_ERR )
67+ return util .HandleError (cmd , util .NO_FUNC_FOUND_ERR .Err (), util .NO_FUNC_FOUND_ERR )
68+ }
69+
70+ if funcConfig .Url == "" {
71+ return util .HandleError (cmd , util .NO_URL_ERR .Err (), util .NO_URL_ERR )
5972 }
6073
61- return fc
74+ fc = funcConfig
75+ return nil
6276}
6377
6478func (fc * FunctionConfig ) makeHttpCall (jsonData []byte , cmd * cobra.Command ) ([]byte , error ) {
@@ -97,28 +111,28 @@ func (fc *FunctionConfig) makeHttpCall(jsonData []byte, cmd *cobra.Command) ([]b
97111 return body , nil
98112}
99113
100- func (fc * FunctionConfig ) handleFunc (cmd * cobra.Command ) string {
114+ func (fc * FunctionConfig ) handleFunc (cmd * cobra.Command ) ( string , error ) {
101115 jsonData , err := fc .getJSONData ()
102116 if err != nil {
103- util .HandleError (cmd , err , util .FAILED_TO_GET_DATA )
117+ return "" , util .HandleError (cmd , err , util .FAILED_TO_GET_DATA )
104118 }
105119
106120 body , err := fc .makeHttpCall (jsonData , cmd )
107121 if err != nil {
108- util .HandleError (cmd , err , util .FAILED_TO_MAKE_HTTP_CALL )
122+ return "" , util .HandleError (cmd , err , util .FAILED_TO_MAKE_HTTP_CALL )
109123 }
110124
111125 responseData , err := util .ParseJSONResponse (body )
112126 if err != nil {
113- util .HandleError (cmd , err , util .FAILED_TO_PARSE_JSON )
127+ return "" , util .HandleError (cmd , err , util .FAILED_TO_PARSE_JSON )
114128 }
115129
116130 output , err := util .GetOutputField (responseData , fc .Output )
117131 if err != nil {
118- util .HandleError (cmd , err , util .FAILED_TO_PARSE_OUTPUT_FIELD )
132+ return "" , util .HandleError (cmd , err , util .FAILED_TO_PARSE_OUTPUT_FIELD )
119133 }
120134
121- return output
135+ return output , nil
122136}
123137
124138func (fc * FunctionConfig ) getJSONData () ([]byte , error ) {
0 commit comments