88
99 "github.com/bugout-dev/bugout-go/cmd/bugout/cmdutils"
1010 bugout "github.com/bugout-dev/bugout-go/pkg"
11+ "github.com/bugout-dev/bugout-go/pkg/brood"
1112)
1213
1314func GenerateResourcesCommand () * cobra.Command {
@@ -21,11 +22,28 @@ func GenerateResourcesCommand() *cobra.Command {
2122 resourcesDeleteCmd := GenerateResourceDeleteCommand ()
2223 resourcesGetCmd := GenerateResourcesGetCommand ()
2324
24- resourcesCmd .AddCommand (resourcesCreateCmd , resourcesUpdateCmd , resourcesDeleteCmd , resourcesGetCmd )
25+ resourceHoldersCmd := GenerateResourceHoldersCommand ()
26+
27+ resourcesCmd .AddCommand (resourcesCreateCmd , resourcesUpdateCmd , resourcesDeleteCmd , resourcesGetCmd , resourceHoldersCmd )
2528
2629 return resourcesCmd
2730}
2831
32+ func GenerateResourceHoldersCommand () * cobra.Command {
33+ holdersCmd := & cobra.Command {
34+ Use : "holders" ,
35+ Short : "Bugout resource holders operations" ,
36+ }
37+
38+ resourceHoldersGetCmd := GenerateResourceHoldersGetCommand ()
39+ resourceHoldersAddCmd := GenerateResourceHoldersAddCommand ()
40+ resourceHoldersDeleteCmd := GenerateResourceHoldersDeleteCommand ()
41+
42+ holdersCmd .AddCommand (resourceHoldersGetCmd , resourceHoldersAddCmd , resourceHoldersDeleteCmd )
43+
44+ return holdersCmd
45+ }
46+
2947func GenerateResourceCreateCommand () * cobra.Command {
3048 var token , applicationId string
3149 resourceCreateCmd := & cobra.Command {
@@ -76,7 +94,7 @@ func GenerateResourceUpdateCommand() *cobra.Command {
7694 PreRunE : cmdutils .TokenArgPopulator ,
7795 RunE : func (cmd * cobra.Command , args []string ) error {
7896 if len (args ) != 1 {
79- return fmt .Errorf (`One resource argument as json string in format {"update": {"key": "value"}, drop_keys: ["key"]} must be specified` )
97+ return fmt .Errorf (`Resource argument as json string in format {"update": {"key": "value"}, " drop_keys" : ["key"]} must be specified` )
8098 }
8199 var resourceUpdateRaw resourceUpdateArg
82100 err := json .Unmarshal ([]byte (args [0 ]), & resourceUpdateRaw )
@@ -162,3 +180,105 @@ func GenerateResourcesGetCommand() *cobra.Command {
162180
163181 return resourcesGetCmd
164182}
183+
184+ func GenerateResourceHoldersGetCommand () * cobra.Command {
185+ var token , resourceId string
186+ resourceHoldersGetCmd := & cobra.Command {
187+ Use : "get" ,
188+ Short : "Get resource holders" ,
189+ PreRunE : cmdutils .TokenArgPopulator ,
190+ RunE : func (cmd * cobra.Command , args []string ) error {
191+ client , clientErr := bugout .ClientFromEnv ()
192+ if clientErr != nil {
193+ return clientErr
194+ }
195+
196+ resourceHolders , err := client .Brood .GetResourceHolders (token , resourceId )
197+ if err != nil {
198+ return err
199+ }
200+
201+ encodeErr := json .NewEncoder (cmd .OutOrStdout ()).Encode (& resourceHolders )
202+ return encodeErr
203+ },
204+ }
205+
206+ resourceHoldersGetCmd .Flags ().StringVarP (& token , "token" , "t" , "" , "Bugout access token to use for the request" )
207+ resourceHoldersGetCmd .Flags ().StringVarP (& resourceId , "resource_id" , "r" , "" , "Resource ID" )
208+
209+ return resourceHoldersGetCmd
210+ }
211+
212+ func GenerateResourceHoldersAddCommand () * cobra.Command {
213+ var token , resourceId string
214+ resourceHoldersAddCmd := & cobra.Command {
215+ Use : "add [holder]" ,
216+ Short : "Add resource holders" ,
217+ PreRunE : cmdutils .TokenArgPopulator ,
218+ RunE : func (cmd * cobra.Command , args []string ) error {
219+ if len (args ) != 1 {
220+ return fmt .Errorf (`Resource holder argument as json string in format {"holder_id": "user_or_group_uuid", "holder_type": "user_or_group", "permissions": ["admin", "create", "read", "update", "delete"]} must be specified` )
221+ }
222+ var resourceHolderPermissionsRaw brood.ResourceHolder
223+ err := json .Unmarshal ([]byte (args [0 ]), & resourceHolderPermissionsRaw )
224+ if err != nil {
225+ return err
226+ }
227+
228+ client , clientErr := bugout .ClientFromEnv ()
229+ if clientErr != nil {
230+ return clientErr
231+ }
232+
233+ resource , err := client .Brood .AddResourceHolderPermissions (token , resourceId , resourceHolderPermissionsRaw )
234+ if err != nil {
235+ return err
236+ }
237+
238+ encodeErr := json .NewEncoder (cmd .OutOrStdout ()).Encode (& resource )
239+ return encodeErr
240+ },
241+ }
242+
243+ resourceHoldersAddCmd .Flags ().StringVarP (& token , "token" , "t" , "" , "Bugout access token to use for the request" )
244+ resourceHoldersAddCmd .Flags ().StringVarP (& resourceId , "resource_id" , "r" , "" , "Resource ID" )
245+
246+ return resourceHoldersAddCmd
247+ }
248+
249+ func GenerateResourceHoldersDeleteCommand () * cobra.Command {
250+ var token , resourceId string
251+ resourceHoldersDeleteCmd := & cobra.Command {
252+ Use : "delete [holder]" ,
253+ Short : "Delete resource holders" ,
254+ PreRunE : cmdutils .TokenArgPopulator ,
255+ RunE : func (cmd * cobra.Command , args []string ) error {
256+ if len (args ) != 1 {
257+ return fmt .Errorf (`Resource holder argument as json string in format {"holder_id": "user_or_group_uuid", "holder_type": "user_or_group", "permissions": ["admin", "create", "read", "update", "delete"]} must be specified` )
258+ }
259+ var resourceHolderPermissionsRaw brood.ResourceHolder
260+ err := json .Unmarshal ([]byte (args [0 ]), & resourceHolderPermissionsRaw )
261+ if err != nil {
262+ return err
263+ }
264+
265+ client , clientErr := bugout .ClientFromEnv ()
266+ if clientErr != nil {
267+ return clientErr
268+ }
269+
270+ resource , err := client .Brood .DeleteResourceHolderPermissions (token , resourceId , resourceHolderPermissionsRaw )
271+ if err != nil {
272+ return err
273+ }
274+
275+ encodeErr := json .NewEncoder (cmd .OutOrStdout ()).Encode (& resource )
276+ return encodeErr
277+ },
278+ }
279+
280+ resourceHoldersDeleteCmd .Flags ().StringVarP (& token , "token" , "t" , "" , "Bugout access token to use for the request" )
281+ resourceHoldersDeleteCmd .Flags ().StringVarP (& resourceId , "resource_id" , "r" , "" , "Resource ID" )
282+
283+ return resourceHoldersDeleteCmd
284+ }
0 commit comments