{
  "name": "watson",
  "description": "A wonderful CLI to track your time",
  "options": [
    {
      "names": [
        "--help"
      ],
      "description": "Show help for watson",
      "isPersistent": true
    },
    {
      "names": [
        "--version"
      ],
      "description": "Show the version for watson"
    },
    {
      "names": [
        "--color"
      ],
      "description": "Color output",
      "exclusiveOn": [
        "--no-color"
      ]
    },
    {
      "names": [
        "--no-color"
      ],
      "description": "No color output",
      "exclusiveOn": [
        "--color"
      ]
    }
  ],
  "subcommands": [
    {
      "name": "add",
      "description": "Add time to a project with tag(s) that was not tracked live",
      "options": [
        {
          "names": [
            "--from",
            "-f"
          ],
          "description": "Date and time of start of tracked activity",
          "args": [
            {
              "name": "DATETIME",
              "description": "The start time. Ex: 2022-03-04 12:00:00"
            }
          ]
        },
        {
          "names": [
            "--to",
            "-t"
          ],
          "description": "Date and time of end of tracked activity",
          "args": [
            {
              "name": "DATETIME",
              "description": "The start time. Ex: 2022-03-04 12:00:00"
            }
          ]
        },
        {
          "names": [
            "--confirm-new-project",
            "-c"
          ],
          "description": "Confirm creation of new tag"
        }
      ],
      "args": [
        {
          "generators": [
            {
              "script": [
                "watson",
                "projects"
              ]
            },
            {
              "script": [
                "watson",
                "tags"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "aggregate",
      "description": "Display a report of the time spent on each project aggregated by day",
      "options": [
        {
          "names": [
            "--current",
            "-c"
          ],
          "description": "Include currently running frame in report",
          "exclusiveOn": [
            "-C"
          ]
        },
        {
          "names": [
            "--no-current",
            "-C"
          ],
          "description": "Don't include currently running frame in report",
          "exclusiveOn": [
            "--current"
          ]
        },
        {
          "names": [
            "--from",
            "-f"
          ],
          "description": "The date from when the reports should start. Defaults to seven days ago",
          "args": [
            {
              "name": "DATETIME",
              "description": "The start time. Ex: 2022-03-04 12:00:00"
            }
          ]
        },
        {
          "names": [
            "--to",
            "-t"
          ],
          "description": "The date at which the report should stop (inclusive). Defaults to tomorrow",
          "args": [
            {
              "name": "DATETIME",
              "description": "The start time. Ex: 2022-03-04 12:00:00"
            }
          ]
        },
        {
          "names": [
            "--project",
            "-p"
          ],
          "description": "Reports activity only for the given project. You can add other projects by using this option several times",
          "args": [
            {
              "name": "PROJECT",
              "generators": [
                {
                  "script": [
                    "watson",
                    "projects"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--tag",
            "-T"
          ],
          "description": "Reports activity only for frames containing the given tag. You can add several tags by using this option multiple times",
          "args": [
            {
              "name": "TAG",
              "generators": [
                {
                  "script": [
                    "watson",
                    "tags"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--json",
            "-j"
          ],
          "description": "Format output in JSON instead of plain text",
          "exclusiveOn": [
            "--csv",
            "--pager",
            "--no-pager"
          ]
        },
        {
          "names": [
            "--csv",
            "-s"
          ],
          "description": "Format output in CSV instead of plain text",
          "exclusiveOn": [
            "--json",
            "--pager",
            "--no-pager"
          ]
        },
        {
          "names": [
            "--pager",
            "-g"
          ],
          "description": "View output through a pager",
          "exclusiveOn": [
            "--csv",
            "--json",
            "--no-pager"
          ]
        },
        {
          "names": [
            "--no-pager",
            "-G"
          ],
          "description": "Don't view output through a pager",
          "exclusiveOn": [
            "--csv",
            "--pager",
            "--json"
          ]
        }
      ]
    },
    {
      "name": "cancel",
      "description": "Cancel the last call to the start command. The time will not be recorded"
    },
    {
      "name": "config",
      "description": "Get and set configuration options",
      "options": [
        {
          "names": [
            "--edit",
            "-e"
          ],
          "description": "Edit the configuration file with an editor"
        }
      ],
      "args": [
        {
          "name": "SECTION.OPTION",
          "suggestions": [
            "backend.url",
            "backend.token",
            "options.confirm_new_project",
            "options.confirm_new_tag",
            "options.date_format",
            "options.log_current",
            "options.pager",
            "options.report_current",
            "options.reverse_log",
            "options.stop_on_start",
            "options.stop_on_restart",
            "options.time_format",
            "options.week_start"
          ]
        },
        {
          "name": "VALUE",
          "isOptional": true
        }
      ]
    },
    {
      "name": "edit",
      "description": "Edit a frame",
      "options": [
        {
          "names": [
            "--confirm-new-project",
            "-c"
          ],
          "description": "Confirm addition of new project"
        },
        {
          "names": [
            "--confirm-new-tag",
            "-b"
          ],
          "description": "Confirm creation of new tag"
        }
      ],
      "args": [
        {
          "name": "FRAME ID",
          "generators": [
            {
              "script": [
                "watson",
                "log",
                "--json",
                "--reverse"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "frames",
      "description": "Display the list of all frame IDs"
    },
    {
      "name": "help",
      "description": "Display help information",
      "args": [
        {
          "name": "COMMAND"
        }
      ]
    },
    {
      "name": "log",
      "description": "Display each recorded session during the given timespan",
      "options": [
        {
          "names": [
            "--current",
            "-c"
          ],
          "description": "Include currently running frame in report",
          "exclusiveOn": [
            "--no-current"
          ]
        },
        {
          "names": [
            "--no-current",
            "-C"
          ],
          "description": "Don't include currently running frame in report",
          "exclusiveOn": [
            "--current"
          ]
        },
        {
          "names": [
            "--reverse",
            "-r"
          ],
          "description": "Reverse the order of the days in output",
          "exclusiveOn": [
            "--no-reverse"
          ]
        },
        {
          "names": [
            "--no-reverse",
            "-R"
          ],
          "description": "Don't Reverse the order of the days in output",
          "exclusiveOn": [
            "--reverse"
          ]
        },
        {
          "names": [
            "--from",
            "-f"
          ],
          "description": "The date from when the log should start. Defaults to seven days ago",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        },
        {
          "names": [
            "--to",
            "-t"
          ],
          "description": "The date at which the log should stop (inclusive). Defaults to tomorrow",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        },
        {
          "names": [
            "--year",
            "-y"
          ],
          "description": "Reports activity for the current year",
          "exclusiveOn": [
            "--month",
            "--luna",
            "--week",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--month",
            "-m"
          ],
          "description": "Reports activity for the current month",
          "exclusiveOn": [
            "--year",
            "--luna",
            "--week",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--luna",
            "-l"
          ],
          "description": "Reports activity for the current moon cycle",
          "exclusiveOn": [
            "--year",
            "--month",
            "--week",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--week",
            "-w"
          ],
          "description": "Reports activity for the current week",
          "exclusiveOn": [
            "--year",
            "--month",
            "--luna",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--day",
            "-d"
          ],
          "description": "Reports activity for the current day",
          "exclusiveOn": [
            "--year",
            "--month",
            "--luna",
            "--week",
            "--all"
          ]
        },
        {
          "names": [
            "--all",
            "-a"
          ],
          "description": "Reports all activities",
          "exclusiveOn": [
            "--year",
            "--month",
            "--luna",
            "--week",
            "--day"
          ]
        },
        {
          "names": [
            "--project",
            "-p"
          ],
          "description": "Logs activity only for the given project. You can add other projects by using this option several times",
          "args": [
            {
              "name": "PROJECT",
              "isVariadic": true,
              "generators": [
                {
                  "script": [
                    "watson",
                    "projects"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--tag",
            "-T"
          ],
          "description": "Logs activity only for frames containing the given tag. You can add several tags by using this option multiple times",
          "args": [
            {
              "name": "TAG",
              "isVariadic": true,
              "generators": [
                {
                  "script": [
                    "watson",
                    "tags"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--ignore-project"
          ],
          "description": "Logs activity for all projects but the given ones. You can ignore several projects by using the option multiple times. Any given project will be ignored",
          "args": [
            {
              "name": "PROJECT",
              "isVariadic": true,
              "generators": [
                {
                  "script": [
                    "watson",
                    "projects"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--ignore-tag"
          ],
          "description": "Logs activity for all tags but the given ones. You can ignore several tags by using the option multiple times. Any given tag will be ignored",
          "args": [
            {
              "name": "TAG",
              "isVariadic": true,
              "generators": [
                {
                  "script": [
                    "watson",
                    "tags"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--json",
            "-j"
          ],
          "description": "Format output in JSON instead of plain text",
          "exclusiveOn": [
            "--csv"
          ]
        },
        {
          "names": [
            "--csv",
            "-s"
          ],
          "description": "Format output in CSV instead of plain text",
          "exclusiveOn": [
            "--json"
          ]
        },
        {
          "names": [
            "--pager",
            "-g"
          ],
          "description": "View output through a pager",
          "exclusiveOn": [
            "--no-pager"
          ]
        },
        {
          "names": [
            "--no-pager",
            "-G"
          ],
          "description": "Don't view output through a pager",
          "exclusiveOn": [
            "--pager"
          ]
        }
      ]
    },
    {
      "name": "merge",
      "description": "Perform a merge of the existing frames with a conflicting frames file.  When storing the frames on a file hosting service, there is the possibility that the frame file goes out-of-sync due to one or more of the connected clients going offline. This can cause the frames to diverge",
      "options": [
        {
          "names": [
            "-f",
            "--force"
          ],
          "description": "If specified, then the merge will automatically be performed"
        }
      ],
      "args": [
        {
          "name": "FRAMES_WITH_CONFLICT"
        }
      ]
    },
    {
      "name": "projects",
      "description": "Display the list of all the existing projects"
    },
    {
      "name": "remove",
      "description": "Remove a frame. You can specify the frame either by id or by position (ex: -1 for the last frame)",
      "options": [
        {
          "names": [
            "-f",
            "--force"
          ],
          "description": "Don’t ask for confirmation"
        }
      ],
      "args": [
        {
          "name": "ID",
          "generators": [
            {
              "script": [
                "watson",
                "log",
                "--json",
                "--reverse"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "rename",
      "description": "Rename a project or tag",
      "args": [
        {
          "name": "type",
          "description": "Project or tag",
          "suggestions": [
            "project",
            "tag"
          ]
        },
        {
          "name": "OLD_NAME",
          "generators": [
            {
              "script": [
                "watson",
                "projects"
              ]
            },
            {
              "script": [
                "watson",
                "tags"
              ]
            }
          ]
        },
        {
          "name": "NEW_NAME"
        }
      ]
    },
    {
      "name": "report",
      "description": "Display a report of the time spent on each project",
      "options": [
        {
          "names": [
            "--current",
            "-c"
          ],
          "description": "Include currently running frame in report",
          "exclusiveOn": [
            "--no-current"
          ]
        },
        {
          "names": [
            "--no-current",
            "-C"
          ],
          "description": "Don't include currently running frame in report",
          "exclusiveOn": [
            "--current"
          ]
        },
        {
          "names": [
            "--from",
            "-f"
          ],
          "description": "The date from when the report should start. Defaults to seven days ago",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        },
        {
          "names": [
            "--to",
            "-t"
          ],
          "description": "The date at which the report should stop (inclusive). Defaults to tomorrow",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        },
        {
          "names": [
            "--year",
            "-y"
          ],
          "description": "Reports activity for the current year",
          "exclusiveOn": [
            "--month",
            "--luna",
            "--week",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--month",
            "-m"
          ],
          "description": "Reports activity for the current month",
          "exclusiveOn": [
            "--year",
            "--luna",
            "--week",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--luna",
            "-l"
          ],
          "description": "Reports activity for the current moon cycle",
          "exclusiveOn": [
            "--year",
            "--month",
            "--week",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--week",
            "-w"
          ],
          "description": "Reports activity for the current week",
          "exclusiveOn": [
            "--year",
            "--month",
            "--luna",
            "--day",
            "--all"
          ]
        },
        {
          "names": [
            "--day",
            "-d"
          ],
          "description": "Reports activity for the current day",
          "exclusiveOn": [
            "--year",
            "--month",
            "--luna",
            "--week",
            "--all"
          ]
        },
        {
          "names": [
            "--project",
            "-p"
          ],
          "description": "Reports activity only for the given project. You can add other projects by using this option several times",
          "args": [
            {
              "name": "PROJECT",
              "generators": [
                {
                  "script": [
                    "watson",
                    "projects"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--tag",
            "-T"
          ],
          "description": "Reports activity only for frames containing the given tag. You can add several tags by using this option multiple times",
          "args": [
            {
              "name": "TAG",
              "generators": [
                {
                  "script": [
                    "watson",
                    "tags"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--ignore-project"
          ],
          "description": "Reports activity for all projects but the given ones. You can ignore several projects by using the option multiple times. Any given project will be ignored",
          "args": [
            {
              "name": "PROJECT",
              "generators": [
                {
                  "script": [
                    "watson",
                    "projects"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--ignore-tag"
          ],
          "description": "Reports activity for all tags but the given ones. You can ignore several tags by using the option multiple times. Any given tag will be ignored",
          "args": [
            {
              "name": "TAG",
              "generators": [
                {
                  "script": [
                    "watson",
                    "tags"
                  ]
                }
              ]
            }
          ]
        },
        {
          "names": [
            "--json",
            "-j"
          ],
          "description": "Format output in JSON instead of plain text",
          "exclusiveOn": [
            "--csv"
          ]
        },
        {
          "names": [
            "--csv",
            "-s"
          ],
          "description": "Format output in CSV instead of plain text",
          "exclusiveOn": [
            "--json"
          ]
        },
        {
          "names": [
            "--pager",
            "-g"
          ],
          "description": "View output through a pager",
          "exclusiveOn": [
            "--no-pager"
          ]
        },
        {
          "names": [
            "--no-pager",
            "-G"
          ],
          "description": "Don't view output through a pager",
          "exclusiveOn": [
            "--pager"
          ]
        }
      ]
    },
    {
      "name": "restart",
      "description": "Restart monitoring time for a previously stopped project",
      "options": [
        {
          "names": [
            "--at"
          ],
          "description": "Start frame at this time. Must be in (YYYY-MM-DDT)?HH:MM(:SS)? format",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        },
        {
          "names": [
            "--stop",
            "-s"
          ],
          "description": "Stop an already running project",
          "exclusiveOn": [
            "--no-stop"
          ]
        },
        {
          "names": [
            "--no-stop",
            "-S"
          ],
          "description": "Don't stop an already running project",
          "exclusiveOn": [
            "--stop"
          ]
        }
      ],
      "args": [
        {
          "name": "FRAME",
          "isOptional": true,
          "generators": [
            {
              "script": [
                "watson",
                "log",
                "--json",
                "--reverse"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "start",
      "description": "Start monitoring time for the given project. You can add tags indicating more specifically what you are working on with +tag",
      "options": [
        {
          "names": [
            "--at"
          ],
          "description": "Start frame at this time. Must be in (YYYY-MM-DDT)?HH:MM(:SS)? format",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        },
        {
          "names": [
            "--gap",
            "-g"
          ],
          "description": "Leave gap between end time of previous project and start time of the current",
          "exclusiveOn": [
            "--no-gap"
          ]
        },
        {
          "names": [
            "--no-gap",
            "-G"
          ],
          "description": "Don't leave gap between end time of previous project and start time of the current",
          "exclusiveOn": [
            "--gap"
          ]
        },
        {
          "names": [
            "--confirm-new-project",
            "-c"
          ],
          "description": "Confirm addition of new project"
        },
        {
          "names": [
            "--confirm-new-tag",
            "-b"
          ],
          "description": "Confirm creation of new tag"
        }
      ],
      "args": [
        {
          "name": "ARGS",
          "isVariadic": true,
          "generators": [
            {
              "script": [
                "watson",
                "projects"
              ]
            },
            {
              "script": [
                "watson",
                "tags"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "status",
      "description": "Display when the current project was started and the time spent since",
      "options": [
        {
          "names": [
            "--project",
            "-p"
          ],
          "description": "Only output project",
          "exclusiveOn": [
            "--tags",
            "--elapsed"
          ]
        },
        {
          "names": [
            "--tags",
            "-t"
          ],
          "description": "Only show tags",
          "exclusiveOn": [
            "--project",
            "--elapsed"
          ]
        },
        {
          "names": [
            "--elapsed",
            "-e"
          ],
          "description": "Only show time elapsed",
          "exclusiveOn": [
            "--project",
            "--tags"
          ]
        }
      ]
    },
    {
      "name": "stop",
      "description": "Stop monitoring time for the current project",
      "options": [
        {
          "names": [
            "--at"
          ],
          "description": "Stop frame at this time. Must be in (YYYY-MM-DDT)?HH:MM(:SS)? format",
          "args": [
            {
              "name": "DATETIME"
            }
          ]
        }
      ]
    },
    {
      "name": "sync",
      "description": "Get the frames from the server and push the new ones"
    },
    {
      "name": "tags",
      "description": "Display the list of all the tags"
    }
  ]
}
