Skip to content

Commit f8989ad

Browse files
committed
Custom errs for coretmpl.go
1 parent aadce06 commit f8989ad

File tree

3 files changed

+54
-32
lines changed

3 files changed

+54
-32
lines changed

pkg/core/image/coretmpl.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -55,42 +55,42 @@ type coreTemplateOS struct {
5555
modules map[string]string
5656
}
5757

58-
func newCoreTemplateOS(name string) (*coreTemplateOS, error) {
58+
func newCoreTemplateOS(osName string) (*coreTemplateOS, error) {
5959
// Check if meta.yaml of the OS exists
6060
var metaIndex metaCoreTemplateIndex
6161
metaIndexFile, err := coreTemplatesFS.ReadFile("core-templates/meta.yaml")
6262
if err != nil {
63-
return nil, fmt.Errorf("error reading core templates index metadata: %s", err)
63+
return nil, newErrCoreTemplateReadingIndexMeta(err.Error())
6464
}
6565
yaml.Unmarshal(metaIndexFile, &metaIndex)
6666
if metaIndex.MetaType != "core_index" {
67-
return nil, fmt.Errorf("error reading core templates index metadata: invalid type")
67+
return nil, newErrCoreTemplateReadingIndexMeta("invalid type")
6868
}
6969

7070
// Check if the OS exists in the index
7171
for index, os := range metaIndex.OsImages {
72-
if os == name {
72+
if os == osName {
7373
break
7474
}
7575
if index == len(metaIndex.OsImages)-1 {
76-
return nil, fmt.Errorf("OS %s not found in core templates", name)
76+
return nil, newErrCoreTemplateOSNotFound(osName)
7777
}
7878
}
7979

8080
// Check if the OS metadata exists
8181
var metaOS metaCoreTemplateOS
82-
metaOSFile, err := coreTemplatesFS.ReadFile(fmt.Sprintf("core-templates/os/%s/meta.yaml", name))
82+
metaOSFile, err := coreTemplatesFS.ReadFile(fmt.Sprintf("core-templates/os/%s/meta.yaml", osName))
8383
if err != nil {
84-
return nil, fmt.Errorf("error reading core templates metadata: %s", err)
84+
return nil, newErrCoreTemplateReadingCoreMeta(osName, err.Error())
8585
}
8686
yaml.Unmarshal(metaOSFile, &metaOS)
8787
if metaOS.MetaType != "core_os" {
88-
return nil, fmt.Errorf("error reading core templates metadata: invalid type")
88+
return nil, newErrCoreTemplateReadingCoreMeta(osName, "invalid type: "+metaOS.MetaType)
8989
}
9090

9191
// Create the coreTemplateOS struct
9292
commonModulesBaseDir := "core-templates/common/modules/"
93-
baseDir := "core-templates/os/" + name + "/"
93+
baseDir := "core-templates/os/" + osName + "/"
9494
coreOS := coreTemplateOS{
9595
name: metaOS.Name,
9696
}

pkg/core/image/errors.go

+29-23
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,38 @@
11
package image
22

3-
import (
4-
"fmt"
5-
)
3+
import "desktopus/pkg/core/utils"
64

7-
// BaseError is the base struct for all custom errors
8-
type BaseError struct {
9-
Message string
10-
Params []interface{}
5+
// Specific error types
6+
type ErrCoreTemplateReadingIndexMeta struct {
7+
utils.DesktopusError
118
}
129

13-
// Error implements the error interface for BaseError
14-
func (e *BaseError) Error() string {
15-
return fmt.Sprintf(e.Message, e.Params...)
10+
type ErrCoreTemplateReadingCoreMeta struct {
11+
utils.DesktopusError
1612
}
1713

18-
// // Specific error types
19-
// type ErrBuildManifestNotSpecified struct {
20-
// BaseError
21-
// }
14+
type ErrCoreTemplateOSNotFound struct {
15+
utils.DesktopusError
16+
}
2217

23-
// // Functions to create specific errors with parameters
18+
// Functions to create specific errors with parameters
19+
func newErrCoreTemplateReadingIndexMeta(errMessage string) error {
20+
return &utils.DesktopusError{
21+
Message: "error reading core template index metadata: %s",
22+
Params: []interface{}{errMessage},
23+
}
24+
}
2425

25-
// func NewErrBuildManifestNotSpecified() error {
26-
// return &ErrBuildManifestNotSpecified{
27-
// BaseError: BaseError{
28-
// Message: "manifest not specified",
29-
// Params: []interface{}{},
30-
// },
31-
// }
32-
// }
26+
func newErrCoreTemplateReadingCoreMeta(os string, errMessage string) error {
27+
return &utils.DesktopusError{
28+
Message: "error reading OS %s metadata: %s",
29+
Params: []interface{}{os, errMessage},
30+
}
31+
}
32+
33+
func newErrCoreTemplateOSNotFound(name string) error {
34+
return &utils.DesktopusError{
35+
Message: "error: OS %s not found in core templates",
36+
Params: []interface{}{name},
37+
}
38+
}

pkg/core/utils/error.go

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package utils
2+
3+
import (
4+
"fmt"
5+
)
6+
7+
// BaseError is the base struct for all custom errors
8+
type DesktopusError struct {
9+
Message string
10+
Params []interface{}
11+
}
12+
13+
// Error implements the error interface for BaseError
14+
func (e *DesktopusError) Error() string {
15+
return fmt.Sprintf(e.Message, e.Params...)
16+
}

0 commit comments

Comments
 (0)