Compare commits

..

2 commits

Author SHA1 Message Date
dc8a9cff20
refactor: minor changes and fixes 2025-08-30 00:23:53 -06:00
b791b84890
chore: updated README examples 2025-08-30 00:22:58 -06:00
6 changed files with 29 additions and 25 deletions

View file

@ -44,6 +44,18 @@ makeshift list
# list files store in the template directory with a specified host # list files store in the template directory with a specified host
makeshift list --host http://localhost:5050 --path templates 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). 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 # do everything in the above example but extract and remove archive
makeshift download -p templates --plugins smd,jinja2 --profile compute -xr 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] > [!NOTE]

View file

@ -114,7 +114,6 @@ var listPluginsCmd = &cobra.Command{
Msg("response returned bad status") Msg("response returned bad status")
os.Exit(1) os.Exit(1)
} }
fmt.Println(string(body))
err = json.Unmarshal(body, &plugins) err = json.Unmarshal(body, &plugins)
if err != nil { if err != nil {
log.Error().Err(err). log.Error().Err(err).
@ -125,7 +124,7 @@ var listPluginsCmd = &cobra.Command{
for _, pluginName := range args { for _, pluginName := range args {
// make request to /list endpoint // make request to /list endpoint
res, body, err = c.MakeRequest(client.HTTPEnvelope{ res, body, err = c.MakeRequest(client.HTTPEnvelope{
Path: fmt.Sprintf("/plugins/%s", pluginName), Path: fmt.Sprintf("/plugins/%s/info", pluginName),
Method: http.MethodGet, Method: http.MethodGet,
}) })
if err != nil { if err != nil {

View file

@ -13,7 +13,7 @@ type DataFormat string
const ( const (
List DataFormat = "list" List DataFormat = "list"
JSON DataFormat = "json" JSON DataFormat = "json"
FORMAT_YAML DataFormat = "yaml" YAML DataFormat = "yaml"
) )
func (df DataFormat) String() string { func (df DataFormat) String() string {
@ -22,12 +22,12 @@ func (df DataFormat) String() string {
func (df *DataFormat) Set(v string) error { func (df *DataFormat) Set(v string) error {
switch DataFormat(v) { switch DataFormat(v) {
case List, JSON, FORMAT_YAML: case List, JSON, YAML:
*df = DataFormat(v) *df = DataFormat(v)
return nil return nil
default: default:
return fmt.Errorf("must be one of %v", []DataFormat{ 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 { } else {
return bytes, nil return bytes, nil
} }
case FORMAT_YAML: case YAML:
if bytes, err := yaml.Marshal(data); err != nil { if bytes, err := yaml.Marshal(data); err != nil {
return nil, fmt.Errorf("failed to marshal data into YAML: %w", err) return nil, fmt.Errorf("failed to marshal data into YAML: %w", err)
} else { } else {
@ -72,7 +72,7 @@ func Unmarshal(data []byte, v interface{}, inFormat DataFormat) error {
if err := json.Unmarshal(data, v); err != nil { if err := json.Unmarshal(data, v); err != nil {
return fmt.Errorf("failed to unmarshal data into JSON: %w", err) return fmt.Errorf("failed to unmarshal data into JSON: %w", err)
} }
case FORMAT_YAML: case YAML:
if err := yaml.Unmarshal(data, v); err != nil { if err := yaml.Unmarshal(data, v); err != nil {
return fmt.Errorf("failed to unmarshal data into YAML: %w", err) return fmt.Errorf("failed to unmarshal data into YAML: %w", err)
} }
@ -98,7 +98,7 @@ func DataFormatFromFileExt(path string, defaultFmt DataFormat) DataFormat {
return JSON return JSON
case ".yaml", ".yml", ".YAML", ".YML": case ".yaml", ".yml", ".YAML", ".YML":
// The file is a YAML file // The file is a YAML file
return FORMAT_YAML return YAML
} }
return defaultFmt return defaultFmt
} }

View file

@ -2,7 +2,6 @@ package service
import ( import (
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"net/http" "net/http"
"os" "os"
@ -35,7 +34,6 @@ func (s *Service) ListPlugins() http.HandlerFunc {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
fmt.Printf("%v", plugins)
w.Write(body) w.Write(body)
} }

View file

@ -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 { func (s *Service) GetProfile() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
var ( var (

View file

@ -184,15 +184,14 @@ func LoadPluginsFromDir(dirpath string) (map[string]makeshift.Plugin, error) {
// helper to check for valid extensions // helper to check for valid extensions
var hasValidExt = func(path string) bool { var hasValidExt = func(path string) bool {
var validExts = []string{".so", ".dylib", ".dll"} return slices.Contains([]string{".so", ".dylib", ".dll"}, filepath.Ext(path))
return slices.Contains(validExts, filepath.Ext(path))
} }
// walk all files in directory only loading *valid* plugins // walk all files in directory only loading *valid* plugins
err = filepath.Walk(dirpath, func(path string, info fs.FileInfo, err error) error { err = filepath.Walk(dirpath, func(path string, info fs.FileInfo, err error) error {
// skip trying to load generator plugin if directory or error // skip trying to load generator plugin if directory or error
// only try loading if file has .so extension // only try loading if file has .so extension
if info.IsDir() || err != nil || hasValidExt(path) { if info.IsDir() || err != nil || !hasValidExt(path) {
return nil return nil
} }