diff options
Diffstat (limited to 'internal/config/cspgenerator.go')
-rw-r--r-- | internal/config/cspgenerator.go | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/internal/config/cspgenerator.go b/internal/config/cspgenerator.go index 5ad3ef0..40eca01 100644 --- a/internal/config/cspgenerator.go +++ b/internal/config/cspgenerator.go @@ -9,13 +9,15 @@ import ( "github.com/crewjam/csp" "github.com/fatih/structtag" + "github.com/pkg/errors" ) func GenerateCSP() error { t := reflect.TypeFor[csp.Header]() file, err := os.OpenFile("./csp.go", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0) if err != nil { - return err + + return errors.Wrap(err, "could not write to output") } defer file.Close() @@ -29,46 +31,43 @@ import ( `) if err != nil { - return err + + return errors.Wrap(err, "could not write to output") } _, err = fmt.Fprintf(file, "type CSP struct {\n") if err != nil { - return err + return errors.Wrap(err, "could not write to output") } for i := 0; i < t.NumField(); i++ { field := t.Field(i) var t reflect.Type - if field.Type.Kind() == reflect.Slice { - t = field.Type - } else { - t = field.Type - } + t = field.Type tags, err := structtag.Parse(string(field.Tag)) if err != nil { - return err + return errors.Wrap(err, "could not write to output") } cspTag, err := tags.Get("csp") if err != nil { - return err + return errors.Wrap(err, "could not get csp tag") } err = tags.Set(&structtag.Tag{ Key: "toml", Name: cspTag.Name, }) if err != nil { - return err + return errors.Wrap(err, "could not set toml tag") } _, err = fmt.Fprintf(file, "\t%-23s %-28s `%s`\n", field.Name, t, tags.String()) if err != nil { - return err + return errors.Wrap(err, "could not write to output") } } _, err = fmt.Fprintln(file, "}") if err != nil { - return err + return errors.Wrap(err, "could not write to output") } _, err = fmt.Fprintln(file, ` @@ -76,7 +75,8 @@ func (c *CSP) String() string { return csp.Header(*c).String() }`) if err != nil { - return err + return errors.Wrap(err, "could not write to output") } + return nil } |