From b791b84890427eee00e2521e631c8fb7f16ec0fe Mon Sep 17 00:00:00 2001 From: David Allen Date: Sat, 30 Aug 2025 00:22:58 -0600 Subject: [PATCH 1/2] chore: updated README examples --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 1f5c2d1..8e3630b 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,18 @@ makeshift list # list files store in the template directory with a specified host makeshift list --host http://localhost:5050 --path templates + +# list all available plugins +makeshift list plugins + +# list specific plugin (for plugin info, use 'makeshift plugin info` instead) +makeshift list plugins jinja2 + +# list all available profiles +makeshift list profiles + +# list specific profile information +makeshift list profiles default ``` Then, we can start downloading some files or directories (as archives). @@ -64,6 +76,12 @@ makeshift download -p templates --plugins smd,jinja2 --profile compute # do everything in the above example but extract and remove archive makeshift download -p templates --plugins smd,jinja2 --profile compute -xr + +# download a raw plugin +makeshift download plugin jinja2 + +# download a profile +makeshift download profile default ``` > [!NOTE] From dc8a9cff2026155075f60391a74d081630efca7b Mon Sep 17 00:00:00 2001 From: David Allen Date: Sat, 30 Aug 2025 00:23:53 -0600 Subject: [PATCH 2/2] refactor: minor changes and fixes --- cmd/list.go | 3 +-- internal/format/format.go | 16 ++++++++-------- pkg/service/plugins.go | 2 -- pkg/service/profiles.go | 10 ---------- pkg/service/service.go | 5 ++--- 5 files changed, 11 insertions(+), 25 deletions(-) diff --git a/cmd/list.go b/cmd/list.go index 9f0a2f9..0de2797 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -114,7 +114,6 @@ var listPluginsCmd = &cobra.Command{ Msg("response returned bad status") os.Exit(1) } - fmt.Println(string(body)) err = json.Unmarshal(body, &plugins) if err != nil { log.Error().Err(err). @@ -125,7 +124,7 @@ var listPluginsCmd = &cobra.Command{ for _, pluginName := range args { // make request to /list endpoint res, body, err = c.MakeRequest(client.HTTPEnvelope{ - Path: fmt.Sprintf("/plugins/%s", pluginName), + Path: fmt.Sprintf("/plugins/%s/info", pluginName), Method: http.MethodGet, }) if err != nil { diff --git a/internal/format/format.go b/internal/format/format.go index d38aa3e..b753268 100644 --- a/internal/format/format.go +++ b/internal/format/format.go @@ -11,9 +11,9 @@ import ( type DataFormat string const ( - List DataFormat = "list" - JSON DataFormat = "json" - FORMAT_YAML DataFormat = "yaml" + List DataFormat = "list" + JSON DataFormat = "json" + YAML DataFormat = "yaml" ) func (df DataFormat) String() string { @@ -22,12 +22,12 @@ func (df DataFormat) String() string { func (df *DataFormat) Set(v string) error { switch DataFormat(v) { - case List, JSON, FORMAT_YAML: + case List, JSON, YAML: *df = DataFormat(v) return nil default: return fmt.Errorf("must be one of %v", []DataFormat{ - List, JSON, FORMAT_YAML, + List, JSON, YAML, }) } } @@ -48,7 +48,7 @@ func Marshal(data interface{}, outFormat DataFormat) ([]byte, error) { } else { return bytes, nil } - case FORMAT_YAML: + case YAML: if bytes, err := yaml.Marshal(data); err != nil { return nil, fmt.Errorf("failed to marshal data into YAML: %w", err) } else { @@ -72,7 +72,7 @@ func Unmarshal(data []byte, v interface{}, inFormat DataFormat) error { if err := json.Unmarshal(data, v); err != nil { return fmt.Errorf("failed to unmarshal data into JSON: %w", err) } - case FORMAT_YAML: + case YAML: if err := yaml.Unmarshal(data, v); err != nil { return fmt.Errorf("failed to unmarshal data into YAML: %w", err) } @@ -98,7 +98,7 @@ func DataFormatFromFileExt(path string, defaultFmt DataFormat) DataFormat { return JSON case ".yaml", ".yml", ".YAML", ".YML": // The file is a YAML file - return FORMAT_YAML + return YAML } return defaultFmt } diff --git a/pkg/service/plugins.go b/pkg/service/plugins.go index a8b0b6e..0dd516e 100644 --- a/pkg/service/plugins.go +++ b/pkg/service/plugins.go @@ -2,7 +2,6 @@ package service import ( "encoding/json" - "fmt" "io" "net/http" "os" @@ -35,7 +34,6 @@ func (s *Service) ListPlugins() http.HandlerFunc { http.Error(w, err.Error(), http.StatusInternalServerError) return } - fmt.Printf("%v", plugins) w.Write(body) } diff --git a/pkg/service/profiles.go b/pkg/service/profiles.go index ee7a0d3..edef023 100644 --- a/pkg/service/profiles.go +++ b/pkg/service/profiles.go @@ -64,16 +64,6 @@ func (s *Service) ListProfiles() http.HandlerFunc { } } -// func (s *Service) CreateProfiles() http.HandlerFunc { -// return func(w http.ResponseWriter, r *http.Request) { -// var ( -// path = chi.URLParam(r, "path") -// err error -// ) - -// } -// } - func (s *Service) GetProfile() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var ( diff --git a/pkg/service/service.go b/pkg/service/service.go index 56e4cae..b75bd57 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -184,15 +184,14 @@ func LoadPluginsFromDir(dirpath string) (map[string]makeshift.Plugin, error) { // helper to check for valid extensions var hasValidExt = func(path string) bool { - var validExts = []string{".so", ".dylib", ".dll"} - return slices.Contains(validExts, filepath.Ext(path)) + return slices.Contains([]string{".so", ".dylib", ".dll"}, filepath.Ext(path)) } // walk all files in directory only loading *valid* plugins err = filepath.Walk(dirpath, func(path string, info fs.FileInfo, err error) error { // skip trying to load generator plugin if directory or error // only try loading if file has .so extension - if info.IsDir() || err != nil || hasValidExt(path) { + if info.IsDir() || err != nil || !hasValidExt(path) { return nil }