@@ -6,6 +6,7 @@ package commands
66
77import (
88 "context"
9+ "encoding/json"
910 "fmt"
1011 "io"
1112 "io/ioutil"
@@ -157,19 +158,46 @@ func BuildFirmwareEnvelope(ctx context.Context, id string, name string, wifiSSID
157158 return nil , err
158159 }
159160
160- // TODO(kasper): Can we generate this in a nicer way?
161- wifiProperties := "{ \" wifi.ssid\" : \" " + wifiSSID + "\" , \" wifi.password\" : \" " + wifiPassword + "\" }"
161+ configMap := map [string ]interface {}{
162+ "id" : id ,
163+ "name" : name ,
164+ }
165+ configJson , err := json .Marshal (configMap )
166+ if err != nil {
167+ return nil , err
168+ }
162169
163- if err := runFirmwareTool (ctx , sdk , envelopePath , "container" , "install" , "-o" , envelope .Name (), "jaguar" , jaguarSnapshot ); err != nil {
170+ configJsonFile , err := os .CreateTemp ("" , "*.json.assets" )
171+ if err != nil {
164172 return nil , err
165173 }
166- if err := setFirmwareProperty (ctx , sdk , envelope , "uuid" , id ); err != nil {
174+ defer configJsonFile .Close ()
175+
176+ if err := os .WriteFile (configJsonFile .Name (), configJson , 0666 ); err != nil {
177+ return nil , err
178+ }
179+
180+ assetsFile , err := os .CreateTemp ("" , "*.assets" )
181+ if err != nil {
182+ return nil , err
183+ }
184+ defer assetsFile .Close ()
185+
186+ if err := runAssetsTool (ctx , sdk , assetsFile .Name (), "create" ); err != nil {
187+ return nil , err
188+ }
189+
190+ if err := runAssetsTool (ctx , sdk , assetsFile .Name (), "add" , "--ubjson" , "config" , configJsonFile .Name ()); err != nil {
167191 return nil , err
168192 }
169- if err := setFirmwareProperty (ctx , sdk , envelope , "id" , id ); err != nil {
193+
194+ // TODO(kasper): Can we generate this in a nicer way?
195+ wifiProperties := "{ \" wifi.ssid\" : \" " + wifiSSID + "\" , \" wifi.password\" : \" " + wifiPassword + "\" }"
196+
197+ if err := runFirmwareTool (ctx , sdk , envelopePath , "container" , "install" , "--assets" , assetsFile .Name (), "-o" , envelope .Name (), "jaguar" , jaguarSnapshot ); err != nil {
170198 return nil , err
171199 }
172- if err := setFirmwareProperty (ctx , sdk , envelope , "name " , name ); err != nil {
200+ if err := setFirmwareProperty (ctx , sdk , envelope , "uuid " , id ); err != nil {
173201 return nil , err
174202 }
175203 if err := setFirmwareProperty (ctx , sdk , envelope , "wifi" , wifiProperties ); err != nil {
0 commit comments