@@ -40,6 +40,7 @@ func initLibCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
40
40
}
41
41
42
42
libCommand .AddCommand (initLibAddCommand (srv ))
43
+ libCommand .AddCommand (initLibRemoveCommand (srv ))
43
44
44
45
return libCommand
45
46
}
@@ -88,20 +89,80 @@ func runLibAddCommand(ctx context.Context, args []string, srv rpc.ArduinoCoreSer
88
89
if err != nil {
89
90
feedback .Fatal (i18n .Tr ("Error adding %s to the profile %s: %v" , lib .Name , profileArg .Get (), err ), feedback .ErrGeneric )
90
91
}
91
- feedback .PrintResult (libResult {LibName : resp .GetLibName (), LibVersion : resp .GetLibVersion (), ProfileName : profileArg .Get ()})
92
+ feedback .PrintResult (libAddResult {LibName : resp .GetLibName (), LibVersion : resp .GetLibVersion (), ProfileName : profileArg .Get ()})
92
93
}
93
94
}
94
95
95
- type libResult struct {
96
+ func initLibRemoveCommand (srv rpc.ArduinoCoreServiceServer ) * cobra.Command {
97
+ var destDir string
98
+
99
+ removeCommand := & cobra.Command {
100
+ Use : fmt .Sprintf ("remove %s[@%s]..." , i18n .Tr ("LIBRARY" ), i18n .Tr ("VERSION_NUMBER" )),
101
+ Short : i18n .Tr ("Removes a library from the profile." ),
102
+ Long : i18n .Tr ("Removes a library from the profile." ),
103
+ Example : "" +
104
+ " " + os .Args [0 ] + " profile lib remove AudioZero -m my_profile\n " +
105
+ " " + os .
Args [
0 ]
+ " profile lib remove [email protected] --profile my_profile\n " ,
106
+ Args : cobra .MinimumNArgs (1 ),
107
+ Run : func (cmd * cobra.Command , args []string ) {
108
+ runLibRemoveCommand (cmd .Context (), args , srv , destDir )
109
+ },
110
+ ValidArgsFunction : func (cmd * cobra.Command , args []string , toComplete string ) ([]string , cobra.ShellCompDirective ) {
111
+ return arguments .GetInstallableLibs (cmd .Context (), srv ), cobra .ShellCompDirectiveDefault
112
+ },
113
+ }
114
+
115
+ removeCommand .Flags ().StringVar (& destDir , "dest-dir" , "" , i18n .Tr ("Location of the project file." ))
116
+ profileArg .AddToCommand (removeCommand , srv )
117
+
118
+ return removeCommand
119
+ }
120
+
121
+ func runLibRemoveCommand (ctx context.Context , args []string , srv rpc.ArduinoCoreServiceServer , destDir string ) {
122
+ sketchPath := arguments .InitSketchPath (destDir )
123
+
124
+ instance := instance .CreateAndInit (ctx , srv )
125
+ libRefs , err := lib .ParseLibraryReferenceArgsAndAdjustCase (ctx , srv , instance , args )
126
+ if err != nil {
127
+ feedback .Fatal (i18n .Tr ("Arguments error: %v" , err ), feedback .ErrBadArgument )
128
+ }
129
+ for _ , lib := range libRefs {
130
+ resp , err := srv .ProfileLibRemove (ctx , & rpc.ProfileLibRemoveRequest {
131
+ SketchPath : sketchPath .String (),
132
+ ProfileName : profileArg .Get (),
133
+ LibName : lib .Name ,
134
+ })
135
+ if err != nil {
136
+ feedback .Fatal (i18n .Tr ("Error removing %s from the profile %s: %v" , lib .Name , profileArg .Get (), err ), feedback .ErrGeneric )
137
+ }
138
+ feedback .PrintResult (libRemoveResult {LibName : resp .GetLibName (), LibVersion : resp .GetLibVersion (), ProfileName : profileArg .Get ()})
139
+ }
140
+ }
141
+
142
+ type libAddResult struct {
143
+ LibName string `json:"library_name"`
144
+ LibVersion string `json:"library_version"`
145
+ ProfileName string `json:"profile_name"`
146
+ }
147
+
148
+ func (lr libAddResult ) Data () interface {} {
149
+ return lr
150
+ }
151
+
152
+ func (lr libAddResult ) String () string {
153
+ return i18n .Tr ("Profile %s: %s@%s added successfully" , lr .ProfileName , lr .LibName , lr .LibVersion )
154
+ }
155
+
156
+ type libRemoveResult struct {
96
157
LibName string `json:"library_name"`
97
158
LibVersion string `json:"library_version"`
98
159
ProfileName string `json:"profile_name"`
99
160
}
100
161
101
- func (lr libResult ) Data () interface {} {
162
+ func (lr libRemoveResult ) Data () interface {} {
102
163
return lr
103
164
}
104
165
105
- func (lr libResult ) String () string {
106
- return i18n .Tr ("Profile %s: %s@%s added succesfully " , lr .ProfileName , lr .LibName , lr .LibVersion )
166
+ func (lr libRemoveResult ) String () string {
167
+ return i18n .Tr ("Profile %s: %s@%s removed successfully " , lr .ProfileName , lr .LibName , lr .LibVersion )
107
168
}
0 commit comments