diff --git a/pkg/metadata/provider_short_name.go b/pkg/metadata/provider_short_name.go new file mode 100644 index 0000000000..c8931390c5 --- /dev/null +++ b/pkg/metadata/provider_short_name.go @@ -0,0 +1,5 @@ +package main + +type ProviderShortName interface { + ShortName() string +} diff --git a/pkg/metadata/util.go b/pkg/metadata/util.go new file mode 100644 index 0000000000..7295b3d5f4 --- /dev/null +++ b/pkg/metadata/util.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" +) + +type ProviderUtil interface { + WriteDataToFile(contentTrait string, permission os.FileMode, content string, dest string) error + MakeFolder(folderTrait string, permission os.FileMode, dest string) error +} + +type DefaultProviderUtil struct { + ProviderUtil + ProviderShortName +} + +func (p *DefaultProviderUtil) WriteDataToFile(contentTrait string, permission os.FileMode, content string, dest string) error { + if err := ioutil.WriteFile(dest, []byte(content), permission); err != nil { + return fmt.Errorf("%s: failed to write %s: %s", p.ShortName(), contentTrait, err) + } + return nil +} + +func (p *DefaultProviderUtil) MakeFolder(folderTrait string, permission os.FileMode, dest string) error { + if err := os.Mkdir(dest, permission); err != nil { + return fmt.Errorf("%s: failed to make folder for %s: %s", p.ShortName(), folderTrait, err) + } + return nil +}