Released v1
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"git.franklin.lab/steve.cliff/pcli/output"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var taskCmd = &cobra.Command{
|
||||
Use: "task",
|
||||
Short: "Manage tasks",
|
||||
Long: "Commands for managing Planka tasks",
|
||||
}
|
||||
|
||||
var taskCreateCmd = &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Create a new task",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
taskListId, _ := cmd.Flags().GetString("task-list")
|
||||
name, _ := cmd.Flags().GetString("name")
|
||||
|
||||
if taskListId == "" {
|
||||
return fmt.Errorf("--task-list is required")
|
||||
}
|
||||
if name == "" {
|
||||
return fmt.Errorf("--name is required")
|
||||
}
|
||||
|
||||
fields := map[string]any{
|
||||
"name": name,
|
||||
"position": float64(65536),
|
||||
}
|
||||
|
||||
if pos, _ := cmd.Flags().GetFloat64("position"); cmd.Flags().Changed("position") {
|
||||
fields["position"] = pos
|
||||
}
|
||||
if completed, _ := cmd.Flags().GetBool("completed"); cmd.Flags().Changed("completed") {
|
||||
fields["isCompleted"] = completed
|
||||
}
|
||||
|
||||
task, err := getClient().CreateTask(getContext(), taskListId, fields)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return output.Print(task, getFormat(), os.Stdout)
|
||||
},
|
||||
}
|
||||
|
||||
var taskUpdateCmd = &cobra.Command{
|
||||
Use: "update <id>",
|
||||
Short: "Update a task",
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
fields := make(map[string]any)
|
||||
|
||||
if name, _ := cmd.Flags().GetString("name"); name != "" {
|
||||
fields["name"] = name
|
||||
}
|
||||
if pos, _ := cmd.Flags().GetFloat64("position"); cmd.Flags().Changed("position") {
|
||||
fields["position"] = pos
|
||||
}
|
||||
if completed, _ := cmd.Flags().GetBool("completed"); cmd.Flags().Changed("completed") {
|
||||
fields["isCompleted"] = completed
|
||||
}
|
||||
|
||||
if len(fields) == 0 {
|
||||
return fmt.Errorf("at least one field must be specified for update")
|
||||
}
|
||||
|
||||
task, err := getClient().UpdateTask(getContext(), args[0], fields)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return output.Print(task, getFormat(), os.Stdout)
|
||||
},
|
||||
}
|
||||
|
||||
var taskDeleteCmd = &cobra.Command{
|
||||
Use: "delete <id>",
|
||||
Short: "Delete a task",
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
err := getClient().DeleteTask(getContext(), args[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return output.Print(map[string]string{"status": "deleted"}, getFormat(), os.Stdout)
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(taskCmd)
|
||||
taskCmd.AddCommand(taskCreateCmd)
|
||||
taskCmd.AddCommand(taskUpdateCmd)
|
||||
taskCmd.AddCommand(taskDeleteCmd)
|
||||
|
||||
taskCreateCmd.Flags().String("task-list", "", "Task list ID (required)")
|
||||
taskCreateCmd.Flags().String("name", "", "Task name (required)")
|
||||
taskCreateCmd.Flags().Float64("position", 0, "Position")
|
||||
taskCreateCmd.Flags().Bool("completed", false, "Whether task is completed")
|
||||
|
||||
taskUpdateCmd.Flags().String("name", "", "Task name")
|
||||
taskUpdateCmd.Flags().Float64("position", 0, "Position")
|
||||
taskUpdateCmd.Flags().Bool("completed", false, "Whether task is completed")
|
||||
}
|
||||
Reference in New Issue
Block a user