Skip to content

Commit

Permalink
Vendored go-configmap library and made it internal
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Apr 22, 2024
1 parent 4b02820 commit c92db6a
Show file tree
Hide file tree
Showing 16 changed files with 248 additions and 154 deletions.
13 changes: 0 additions & 13 deletions go-configmap/go.mod

This file was deleted.

10 changes: 0 additions & 10 deletions go-configmap/go.sum

This file was deleted.

37 changes: 0 additions & 37 deletions go-configmap/json.go

This file was deleted.

33 changes: 0 additions & 33 deletions go-configmap/json_test.go

This file was deleted.

23 changes: 0 additions & 23 deletions go-configmap/yaml.go

This file was deleted.

33 changes: 0 additions & 33 deletions go-configmap/yaml_test.go

This file was deleted.

3 changes: 0 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@ go 1.21
// We must use this fork until https://github.com/mailru/easyjson/pull/372 is merged
replace github.com/mailru/easyjson => github.com/cmaglie/easyjson v0.8.1

replace github.com/arduino/go-configmap => ./go-configmap

require (
github.com/ProtonMail/go-crypto v1.1.0-alpha.0
github.com/arduino/go-configmap v0.0.1
github.com/arduino/go-paths-helper v1.12.0
github.com/arduino/go-properties-orderedmap v1.8.0
github.com/arduino/go-serial-utils v0.1.2
Expand Down
2 changes: 1 addition & 1 deletion internal/cli/configuration/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import (
"runtime"

"github.com/arduino/arduino-cli/internal/cli/feedback"
"github.com/arduino/arduino-cli/internal/go-configmap"
"github.com/arduino/arduino-cli/internal/i18n"
"github.com/arduino/go-configmap"
"github.com/arduino/go-win32-utils"
)

Expand Down
15 changes: 15 additions & 0 deletions go-configmap/cli.go → internal/go-configmap/cli.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
// This file is part of arduino-cli.
//
// Copyright 2024 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package configmap

import (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
// This file is part of arduino-cli.
//
// Copyright 2024 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package configmap

import (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
// This file is part of arduino-cli.
//
// Copyright 2024 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package configmap_test

import (
"encoding/json"
"fmt"
"testing"

"github.com/arduino/go-configmap"
"github.com/arduino/arduino-cli/internal/go-configmap"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v3"
)
Expand Down
52 changes: 52 additions & 0 deletions internal/go-configmap/json.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// This file is part of arduino-cli.
//
// Copyright 2024 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package configmap

import "encoding/json"

func (c Map) MarshalJSON() ([]byte, error) {
return json.Marshal(c.values)
}

func (c *Map) UnmarshalJSON(data []byte) error {
in := map[string]any{}
if err := json.Unmarshal(data, &in); err != nil {
return err
}

c.values = map[string]any{}
for k, v := range flattenMap(in) {
if err := c.Set(k, v); err != nil {
return err
}
}
return nil
}

func flattenMap(in map[string]any) map[string]any {
out := map[string]any{}
for k, v := range in {
switch v := v.(type) {
case map[string]any:
for kk, vv := range flattenMap(v) {
out[k+"."+kk] = vv
}
default:
out[k] = v
}
}
return out
}
48 changes: 48 additions & 0 deletions internal/go-configmap/json_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// This file is part of arduino-cli.
//
// Copyright 2024 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package configmap_test

import (
"encoding/json"
"fmt"
"testing"

"github.com/arduino/arduino-cli/internal/go-configmap"
"github.com/stretchr/testify/require"
)

func TestJson(t *testing.T) {
c := configmap.New()
c.Set("foo", "bar")
c.Set("fooz.bar", "baz")
c.Set("answer", 42)
require.Equal(t, "bar", c.Get("foo"))
require.Equal(t, "baz", c.Get("fooz.bar"))
require.Equal(t, 42, c.Get("answer"))

j1, err := json.Marshal(c)
require.NoError(t, err)
fmt.Println(string(j1))

d := configmap.New()
err = json.Unmarshal(j1, d)
require.NoError(t, err)
require.Equal(t, "baz", d.Get("fooz.bar"))

j2, err := json.Marshal(d)
require.NoError(t, err)
require.Equal(t, string(j1), string(j2))
}
15 changes: 15 additions & 0 deletions go-configmap/types.go → internal/go-configmap/types.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
// This file is part of arduino-cli.
//
// Copyright 2024 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].

package configmap

import (
Expand Down
Loading

0 comments on commit c92db6a

Please sign in to comment.