feat: added kwargs and flags to pass to plugins

This commit is contained in:
David Allen 2025-09-01 18:59:12 -06:00
parent dc6a141ca1
commit 42c8fd7c1a
Signed by: towk
GPG key ID: 0430CDBE22619155
6 changed files with 95 additions and 7 deletions

View file

@ -11,18 +11,23 @@ import (
"strings"
"git.towk2.me/towk/makeshift/internal/archive"
"git.towk2.me/towk/makeshift/internal/kwargs"
makeshift "git.towk2.me/towk/makeshift/pkg"
"git.towk2.me/towk/makeshift/pkg/storage"
"github.com/go-chi/chi/v5"
"github.com/rs/zerolog/log"
)
func (s *Service) Download() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var (
path = s.PathForData() + strings.TrimPrefix(r.URL.Path, "/download")
pluginNames = strings.Split(r.URL.Query().Get("plugins"), ",")
profileIDs = strings.Split(r.URL.Query().Get("profiles"), ",")
path = s.PathForData() + strings.TrimPrefix(r.URL.Path, "/download")
pluginKWArgs = chi.URLParam(r, "kwargs")
pluginArgs = strings.Split(r.URL.Query().Get("args"), ",")
pluginNames = strings.Split(r.URL.Query().Get("plugins"), ",")
profileIDs = strings.Split(r.URL.Query().Get("profiles"), ",")
kw *kwargs.KWArgs
fileInfo os.FileInfo
out *os.File
store *storage.MemoryStorage = new(storage.MemoryStorage)
@ -32,8 +37,12 @@ func (s *Service) Download() http.HandlerFunc {
err error
)
// parse the KWArgs from request
kw.Set(pluginKWArgs)
// initialize storage
store.Init()
store.SetKWArgs(kw)
log.Debug().
Str("path", path).
@ -78,7 +87,7 @@ func (s *Service) Download() http.HandlerFunc {
log.Debug().Strs("files", filenamesToArchive).Send()
// prepare plugins
hooks, errs = s.loadPlugins(pluginNames, store, nil, errs)
hooks, errs = s.loadPlugins(pluginNames, store, pluginArgs, errs)
if len(errs) > 0 {
log.Error().Errs("errs", errs).Msg("errors occurred loading plugins")
errs = []error{}

View file

@ -1,5 +1,7 @@
package storage
import "git.towk2.me/towk/makeshift/internal/kwargs"
type DiskStorage struct{}
func (ds DiskStorage) Init() error {
@ -10,8 +12,17 @@ func (ds DiskStorage) Cleanup() error {
return nil
}
func (ds DiskStorage) Get(k string) error {
return nil
func (ds *DiskStorage) SetKWArgs(kw *kwargs.KWArgs) error {
return ds.Set(kwargs.RESERVED_KEY, kw)
}
func (ds *DiskStorage) GetKWArgs() (*kwargs.KWArgs, error) {
kw, err := ds.Get(kwargs.RESERVED_KEY)
return kw.(*kwargs.KWArgs), err
}
func (ds DiskStorage) Get(k string) (any, error) {
return nil, nil
}
func (ds DiskStorage) Set(k string, v any) error {

View file

@ -1,6 +1,10 @@
package storage
import "fmt"
import (
"fmt"
"git.towk2.me/towk/makeshift/internal/kwargs"
)
type MemoryStorage struct {
Data map[string]any `json:"data"`
@ -15,6 +19,15 @@ func (ms *MemoryStorage) Cleanup() error {
return nil
}
func (ms *MemoryStorage) SetKWArgs(kw *kwargs.KWArgs) error {
return ms.Set(kwargs.RESERVED_KEY, kw)
}
func (ms *MemoryStorage) GetKWArgs() (*kwargs.KWArgs, error) {
kw, err := ms.Get(kwargs.RESERVED_KEY)
return kw.(*kwargs.KWArgs), err
}
func (ms *MemoryStorage) Get(k string) (any, error) {
v, ok := ms.Data[k]
if ok {
@ -24,6 +37,9 @@ func (ms *MemoryStorage) Get(k string) (any, error) {
}
func (ms *MemoryStorage) Set(k string, v any) error {
if k == "kwargs" {
return fmt.Errorf("cannot set reserved key '%s' (use SetKWArgs() instead)", k)
}
ms.Data[k] = v
return nil
}

View file

@ -1,9 +1,14 @@
package storage
import "git.towk2.me/towk/makeshift/internal/kwargs"
type KVStore interface {
Init() error
Cleanup() error
SetKWArgs(kwargs *kwargs.KWArgs) error
GetKWArgs() (*kwargs.KWArgs, error)
Get(k string) (any, error)
Set(k string, v any) error
GetData() any