cmd/status.go
changeset 237 ac5ce4c0e79b
parent 221 970c319e1f7c
child 239 605a00e9d1ab
equal deleted inserted replaced
236:55accc8c0fe1 237:ac5ce4c0e79b
    19 
    19 
    20 var statusPostFlags *flag.FlagSet
    20 var statusPostFlags *flag.FlagSet
    21 
    21 
    22 var statusOpts struct {
    22 var statusOpts struct {
    23 	statusID int64
    23 	statusID int64
    24 	unset    bool
    24 	unset    bool // TODO remove eventually?
    25 
    25 
    26 	// The following fields are used for the post/toot command
    26 	// The following fields are used for the post/toot command
    27 	visibility     string
    27 	visibility     string
    28 	sensitive      bool
    28 	sensitive      bool
    29 	spoiler        string
    29 	spoiler        string
    54 	//statusCmd.PersistentFlags().Int64Var(&statusOpts.sinceID, "since-id", 0, "Request IDs greater than a value")
    54 	//statusCmd.PersistentFlags().Int64Var(&statusOpts.sinceID, "since-id", 0, "Request IDs greater than a value")
    55 	//statusCmd.PersistentFlags().Int64Var(&statusOpts.maxID, "max-id", 0, "Request IDs less (or equal) than a value")
    55 	//statusCmd.PersistentFlags().Int64Var(&statusOpts.maxID, "max-id", 0, "Request IDs less (or equal) than a value")
    56 	statusCmd.PersistentFlags().BoolVar(&statusOpts.all, "all", false, "Fetch all results (for reblogged-by/favourited-by)")
    56 	statusCmd.PersistentFlags().BoolVar(&statusOpts.all, "all", false, "Fetch all results (for reblogged-by/favourited-by)")
    57 
    57 
    58 	// Subcommand flags
    58 	// Subcommand flags
    59 	statusReblogSubcommand.Flags().BoolVar(&statusOpts.unset, "unset", false, "Unreblog the status")
    59 	statusReblogSubcommand.Flags().BoolVar(&statusOpts.unset, "unset", false, "Unreblog the status (deprecated)")
    60 	statusFavouriteSubcommand.Flags().BoolVar(&statusOpts.unset, "unset", false, "Remove the status from the favourites")
    60 	statusFavouriteSubcommand.Flags().BoolVar(&statusOpts.unset, "unset", false, "Remove the status from the favourites (deprecated)")
    61 	statusPinSubcommand.Flags().BoolVar(&statusOpts.unset, "unset", false, "Unpin the status")
    61 	statusPinSubcommand.Flags().BoolVar(&statusOpts.unset, "unset", false, "Unpin the status (deprecated)")
    62 	statusPostSubcommand.Flags().BoolVar(&statusOpts.sensitive, "sensitive", false, "Mark post as sensitive (NSFW)")
    62 	statusPostSubcommand.Flags().BoolVar(&statusOpts.sensitive, "sensitive", false, "Mark post as sensitive (NSFW)")
    63 	statusPostSubcommand.Flags().StringVar(&statusOpts.visibility, "visibility", "", "Visibility (direct|private|unlisted|public)")
    63 	statusPostSubcommand.Flags().StringVar(&statusOpts.visibility, "visibility", "", "Visibility (direct|private|unlisted|public)")
    64 	statusPostSubcommand.Flags().StringVar(&statusOpts.spoiler, "spoiler", "", "Spoiler warning (CW)")
    64 	statusPostSubcommand.Flags().StringVar(&statusOpts.spoiler, "spoiler", "", "Spoiler warning (CW)")
    65 	statusPostSubcommand.Flags().StringVar(&statusOpts.mediaIDs, "media-ids", "", "Comma-separated list of media IDs")
    65 	statusPostSubcommand.Flags().StringVar(&statusOpts.mediaIDs, "media-ids", "", "Comma-separated list of media IDs")
    66 	statusPostSubcommand.Flags().StringVarP(&statusOpts.mediaFilePath, "file", "f", "", "Media file name")
    66 	statusPostSubcommand.Flags().StringVarP(&statusOpts.mediaFilePath, "file", "f", "", "Media file name")
    67 	statusPostSubcommand.Flags().StringVar(&statusOpts.textFilePath, "text-file", "", "Text file name (message content)")
    67 	statusPostSubcommand.Flags().StringVar(&statusOpts.textFilePath, "text-file", "", "Text file name (message content)")
    68 	statusPostSubcommand.Flags().Int64VarP(&statusOpts.inReplyToID, "in-reply-to", "r", 0, "Status ID to reply to")
    68 	statusPostSubcommand.Flags().Int64VarP(&statusOpts.inReplyToID, "in-reply-to", "r", 0, "Status ID to reply to")
    69 	statusPostSubcommand.Flags().BoolVar(&statusOpts.stdin, "stdin", false, "Read message content from standard input")
    69 	statusPostSubcommand.Flags().BoolVar(&statusOpts.stdin, "stdin", false, "Read message content from standard input")
    70 	statusPostSubcommand.Flags().BoolVar(&statusOpts.addMentions, "add-mentions", false, "Add mentions when replying")
    70 	statusPostSubcommand.Flags().BoolVar(&statusOpts.addMentions, "add-mentions", false, "Add mentions when replying")
    71 	statusPostSubcommand.Flags().BoolVar(&statusOpts.sameVisibility, "same-visibility", false, "Use same visibility as original message (for replies)")
    71 	statusPostSubcommand.Flags().BoolVar(&statusOpts.sameVisibility, "same-visibility", false, "Use same visibility as original message (for replies)")
       
    72 
       
    73 	// Deprecated flags
       
    74 	statusReblogSubcommand.Flags().MarkDeprecated("unset", "please use unboost instead")
       
    75 	statusFavouriteSubcommand.Flags().MarkDeprecated("unset", "please use unfavourite instead")
       
    76 	statusPinSubcommand.Flags().MarkDeprecated("unset", "please use unpin instead")
    72 
    77 
    73 	// Flag completion
    78 	// Flag completion
    74 	annotation := make(map[string][]string)
    79 	annotation := make(map[string][]string)
    75 	annotation[cobra.BashCompCustom] = []string{"__madonctl_visibility"}
    80 	annotation[cobra.BashCompCustom] = []string{"__madonctl_visibility"}
    76 
    81 
   157 		RunE: func(cmd *cobra.Command, args []string) error {
   162 		RunE: func(cmd *cobra.Command, args []string) error {
   158 			return statusSubcommandRunE(cmd.Name(), args)
   163 			return statusSubcommandRunE(cmd.Name(), args)
   159 		},
   164 		},
   160 	},
   165 	},
   161 	statusReblogSubcommand,
   166 	statusReblogSubcommand,
       
   167 	statusUnreblogSubcommand,
   162 	statusFavouriteSubcommand,
   168 	statusFavouriteSubcommand,
       
   169 	statusUnfavouriteSubcommand,
   163 	statusPinSubcommand,
   170 	statusPinSubcommand,
       
   171 	statusUnpinSubcommand,
   164 	statusPostSubcommand,
   172 	statusPostSubcommand,
   165 }
   173 }
   166 
   174 
   167 var statusReblogSubcommand = &cobra.Command{
   175 var statusReblogSubcommand = &cobra.Command{
   168 	Use:     "boost",
   176 	Use:     "boost",
   169 	Aliases: []string{"reblog"},
   177 	Aliases: []string{"reblog"},
   170 	Short:   "Boost (reblog) or unreblog the status",
   178 	Short:   "Boost (reblog) a status message",
       
   179 	RunE: func(cmd *cobra.Command, args []string) error {
       
   180 		return statusSubcommandRunE(cmd.Name(), args)
       
   181 	},
       
   182 }
       
   183 
       
   184 var statusUnreblogSubcommand = &cobra.Command{
       
   185 	Use:     "unboost",
       
   186 	Aliases: []string{"unreblog"},
       
   187 	Short:   "Cancel boost (reblog) of a status message",
   171 	RunE: func(cmd *cobra.Command, args []string) error {
   188 	RunE: func(cmd *cobra.Command, args []string) error {
   172 		return statusSubcommandRunE(cmd.Name(), args)
   189 		return statusSubcommandRunE(cmd.Name(), args)
   173 	},
   190 	},
   174 }
   191 }
   175 
   192 
   176 var statusFavouriteSubcommand = &cobra.Command{
   193 var statusFavouriteSubcommand = &cobra.Command{
   177 	Use:     "favourite",
   194 	Use:     "favourite",
   178 	Aliases: []string{"favorite", "fave"},
   195 	Aliases: []string{"favorite", "fave"},
   179 	Short:   "Mark/unmark the status as favourite",
   196 	Short:   "Mark the status as favourite",
       
   197 	RunE: func(cmd *cobra.Command, args []string) error {
       
   198 		return statusSubcommandRunE(cmd.Name(), args)
       
   199 	},
       
   200 }
       
   201 
       
   202 var statusUnfavouriteSubcommand = &cobra.Command{
       
   203 	Use:     "unfavourite",
       
   204 	Aliases: []string{"unfavorite", "unfave"},
       
   205 	Short:   "Unmark the status as favourite",
   180 	RunE: func(cmd *cobra.Command, args []string) error {
   206 	RunE: func(cmd *cobra.Command, args []string) error {
   181 		return statusSubcommandRunE(cmd.Name(), args)
   207 		return statusSubcommandRunE(cmd.Name(), args)
   182 	},
   208 	},
   183 }
   209 }
   184 
   210 
   185 var statusPinSubcommand = &cobra.Command{
   211 var statusPinSubcommand = &cobra.Command{
   186 	Use:   "pin",
   212 	Use:   "pin",
   187 	Short: "Pin/unpin the status",
   213 	Short: "Pin a status",
       
   214 	RunE: func(cmd *cobra.Command, args []string) error {
       
   215 		return statusSubcommandRunE(cmd.Name(), args)
       
   216 	},
       
   217 }
       
   218 
       
   219 var statusUnpinSubcommand = &cobra.Command{
       
   220 	Use:   "unpin",
       
   221 	Short: "Unpin a status",
   188 	RunE: func(cmd *cobra.Command, args []string) error {
   222 	RunE: func(cmd *cobra.Command, args []string) error {
   189 		return statusSubcommandRunE(cmd.Name(), args)
   223 		return statusSubcommandRunE(cmd.Name(), args)
   190 	},
   224 	},
   191 }
   225 }
   192 
   226 
   262 			accountList = accountList[:opt.keep]
   296 			accountList = accountList[:opt.keep]
   263 		}
   297 		}
   264 		obj = accountList
   298 		obj = accountList
   265 	case "delete":
   299 	case "delete":
   266 		err = gClient.DeleteStatus(opt.statusID)
   300 		err = gClient.DeleteStatus(opt.statusID)
   267 	case "boost":
   301 	case "boost", "unboost":
   268 		if opt.unset {
   302 		if opt.unset || subcmd == "unboost" {
   269 			err = gClient.UnreblogStatus(opt.statusID)
   303 			err = gClient.UnreblogStatus(opt.statusID)
   270 		} else {
   304 		} else {
   271 			err = gClient.ReblogStatus(opt.statusID)
   305 			err = gClient.ReblogStatus(opt.statusID)
   272 		}
   306 		}
   273 	case "favourite":
   307 	case "favourite", "unfavourite":
   274 		if opt.unset {
   308 		if opt.unset || subcmd == "unfavourite" {
   275 			err = gClient.UnfavouriteStatus(opt.statusID)
   309 			err = gClient.UnfavouriteStatus(opt.statusID)
   276 		} else {
   310 		} else {
   277 			err = gClient.FavouriteStatus(opt.statusID)
   311 			err = gClient.FavouriteStatus(opt.statusID)
   278 		}
   312 		}
   279 	case "pin":
   313 	case "pin", "unpin":
   280 		if opt.unset {
   314 		if opt.unset || subcmd == "unpin" {
   281 			err = gClient.UnpinStatus(opt.statusID)
   315 			err = gClient.UnpinStatus(opt.statusID)
   282 		} else {
   316 		} else {
   283 			err = gClient.PinStatus(opt.statusID)
   317 			err = gClient.PinStatus(opt.statusID)
   284 		}
   318 		}
   285 	case "mute-conversation":
   319 	case "mute-conversation":