Skip to content

Commit 9ae9461

Browse files
Refactor config delete command using gRPC function call
1 parent 933554a commit 9ae9461

File tree

2 files changed

+10
-23
lines changed

2 files changed

+10
-23
lines changed

internal/cli/config/delete.go

+9-22
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ package config
1717

1818
import (
1919
"os"
20-
"strings"
2120

21+
"github.com/arduino/arduino-cli/commands/daemon"
2222
"github.com/arduino/arduino-cli/configuration"
2323
"github.com/arduino/arduino-cli/internal/cli/feedback"
24+
"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/settings/v1"
2425
"github.com/sirupsen/logrus"
2526
"github.com/spf13/cobra"
26-
"github.com/spf13/viper"
2727
)
2828

2929
func initDeleteCommand() *cobra.Command {
@@ -47,26 +47,13 @@ func runDeleteCommand(cmd *cobra.Command, args []string) {
4747
logrus.Info("Executing `arduino-cli config delete`")
4848
toDelete := args[0]
4949

50-
keys := []string{}
51-
exists := false
52-
for _, v := range configuration.Settings.AllKeys() {
53-
if !strings.HasPrefix(v, toDelete) {
54-
keys = append(keys, v)
55-
continue
56-
}
57-
exists = true
50+
svc := daemon.SettingsService{}
51+
_, err := svc.Delete(cmd.Context(), &settings.DeleteRequest{Key: toDelete})
52+
if err != nil {
53+
feedback.Fatal(tr("Cannot delete the key %[1]s: %[2]v", toDelete, err), feedback.ErrGeneric)
5854
}
59-
60-
if !exists {
61-
feedback.Fatal(tr("Settings key doesn't exist"), feedback.ErrGeneric)
62-
}
63-
64-
updatedSettings := viper.New()
65-
for _, k := range keys {
66-
updatedSettings.Set(k, configuration.Settings.Get(k))
67-
}
68-
69-
if err := updatedSettings.WriteConfigAs(configuration.Settings.ConfigFileUsed()); err != nil {
70-
feedback.Fatal(tr("Can't write config file: %v", err), feedback.ErrGeneric)
55+
_, err = svc.Write(cmd.Context(), &settings.WriteRequest{FilePath: configuration.Settings.ConfigFileUsed()})
56+
if err != nil {
57+
feedback.Fatal(tr("Cannot write the file %[1]s: %[2]v", configuration.Settings.ConfigFileUsed(), err), feedback.ErrGeneric)
7158
}
7259
}

internal/integrationtest/config/config_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ func TestAddRemoveSetDeleteOnUnexistingKey(t *testing.T) {
302302

303303
_, stderr, err = cli.Run("config", "delete", "some.key", "--config-file", "arduino-cli.yaml")
304304
require.Error(t, err)
305-
require.Contains(t, string(stderr), "Settings key doesn't exist")
305+
require.Contains(t, string(stderr), "Cannot delete the key some.key: key not found in settings\n")
306306
}
307307

308308
func TestAddSingleArgument(t *testing.T) {

0 commit comments

Comments
 (0)