38 lines
591 B
Go
38 lines
591 B
Go
package image
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"reflect"
|
|
|
|
"github.com/rayaman/go-qemu/pkg/v1/types"
|
|
)
|
|
|
|
// Loads a saved image structure into memory
|
|
func LoadImage(path string) (Image, error) {
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var h = &holder{}
|
|
|
|
err = json.Unmarshal(data, h)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
data, err = json.Marshal(h.Image)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
t := reflect.New(reflect.TypeOf(types.GetTypes()[h.Format])).Interface()
|
|
err = json.Unmarshal(data, t)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return t, nil
|
|
}
|