diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e70d03ff..a29e1563 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -376,6 +376,7 @@ func main() { L.SetGlobal("ListRuntimeFiles", luar.New(L, PluginListRuntimeFiles)) L.SetGlobal("AddRuntimeFile", luar.New(L, PluginAddRuntimeFile)) L.SetGlobal("AddRuntimeFilesFromDirectory", luar.New(L, PluginAddRuntimeFilesFromDirectory)) + L.SetGlobal("AddRuntimeFileFromMemory", luar.New(L, PluginAddRuntimeFileFromMemory)) jobs = make(chan JobFunction, 100) events = make(chan tcell.Event, 100) diff --git a/cmd/micro/rtfiles.go b/cmd/micro/rtfiles.go index 602d4e84..a72b6ee3 100644 --- a/cmd/micro/rtfiles.go +++ b/cmd/micro/rtfiles.go @@ -37,6 +37,19 @@ type namedFile struct { name string } +// a file with the data stored in memory +type memoryFile struct { + name string + data []byte +} + +func (mf memoryFile) Name() string { + return mf.name +} +func (mf memoryFile) Data() ([]byte, error) { + return mf.data, nil +} + func (rf realFile) Name() string { fn := filepath.Base(string(rf)) return fn[:len(fn)-len(filepath.Ext(fn))] @@ -187,3 +200,8 @@ func PluginAddRuntimeFilesFromDirectory(plugin, filetype, directory, pattern str AddRuntimeFilesFromAssets(filetype, fullpath, pattern) } } + +// PluginAddRuntimeFileFromMemory adds a file to the runtime files for a plugin from a given string +func PluginAddRuntimeFileFromMemory(plugin, filetype, filename, data string) { + AddRuntimeFile(filetype, memoryFile{filename, []byte(data)}) +}