Released v1

This commit is contained in:
Steve Cliff
2026-02-12 10:37:19 +00:00
commit b07572fed5
77 changed files with 19518 additions and 0 deletions
+110
View File
@@ -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")
}