id = "watson" name = "Watson" homepage = "https://jazzband.github.io/Watson/" description = "A wonderful CLI to track your time!" executables = ["watson"] [dotfiles] # https://jazzband.github.io/Watson/user-guide/configuration/ — "Watson # configuration and data are stored inside your user's application folder. # Depending on your system, the default path is likely: # MacOSX: ~/Library/Application Support/watson/config # Windows: %appdata%\watson\config # Linux: ~/.config/watson/config" # — one location under three names, which is `[appData]`. It is # watson/watson.py's # self._dir = kwargs.pop('config_dir', None) or click.get_app_dir('watson') # self.config_file = os.path.join(self._dir, 'config') # The same directory holds frames, state and last_sync — the tracked time # itself and the sync bookkeeping, not configuration — so only `config` is # listed. paths = ["[appData]/watson/config"] exclude = [] # Not a whole-file secret: the file is a Python INI of options # (confirm_new_project, date_format, week_start, the backend URL). Only the # token is lifted out. secret = [] # Read at the start of a `watson` invocation and rewritten before it exits. side_effect = false # watson/watson.py, push()/pull(): # dest = config.get('backend', 'url') # token = config.get('backend', 'token') # … 'Authorization': "Token {}".format(token) # and the CLI documents `watson config backend.token 7e329263e329`. Written # under [backend] as a plain `token = …` line, so the prefix is `token`. The # base directory is one path on every platform, so the rule cannot miss a # spelling and let the token sync in the clear. [[dotfiles.secret_paths]] file = "[appData]/watson/config" match = { prefix = ["token"] } [commands] format = 1 label = "Watson time tracker" description = "Start tracking, check status and read the log. Editing, merging and sync commands are left out." quality = "ai-draft" base = "fig:watson" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/watson.ts" license = "MIT" [[commands.subcommand]] path = ["start"] label = "Start tracking" description = "Start monitoring time for a project." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/watson.ts" license = "MIT" [[commands.subcommand.field]] id = "args" label = "Project and tags" description = "Project name followed by +tag entries." type = "string" position = 0 multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "at" label = "Start time" description = "Start frame at this time, (YYYY-MM-DDT)?HH:MM(:SS)?." type = "string" option = ["--at"] sources = ["fig"] [[commands.subcommand.field]] id = "gap" label = "Leave gap after previous frame" type = "boolean" option = ["--gap", "-g"] sources = ["fig"] [[commands.subcommand.field]] id = "no_gap" label = "No gap after previous frame" type = "boolean" option = ["--no-gap", "-G"] sources = ["fig"] [[commands.subcommand.field]] id = "confirm_new_project" label = "Confirm new project" type = "boolean" option = ["--confirm-new-project", "-c"] sources = ["fig"] [[commands.subcommand.field]] id = "confirm_new_tag" label = "Confirm new tag" type = "boolean" option = ["--confirm-new-tag", "-b"] sources = ["fig"] [[commands.subcommand.task]] id = "start" label = "Start project" fields = ["args", "at"] required = ["args"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["args", "at"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["gap", "no_gap", "confirm_new_project", "confirm_new_tag"] [[commands.subcommand]] path = ["status"] label = "Current status" description = "Show what is being tracked now." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/watson.ts" license = "MIT" [[commands.subcommand.field]] id = "project" label = "Only project" type = "boolean" option = ["--project", "-p"] sources = ["fig"] [[commands.subcommand.field]] id = "tags" label = "Only tags" type = "boolean" option = ["--tags", "-t"] sources = ["fig"] [[commands.subcommand.field]] id = "elapsed" label = "Only elapsed time" type = "boolean" option = ["--elapsed", "-e"] sources = ["fig"] [[commands.subcommand.task]] id = "status" label = "Show status" fields = ["project", "tags", "elapsed"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["project", "tags", "elapsed"] [[commands.subcommand]] path = ["log"] label = "Show log" description = "Display recorded frames for a timespan." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/watson.ts" license = "MIT" [[commands.subcommand.field]] id = "day" label = "Current day" type = "boolean" option = ["--day", "-d"] sources = ["fig"] [[commands.subcommand.field]] id = "week" label = "Current week" type = "boolean" option = ["--week", "-w"] sources = ["fig"] [[commands.subcommand.field]] id = "month" label = "Current month" type = "boolean" option = ["--month", "-m"] sources = ["fig"] [[commands.subcommand.field]] id = "year" label = "Current year" type = "boolean" option = ["--year", "-y"] sources = ["fig"] [[commands.subcommand.field]] id = "all" label = "All activity" type = "boolean" option = ["--all", "-a"] sources = ["fig"] [[commands.subcommand.field]] id = "from" label = "From date" type = "string" option = ["--from", "-f"] sources = ["fig"] [[commands.subcommand.field]] id = "to" label = "To date" type = "string" option = ["--to", "-t"] sources = ["fig"] [[commands.subcommand.field]] id = "project" label = "Project filter" type = "string" option = ["--project", "-p"] multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "tag" label = "Tag filter" type = "string" option = ["--tag", "-T"] multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "current" label = "Include running frame" type = "boolean" option = ["--current", "-c"] sources = ["fig"] [[commands.subcommand.field]] id = "reverse" label = "Reverse day order" type = "boolean" option = ["--reverse", "-r"] sources = ["fig"] [[commands.subcommand.field]] id = "json" label = "JSON output" type = "boolean" option = ["--json", "-j"] sources = ["fig"] [[commands.subcommand.field]] id = "csv" label = "CSV output" type = "boolean" option = ["--csv", "-s"] sources = ["fig"] [[commands.subcommand.task]] id = "week" label = "This week" fields = ["week", "project"] set = { week = [true] } [[commands.subcommand.task]] id = "day" label = "Today" fields = ["day"] set = { day = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["day", "week", "month", "project"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["from", "to", "current", "reverse", "json", "csv", "tag", "year", "all"]