@@ -63,7 +63,7 @@ func free_string(str *C.char) {
6363
6464//export announce_system
6565func announce_system (clientParams , distroTarget * C.char ) * C.char {
66- loadConfig (C .GoString (clientParams ))
66+ _ = loadConfig (C .GoString (clientParams ))
6767
6868 login , password , err := connect .AnnounceSystem (C .GoString (distroTarget ), "" , false )
6969 if err != nil {
@@ -80,7 +80,7 @@ func announce_system(clientParams, distroTarget *C.char) *C.char {
8080
8181//export update_system
8282func update_system (clientParams , distroTarget * C.char ) * C.char {
83- loadConfig (C .GoString (clientParams ))
83+ _ = loadConfig (C .GoString (clientParams ))
8484
8585 if err := connect .UpdateSystem (C .GoString (distroTarget ), "" , false , false ); err != nil {
8686 return C .CString (errorToJSON (err ))
@@ -91,7 +91,7 @@ func update_system(clientParams, distroTarget *C.char) *C.char {
9191
9292//export deactivate_system
9393func deactivate_system (clientParams * C.char ) * C.char {
94- loadConfig (C .GoString (clientParams ))
94+ _ = loadConfig (C .GoString (clientParams ))
9595
9696 err := connect .DeregisterSystem ()
9797 if err != nil {
@@ -137,7 +137,7 @@ func curlrc_credentials() *C.char {
137137
138138//export show_product
139139func show_product (clientParams , product * C.char ) * C.char {
140- loadConfig (C .GoString (clientParams ))
140+ _ = loadConfig (C .GoString (clientParams ))
141141
142142 var productQuery connect.Product
143143 err := json .Unmarshal ([]byte (C .GoString (product )), & productQuery )
@@ -157,7 +157,7 @@ func show_product(clientParams, product *C.char) *C.char {
157157
158158//export activate_product
159159func activate_product (clientParams , product , email * C.char ) * C.char {
160- loadConfig (C .GoString (clientParams ))
160+ _ = loadConfig (C .GoString (clientParams ))
161161
162162 var p connect.Product
163163 err := json .Unmarshal ([]byte (C .GoString (product )), & p )
@@ -177,7 +177,7 @@ func activate_product(clientParams, product, email *C.char) *C.char {
177177
178178//export activated_products
179179func activated_products (clientParams * C.char ) * C.char {
180- loadConfig (C .GoString (clientParams ))
180+ _ = loadConfig (C .GoString (clientParams ))
181181
182182 products , err := connect .ActivatedProducts ()
183183 if err != nil {
@@ -192,7 +192,7 @@ func activated_products(clientParams *C.char) *C.char {
192192
193193//export deactivate_product
194194func deactivate_product (clientParams , product * C.char ) * C.char {
195- loadConfig (C .GoString (clientParams ))
195+ _ = loadConfig (C .GoString (clientParams ))
196196
197197 var p connect.Product
198198 err := json .Unmarshal ([]byte (C .GoString (product )), & p )
@@ -212,10 +212,8 @@ func deactivate_product(clientParams, product *C.char) *C.char {
212212
213213//export get_config
214214func get_config (path * C.char ) * C.char {
215- c := connect .NewConfig ()
216- c .Path = C .GoString (path )
217- c .Load ()
218- jsn , err := json .Marshal (c )
215+ opts , _ := connect .ReadFromConfiguration (C .GoString (path ))
216+ jsn , err := json .Marshal (opts )
219217 if err != nil {
220218 return C .CString (errorToJSON (err ))
221219 }
@@ -224,15 +222,16 @@ func get_config(path *C.char) *C.char {
224222
225223//export write_config
226224func write_config (clientParams * C.char ) * C.char {
227- loadConfig (C .GoString (clientParams ))
228- err := connect .CFG .Save ()
225+ opts := loadConfig (C .GoString (clientParams ))
226+
227+ err := opts .SaveAsConfiguration ()
229228 if err != nil {
230229 return C .CString (errorToJSON (err ))
231230 }
232231 return C .CString ("{}" )
233232}
234233
235- func loadConfig (clientParams string ) {
234+ func loadConfig (clientParams string ) * connect. Options {
236235 // unmarshal extra config fields only for local use
237236 var extConfig struct {
238237 Debug string `json:"debug"`
@@ -242,8 +241,16 @@ func loadConfig(clientParams string) {
242241 if v , _ := strconv .ParseBool (extConfig .Debug ); v {
243242 util .Debug .SetOutput (callbackWriter {llDebug })
244243 }
245- connect .CFG .Load ()
246- connect .CFG .MergeJSON (clientParams )
244+
245+ // Read the options from the default configuration path and merge the
246+ // provided clientParams into as well.
247+ opts , _ := connect .ReadFromConfiguration (connect .DefaultConfigPath )
248+ _ = json .Unmarshal ([]byte (clientParams ), opts )
249+
250+ // TODO(mssola): to be removed by the end of RR4.
251+ connect .CFG = opts
252+
253+ return opts
247254}
248255
249256func certToPEM (cert * x509.Certificate ) string {
@@ -340,7 +347,10 @@ func errorToJSON(err error) string {
340347
341348//export getstatus
342349func getstatus (format * C.char ) * C.char {
343- connect .CFG .Load ()
350+ opts , _ := connect .ReadFromConfiguration (connect .DefaultConfigPath )
351+ // TODO(mssola): to be removed by the end of RR4.
352+ connect .CFG = opts
353+
344354 gFormat := C .GoString (format )
345355 output , err := connect .GetProductStatuses (gFormat )
346356 if err != nil {
@@ -369,7 +379,7 @@ func reload_certificates() *C.char {
369379
370380//export list_installer_updates
371381func list_installer_updates (clientParams , product * C.char ) * C.char {
372- loadConfig (C .GoString (clientParams ))
382+ _ = loadConfig (C .GoString (clientParams ))
373383
374384 var productQuery connect.Product
375385 err := json .Unmarshal ([]byte (C .GoString (product )), & productQuery )
@@ -389,7 +399,7 @@ func list_installer_updates(clientParams, product *C.char) *C.char {
389399
390400//export system_migrations
391401func system_migrations (clientParams , products * C.char ) * C.char {
392- loadConfig (C .GoString (clientParams ))
402+ _ = loadConfig (C .GoString (clientParams ))
393403
394404 installed := make ([]connect.Product , 0 )
395405 err := json .Unmarshal ([]byte (C .GoString (products )), & installed )
@@ -409,7 +419,7 @@ func system_migrations(clientParams, products *C.char) *C.char {
409419
410420//export offline_system_migrations
411421func offline_system_migrations (clientParams , products , targetBaseProduct * C.char ) * C.char {
412- loadConfig (C .GoString (clientParams ))
422+ _ = loadConfig (C .GoString (clientParams ))
413423
414424 installed := make ([]connect.Product , 0 )
415425 err := json .Unmarshal ([]byte (C .GoString (products )), & installed )
@@ -433,7 +443,7 @@ func offline_system_migrations(clientParams, products, targetBaseProduct *C.char
433443
434444//export upgrade_product
435445func upgrade_product (clientParams , product * C.char ) * C.char {
436- loadConfig (C .GoString (clientParams ))
446+ _ = loadConfig (C .GoString (clientParams ))
437447
438448 var prod connect.Product
439449 err := json .Unmarshal ([]byte (C .GoString (product )), & prod )
@@ -453,7 +463,7 @@ func upgrade_product(clientParams, product *C.char) *C.char {
453463
454464//export synchronize
455465func synchronize (clientParams , products * C.char ) * C.char {
456- loadConfig (C .GoString (clientParams ))
466+ _ = loadConfig (C .GoString (clientParams ))
457467
458468 prods := make ([]connect.Product , 0 )
459469 err := json .Unmarshal ([]byte (C .GoString (products )), & prods )
@@ -473,7 +483,7 @@ func synchronize(clientParams, products *C.char) *C.char {
473483
474484//export system_activations
475485func system_activations (clientParams * C.char ) * C.char {
476- loadConfig (C .GoString (clientParams ))
486+ _ = loadConfig (C .GoString (clientParams ))
477487
478488 // converting from map to list as expected by Ruby clients
479489 actList := make ([]connect.Activation , 0 )
@@ -493,7 +503,7 @@ func system_activations(clientParams *C.char) *C.char {
493503
494504//export search_package
495505func search_package (clientParams , product , query * C.char ) * C.char {
496- loadConfig (C .GoString (clientParams ))
506+ _ = loadConfig (C .GoString (clientParams ))
497507
498508 var p connect.Product
499509 err := json .Unmarshal ([]byte (C .GoString (product )), & p )
0 commit comments