@@ -96,12 +96,12 @@ var boardShowCmd = &cobra.Command{
9696
9797 boardID := args [0 ]
9898
99- data , _ , err := getSDK ().Boards (). Get (cmd .Context (), boardID )
99+ resp , err := getSDK ().Get (cmd .Context (), "/boards/" + boardID + ".json" )
100100 if err != nil {
101101 return convertSDKError (err )
102102 }
103103
104- items := normalizeAny (data )
104+ items := normalizeAny (resp . Data )
105105
106106 summary := "Board"
107107 if board , ok := items .(map [string ]any ); ok {
@@ -115,6 +115,13 @@ var boardShowCmd = &cobra.Command{
115115 breadcrumb ("columns" , fmt .Sprintf ("fizzy column list --board %s" , boardID ), "List columns" ),
116116 breadcrumb ("create-card" , fmt .Sprintf ("fizzy card create --board %s --title \" title\" " , boardID ), "Create card" ),
117117 }
118+ if board , ok := items .(map [string ]any ); ok {
119+ if publicURL , ok := board ["public_url" ].(string ); ok && publicURL != "" {
120+ breadcrumbs = append (breadcrumbs , breadcrumb ("unpublish" , fmt .Sprintf ("fizzy board unpublish %s" , boardID ), "Disable public board link" ))
121+ } else {
122+ breadcrumbs = append (breadcrumbs , breadcrumb ("publish" , fmt .Sprintf ("fizzy board publish %s" , boardID ), "Create public board link" ))
123+ }
124+ }
118125
119126 printDetail (items , summary , breadcrumbs )
120127 return nil
@@ -272,6 +279,71 @@ var boardDeleteCmd = &cobra.Command{
272279 },
273280}
274281
282+ var boardPublishCmd = & cobra.Command {
283+ Use : "publish BOARD_ID" ,
284+ Short : "Publish a board" ,
285+ Long : "Publishes a board and returns its public share URL." ,
286+ Args : cobra .ExactArgs (1 ),
287+ RunE : func (cmd * cobra.Command , args []string ) error {
288+ if err := requireAuthAndAccount (); err != nil {
289+ return err
290+ }
291+
292+ boardID := args [0 ]
293+
294+ client := getClient ()
295+ resp , err := client .Post ("/boards/" + boardID + "/publication.json" , nil )
296+ if err != nil {
297+ return err
298+ }
299+
300+ breadcrumbs := []Breadcrumb {
301+ breadcrumb ("show" , fmt .Sprintf ("fizzy board show %s" , boardID ), "View board" ),
302+ breadcrumb ("cards" , fmt .Sprintf ("fizzy card list --board %s" , boardID ), "List cards" ),
303+ breadcrumb ("unpublish" , fmt .Sprintf ("fizzy board unpublish %s" , boardID ), "Disable public board link" ),
304+ }
305+
306+ data := resp .Data
307+ if data == nil {
308+ data = map [string ]any {"published" : true }
309+ }
310+
311+ printMutation (data , "" , breadcrumbs )
312+ return nil
313+ },
314+ }
315+
316+ var boardUnpublishCmd = & cobra.Command {
317+ Use : "unpublish BOARD_ID" ,
318+ Short : "Unpublish a board" ,
319+ Long : "Removes a board's public share URL." ,
320+ Args : cobra .ExactArgs (1 ),
321+ RunE : func (cmd * cobra.Command , args []string ) error {
322+ if err := requireAuthAndAccount (); err != nil {
323+ return err
324+ }
325+
326+ boardID := args [0 ]
327+
328+ client := getClient ()
329+ _ , err := client .Delete ("/boards/" + boardID + "/publication.json" )
330+ if err != nil {
331+ return err
332+ }
333+
334+ breadcrumbs := []Breadcrumb {
335+ breadcrumb ("show" , fmt .Sprintf ("fizzy board show %s" , boardID ), "View board" ),
336+ breadcrumb ("cards" , fmt .Sprintf ("fizzy card list --board %s" , boardID ), "List cards" ),
337+ breadcrumb ("publish" , fmt .Sprintf ("fizzy board publish %s" , boardID ), "Create public board link" ),
338+ }
339+
340+ printMutation (map [string ]any {
341+ "unpublished" : true ,
342+ }, "" , breadcrumbs )
343+ return nil
344+ },
345+ }
346+
275347func init () {
276348 rootCmd .AddCommand (boardCmd )
277349
@@ -297,4 +369,8 @@ func init() {
297369
298370 // Delete
299371 boardCmd .AddCommand (boardDeleteCmd )
372+
373+ // Publication
374+ boardCmd .AddCommand (boardPublishCmd )
375+ boardCmd .AddCommand (boardUnpublishCmd )
300376}
0 commit comments