const completionSpec: Fig.Spec = {
  name: "doing",
  description: "A CLI for a What Was I Doing system",
  subcommands: [
    {
      name: "again",
      description: "Repeat last entry as new entry",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item to resume from a menu of matching entries",
            
          },

          {
            name: ["--in"],
            description: "Add new entry to section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["--not"],
            description: "Repeat items that *don't* match search/tag filters",
            
          },

          {
            name: ["-s", "--section"],
            description: "Get last entry from a specific section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "resume",
      description: "Repeat last entry as new entry",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item to resume from a menu of matching entries",
            
          },

          {
            name: ["--in"],
            description: "Add new entry to section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["--not"],
            description: "Repeat items that *don't* match search/tag filters",
            
          },

          {
            name: ["-s", "--section"],
            description: "Get last entry from a specific section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "archive",
      description: "Move entries between sections",
      options: [
          {
            name: ["--after"],
            description: "Archive entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--before"],
            description: "Archive entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-k", "--keep"],
            description: "How many items to keep",
            args: {
                  name: "X",
                  description: "X",
            },

          },

          {
            name: ["--label"],
            description: "Label moved items with @from(SECTION_NAME)",
            
          },

          {
            name: ["--not"],
            description: "Archive items that *don't* match search/tag filters",
            
          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--to"],
            description: "Move entries to",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "move",
      description: "Move entries between sections",
      options: [
          {
            name: ["--after"],
            description: "Archive entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--before"],
            description: "Archive entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-k", "--keep"],
            description: "How many items to keep",
            args: {
                  name: "X",
                  description: "X",
            },

          },

          {
            name: ["--label"],
            description: "Label moved items with @from(SECTION_NAME)",
            
          },

          {
            name: ["--not"],
            description: "Archive items that *don't* match search/tag filters",
            
          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--to"],
            description: "Move entries to",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "autotag",
      description: "Autotag last entry or filtered entries",
      options: [
          {
            name: ["--bool"],
            description: "Boolean",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--count"],
            description: "How many recent entries to autotag",
            args: {
                  name: "COUNT",
                  description: "COUNT",
            },

          },

          {
            name: ["--force"],
            description: "Don't ask permission to autotag all entries when count is 0",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item(s) to tag from a menu of matching entries",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Autotag entries matching search filter",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Autotag the last X entries containing TAG",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Autotag last entry",
            
          },

        ],

    },

    {
      name: "cancel",
      description: "End last X entries with no time tracked",
      options: [
          {
            name: ["-a", "--archive"],
            description: "Archive entries",
            
          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select item(s) to cancel from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Cancel items that *don't* match search/tag filters",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Cancel last entry",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "changes",
      description: "List recent changes in Doing",
      options: [
          {
            name: ["-C", "--changes"],
            description: "Only output changes",
            
          },

          {
            name: ["-a", "--all"],
            description: "Display all versions",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Open changelog in interactive viewer",
            
          },

          {
            name: ["-l", "--lookup"],
            description: "Look up a specific version",
            args: {
                  name: "VERSION",
                  description: "VERSION",
            },

          },

          {
            name: ["--markdown"],
            description: "Output raw Markdown",
            
          },

          {
            name: ["--only"],
            description: "Only show changes of type(s)",
            args: {
                  name: "TYPES",
                  description: "TYPES",
            },

          },

          {
            name: ["-p", "--prefix"],
            description: "Include",
            
          },

          {
            name: ["--render"],
            description: "Force rendered output",
            
          },

          {
            name: ["-s", "--search"],
            description: "Show changelogs matching search terms",
            args: {
                  name: "arg",
                  description: "arg",
            },

          },

          {
            name: ["--sort"],
            description: "Sort order",
            args: {
                  name: "ORDER",
                  description: "ORDER",
            },

          },

        ],

    },

    {
      name: "changelog",
      description: "List recent changes in Doing",
      options: [
          {
            name: ["-C", "--changes"],
            description: "Only output changes",
            
          },

          {
            name: ["-a", "--all"],
            description: "Display all versions",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Open changelog in interactive viewer",
            
          },

          {
            name: ["-l", "--lookup"],
            description: "Look up a specific version",
            args: {
                  name: "VERSION",
                  description: "VERSION",
            },

          },

          {
            name: ["--markdown"],
            description: "Output raw Markdown",
            
          },

          {
            name: ["--only"],
            description: "Only show changes of type(s)",
            args: {
                  name: "TYPES",
                  description: "TYPES",
            },

          },

          {
            name: ["-p", "--prefix"],
            description: "Include",
            
          },

          {
            name: ["--render"],
            description: "Force rendered output",
            
          },

          {
            name: ["-s", "--search"],
            description: "Show changelogs matching search terms",
            args: {
                  name: "arg",
                  description: "arg",
            },

          },

          {
            name: ["--sort"],
            description: "Sort order",
            args: {
                  name: "ORDER",
                  description: "ORDER",
            },

          },

        ],

    },

    {
      name: "colors",
      description: "List available color variables for configuration templates and views",
      
    },

    {
      name: "commands",
      description: "Enable and disable Doing commands",
      
    },

    {
      name: "completion",
      description: "Generate shell completion scripts for doing",
      options: [
          {
            name: ["-t", "--type"],
            description: "Deprecated",
            args: {
                  name: "arg",
                  description: "arg",
            },

          },

        ],

    },

    {
      name: "config",
      description: "Edit the configuration file or output a value from it",
      options: [
          {
            name: ["-d", "--dump"],
            description: "DEPRECATED",
            
          },

          {
            name: ["-u", "--update"],
            description: "DEPRECATED",
            
          },

        ],

    },

    {
      name: "done",
      description: "Add a completed item with @done(date)",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["-a", "--archive"],
            description: "Immediately archive the entry",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--finished"],
            description: "Set finish date to specific date/time",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--date"],
            description: "Include date",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["--from"],
            description: "Start and end times as a date/time range `doing done --from \"1am to 8am\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["-r", "--remove"],
            description: "Remove @done tag",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--for"],
            description: "Set completion date to start date plus interval",
            args: {
                  name: "INTERVAL",
                  description: "INTERVAL",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Finish last entry not already marked @done",
            
          },

        ],

    },

    {
      name: "did",
      description: "Add a completed item with @done(date)",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["-a", "--archive"],
            description: "Immediately archive the entry",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--finished"],
            description: "Set finish date to specific date/time",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--date"],
            description: "Include date",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["--from"],
            description: "Start and end times as a date/time range `doing done --from \"1am to 8am\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["-r", "--remove"],
            description: "Remove @done tag",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--for"],
            description: "Set completion date to start date plus interval",
            args: {
                  name: "INTERVAL",
                  description: "INTERVAL",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Finish last entry not already marked @done",
            
          },

        ],

    },

    {
      name: "finish",
      description: "Mark last X entries as @done",
      options: [
          {
            name: ["-a", "--archive"],
            description: "Archive entries",
            
          },

          {
            name: ["--finished"],
            description: "Set finish date to specific date/time",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--auto"],
            description: "Auto-generate finish dates from next entry's start time",
            
          },

          {
            name: ["--started"],
            description: "Backdate completed date to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--date"],
            description: "Include date",
            
          },

          {
            name: ["--from"],
            description: "Start and end times as a date/time range `doing done --from \"1am to 8am\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select item(s) to finish from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Finish items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--remove"],
            description: "Remove @done tag",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--for"],
            description: "Set completion date to start date plus interval",
            args: {
                  name: "INTERVAL",
                  description: "INTERVAL",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Finish last entry",
            
          },

          {
            name: ["--update"],
            description: "Overwrite existing @done tag with new date",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "grep",
      description: "Search for entries",
      options: [
          {
            name: ["--after"],
            description: "Search entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--before"],
            description: "Search entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["-d", "--delete"],
            description: "Delete matching entries",
            
          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit matching entries with vim",
            
          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-h", "--hilite"],
            description: "Highlight search matches in output",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Display an interactive menu of results to perform further operations",
            
          },

          {
            name: ["--not"],
            description: "Search items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact string matching",
            
          },

        ],

    },

    {
      name: "search",
      description: "Search for entries",
      options: [
          {
            name: ["--after"],
            description: "Search entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--before"],
            description: "Search entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["-d", "--delete"],
            description: "Delete matching entries",
            
          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit matching entries with vim",
            
          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-h", "--hilite"],
            description: "Highlight search matches in output",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Display an interactive menu of results to perform further operations",
            
          },

          {
            name: ["--not"],
            description: "Search items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact string matching",
            
          },

        ],

    },

    {
      name: "help",
      description: "Shows a list of commands or help for one command",
      options: [
          
        ],

    },

    {
      name: "import",
      description: "Import entries from an external source",
      options: [
          {
            name: ["--after"],
            description: "Import entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--autotag"],
            description: "Autotag entries",
            
          },

          {
            name: ["--before"],
            description: "Import entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["--not"],
            description: "Import items that *don't* match search/tag/date filters",
            
          },

          {
            name: ["--only_timed"],
            description: "Only import items with recorded time intervals",
            
          },

          {
            name: ["--overlap"],
            description: "Allow entries that overlap existing times",
            
          },

          {
            name: ["--prefix"],
            description: "Prefix entries with",
            args: {
                  name: "PREFIX",
                  description: "PREFIX",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Target section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--tag"],
            description: "Tag all imported entries",
            args: {
                  name: "TAGS",
                  description: "TAGS",
            },

          },

          {
            name: ["--type"],
            description: "Import type",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "last",
      description: "Show the last entry",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["-d", "--delete"],
            description: "Delete the last entry",
            
          },

          {
            name: ["--duration"],
            description: "Show elapsed time if entry is not tagged @done",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-h", "--hilite"],
            description: "Highlight search matches in output",
            
          },

          {
            name: ["--not"],
            description: "Show items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Specify a section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "mark",
      description: "Mark last entry as flagged",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--count"],
            description: "How many recent entries to tag",
            args: {
                  name: "COUNT",
                  description: "COUNT",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-d", "--date"],
            description: "Include current date/time with tag",
            
          },

          {
            name: ["--force"],
            description: "Don't ask permission to flag all entries when count is 0",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item(s) to flag from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Flag items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--remove"],
            description: "Remove flag",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Flag last entry",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "flag",
      description: "Mark last entry as flagged",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--count"],
            description: "How many recent entries to tag",
            args: {
                  name: "COUNT",
                  description: "COUNT",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-d", "--date"],
            description: "Include current date/time with tag",
            
          },

          {
            name: ["--force"],
            description: "Don't ask permission to flag all entries when count is 0",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item(s) to flag from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Flag items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--remove"],
            description: "Remove flag",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Flag last entry",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "meanwhile",
      description: "Finish any running @meanwhile tasks and optionally create a new one",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["-a", "--archive"],
            description: "Archive previous @meanwhile entry",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

        ],

    },

    {
      name: "note",
      description: "Add a note to the last entry",
      options: [
          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item for new note from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Note items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--remove"],
            description: "Replace/Remove last entry's note",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "now",
      description: "Add an entry",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-f", "--finish_last"],
            description: "Timed entry",
            
          },

          {
            name: ["--from"],
            description: "Set a start and optionally end time as a date range",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

        ],

    },

    {
      name: "next",
      description: "Add an entry",
      options: [
          {
            name: ["-X", "--noauto"],
            description: "Exclude auto tags and default tags",
            
          },

          {
            name: ["--ask"],
            description: "Prompt for note via multi-line input",
            
          },

          {
            name: ["--started"],
            description: "Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Edit entry with vim",
            
          },

          {
            name: ["-f", "--finish_last"],
            description: "Timed entry",
            
          },

          {
            name: ["--from"],
            description: "Set a start and optionally end time as a date range",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-n", "--note"],
            description: "Include a note",
            args: {
                  name: "TEXT",
                  description: "TEXT",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

        ],

    },

    {
      name: "on",
      description: "List entries for a date",
      options: [
          {
            name: ["--after"],
            description: "View entries after specified time",
            args: {
                  name: "TIME_STRING",
                  description: "TIME_STRING",
            },

          },

          {
            name: ["--before"],
            description: "View entries before specified time",
            args: {
                  name: "TIME_STRING",
                  description: "TIME_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["--from"],
            description: "Time range to show `doing on --from \"12pm to 4pm\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["--not"],
            description: "Show items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "open",
      description: "Open the \"doing\" file in an editor",
      options: [
          {
            name: ["-a", "--app"],
            description: "Open with app name",
            args: {
                  name: "APP_NAME",
                  description: "APP_NAME",
            },

          },

          {
            name: ["-b", "--bundle_id"],
            description: "Open with app bundle id",
            args: {
                  name: "BUNDLE_ID",
                  description: "BUNDLE_ID",
            },

          },

          {
            name: ["-e", "--editor"],
            description: "Open with editor command",
            args: {
                  name: "COMMAND",
                  description: "COMMAND",
            },

          },

        ],

    },

    {
      name: "plugins",
      description: "List installed plugins",
      options: [
          {
            name: ["-c", "--column"],
            description: "List in single column for completion",
            
          },

          {
            name: ["-t", "--type"],
            description: "List plugins of type",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

        ],

    },

    {
      name: "recent",
      description: "List recent entries",
      options: [
          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select from a menu of matching entries to perform additional operations",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

        ],

    },

    {
      name: "redo",
      description: "Redo an undo command",
      options: [
          {
            name: ["-f", "--file"],
            description: "Specify alternate doing file",
            args: {
                  name: "PATH",
                  description: "PATH",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select from an interactive menu",
            
          },

        ],

    },

    {
      name: "reset",
      description: "Reset the start time of an entry",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--from"],
            description: "Start and end times as a date/time range `doing done --from \"1am to 8am\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Reset items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--resume"],
            description: "Resume entry",
            
          },

          {
            name: ["-s", "--section"],
            description: "Limit search to section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--for"],
            description: "Set completion date to start date plus interval",
            args: {
                  name: "INTERVAL",
                  description: "INTERVAL",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "begin",
      description: "Reset the start time of an entry",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--from"],
            description: "Start and end times as a date/time range `doing done --from \"1am to 8am\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Reset items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--resume"],
            description: "Resume entry",
            
          },

          {
            name: ["-s", "--section"],
            description: "Limit search to section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--for"],
            description: "Set completion date to start date plus interval",
            args: {
                  name: "INTERVAL",
                  description: "INTERVAL",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "rotate",
      description: "Move entries to archive file",
      options: [
          {
            name: ["--before"],
            description: "Rotate entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-k", "--keep"],
            description: "How many items to keep in each section",
            args: {
                  name: "X",
                  description: "X",
            },

          },

          {
            name: ["--not"],
            description: "Rotate items that *don't* match search/tag filters",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section to rotate",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "sections",
      description: "List",
      
    },

    {
      name: "select",
      description: "Display an interactive menu to perform operations",
      options: [
          {
            name: ["-a", "--archive"],
            description: "Archive selected items",
            
          },

          {
            name: ["--after"],
            description: "Select entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--resume"],
            description: "Copy selection as a new entry with current time and no @done tag",
            
          },

          {
            name: ["--before"],
            description: "Select entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["-c", "--cancel"],
            description: "Cancel selected items",
            
          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-d", "--delete"],
            description: "Delete selected items",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit selected item(s)",
            
          },

          {
            name: ["-f", "--finish"],
            description: "Add @done with current time to selected item(s)",
            
          },

          {
            name: ["--flag"],
            description: "Add flag to selected item(s)",
            
          },

          {
            name: ["--force"],
            description: "Perform action without confirmation",
            
          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-m", "--move"],
            description: "Move selected items to section",
            args: {
                  name: "SECTION",
                  description: "SECTION",
            },

          },

          {
            name: ["--menu"],
            description: "Use --no-menu to skip the interactive menu",
            
          },

          {
            name: ["--not"],
            description: "Select items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output entries to format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["-q", "--query"],
            description: "Initial search query for filtering",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-r", "--remove"],
            description: "Reverse -c",
            
          },

          {
            name: ["-s", "--section"],
            description: "Select from a specific section",
            args: {
                  name: "SECTION",
                  description: "SECTION",
            },

          },

          {
            name: ["--save_to"],
            description: "Save selected entries to file using --output format",
            args: {
                  name: "FILE",
                  description: "FILE",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--tag"],
            description: "Tag selected entries",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "show",
      description: "List all entries",
      options: [
          {
            name: ["-a", "--age"],
            description: "Age",
            args: {
                  name: "AGE",
                  description: "AGE",
            },

          },

          {
            name: ["--after"],
            description: "Show entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--before"],
            description: "Show entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--count"],
            description: "Max count to show",
            args: {
                  name: "MAX",
                  description: "MAX",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Edit matching entries with vim",
            
          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-h", "--hilite"],
            description: "Highlight search matches in output",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select from a menu of matching entries to perform additional operations",
            
          },

          {
            name: ["-m", "--menu"],
            description: "Select section or tag to display from a menu",
            
          },

          {
            name: ["--not"],
            description: "Show items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--sort"],
            description: "Sort order",
            args: {
                  name: "ORDER",
                  description: "ORDER",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "since",
      description: "List entries since a date",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["--not"],
            description: "Since items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "tag",
      description: "Add tag(s) to last entry",
      options: [
          {
            name: ["-a", "--autotag"],
            description: "Autotag entries based on autotag configuration in ~/",
            
          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--count"],
            description: "How many recent entries to tag",
            args: {
                  name: "COUNT",
                  description: "COUNT",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-d", "--date"],
            description: "Include current date/time with tag",
            
          },

          {
            name: ["--force"],
            description: "Don't ask permission to tag all entries when count is 0",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select item(s) to tag from a menu of matching entries",
            
          },

          {
            name: ["--not"],
            description: "Tag items that *don't* match search/tag filters",
            
          },

          {
            name: ["-r", "--remove"],
            description: "Remove given tag(s)",
            
          },

          {
            name: ["--regex"],
            description: "Interpret tag string as regular expression",
            
          },

          {
            name: ["--rename"],
            description: "Replace existing tag with tag argument",
            args: {
                  name: "ORIG_TAG",
                  description: "ORIG_TAG",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["-u", "--unfinished"],
            description: "Tag last entry",
            
          },

          {
            name: ["-v", "--value"],
            description: "Include a value",
            args: {
                  name: "VALUE",
                  description: "VALUE",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "tag_dir",
      description: "Set the default tags for the current directory",
      options: [
          {
            name: ["--clear"],
            description: "Remove all default_tags from the local",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Use default editor to edit tag list",
            
          },

          {
            name: ["-r", "--remove"],
            description: "Delete tag(s) from the current list",
            
          },

        ],

    },

    {
      name: "tags",
      description: "List all tags in the current Doing file",
      options: [
          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--counts"],
            description: "Show count of occurrences",
            
          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select items to scan from a menu of matching entries",
            
          },

          {
            name: ["-l", "--line"],
            description: "Output in a single line with @ symbols",
            
          },

          {
            name: ["--not"],
            description: "Show items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--order"],
            description: "Sort order",
            args: {
                  name: "ORDER",
                  description: "ORDER",
            },

          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--sort"],
            description: "Sort by name or count",
            args: {
                  name: "SORT_ORDER",
                  description: "SORT_ORDER",
            },

          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "template",
      description: "Output HTML",
      options: [
          {
            name: ["-c", "--column"],
            description: "List in single column for completion",
            
          },

          {
            name: ["-l", "--list"],
            description: "List all available templates",
            
          },

          {
            name: ["-p", "--path"],
            description: "Save template to alternate location",
            args: {
                  name: "DIRECTORY",
                  description: "DIRECTORY",
            },

          },

          {
            name: ["-s", "--save"],
            description: "Save template to file instead of STDOUT",
            
          },

        ],

    },

    {
      name: "test",
      description: "Test Stuff",
      
    },

    {
      name: "today",
      description: "List entries from today",
      options: [
          {
            name: ["--after"],
            description: "View entries after specified time",
            args: {
                  name: "TIME_STRING",
                  description: "TIME_STRING",
            },

          },

          {
            name: ["--before"],
            description: "View entries before specified time",
            args: {
                  name: "TIME_STRING",
                  description: "TIME_STRING",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["--from"],
            description: "Time range to show `doing today --from \"12pm to 4pm\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Specify a section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

        ],

    },

    {
      name: "undo",
      description: "Undo the last X changes to the Doing file",
      options: [
          {
            name: ["-f", "--file"],
            description: "Specify alternate doing file",
            args: {
                  name: "PATH",
                  description: "PATH",
            },

          },

          {
            name: ["-i", "--interactive"],
            description: "Select from recent backups",
            
          },

          {
            name: ["-p", "--prune"],
            description: "Remove old backups",
            args: {
                  name: "COUNT",
                  description: "COUNT",
            },

          },

          {
            name: ["-r", "--redo"],
            description: "Redo last undo",
            
          },

        ],

    },

    {
      name: "view",
      description: "Display a user-created view",
      options: [
          {
            name: ["--after"],
            description: "Show entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--age"],
            description: "Age",
            args: {
                  name: "AGE",
                  description: "AGE",
            },

          },

          {
            name: ["--before"],
            description: "Show entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["--bool"],
            description: "Boolean used to combine multiple tags",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["-c", "--count"],
            description: "Count to display",
            args: {
                  name: "COUNT",
                  description: "COUNT",
            },

          },

          {
            name: ["--case"],
            description: "Case sensitivity for search string matching [(c)ase-sensitive",
            args: {
                  name: "TYPE",
                  description: "TYPE",
            },

          },

          {
            name: ["--color"],
            description: "Include colors in output",
            
          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["--from"],
            description: "Date range",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["-h", "--hilite"],
            description: "Highlight search matches in output",
            
          },

          {
            name: ["-i", "--interactive"],
            description: "Select from a menu of matching entries to perform additional operations",
            
          },

          {
            name: ["--not"],
            description: "Show items that *don't* match search/tag filters",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--search"],
            description: "Filter entries using a search query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag"],
            description: "Filter entries by tag",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--totals"],
            description: "Show intervals with totals at the end of output",
            
          },

          {
            name: ["--val"],
            description: "Perform a tag value query",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["-x", "--exact"],
            description: "Force exact search string matching",
            
          },

        ],

    },

    {
      name: "views",
      description: "List available custom views",
      options: [
          {
            name: ["-c", "--column"],
            description: "List in single column",
            
          },

          {
            name: ["-e", "--editor"],
            description: "Open YAML for view in editor",
            
          },

          {
            name: ["-o", "--output"],
            description: "Output/edit view in alternative format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["-r", "--remove"],
            description: "Delete view config",
            
          },

        ],

    },

    {
      name: "wiki",
      description: "Output a tag wiki",
      options: [
          {
            name: ["--after"],
            description: "Include entries newer than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["-b", "--bool"],
            description: "Tag boolean",
            args: {
                  name: "BOOLEAN",
                  description: "BOOLEAN",
            },

          },

          {
            name: ["--before"],
            description: "Include entries older than date",
            args: {
                  name: "DATE_STRING",
                  description: "DATE_STRING",
            },

          },

          {
            name: ["-f", "--from"],
            description: "Date range to include",
            args: {
                  name: "DATE_OR_RANGE",
                  description: "DATE_OR_RANGE",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Section to rotate",
            args: {
                  name: "SECTION_NAME",
                  description: "SECTION_NAME",
            },

          },

          {
            name: ["--search"],
            description: "Search filter",
            args: {
                  name: "QUERY",
                  description: "QUERY",
            },

          },

          {
            name: ["--tag"],
            description: "Tag filter",
            args: {
                  name: "TAG",
                  description: "TAG",
            },

          },

        ],

    },

    {
      name: "yesterday",
      description: "List entries from yesterday",
      options: [
          {
            name: ["--after"],
            description: "View entries after specified time",
            args: {
                  name: "TIME_STRING",
                  description: "TIME_STRING",
            },

          },

          {
            name: ["--before"],
            description: "View entries before specified time",
            args: {
                  name: "TIME_STRING",
                  description: "TIME_STRING",
            },

          },

          {
            name: ["--config_template"],
            description: "Output using a template from configuration",
            args: {
                  name: "TEMPLATE_KEY",
                  description: "TEMPLATE_KEY",
            },

          },

          {
            name: ["--duration"],
            description: "Show elapsed time on entries without @done tag",
            
          },

          {
            name: ["--from"],
            description: "Time range to show `doing yesterday --from \"12pm to 4pm\"`",
            args: {
                  name: "TIME_RANGE",
                  description: "TIME_RANGE",
            },

          },

          {
            name: ["-o", "--output"],
            description: "Output to export format",
            args: {
                  name: "FORMAT",
                  description: "FORMAT",
            },

          },

          {
            name: ["--only_timed"],
            description: "Only show items with recorded time intervals",
            
          },

          {
            name: ["-s", "--section"],
            description: "Specify a section",
            args: {
                  name: "NAME",
                  description: "NAME",
            },

          },

          {
            name: ["--save"],
            description: "Save all current command line options as a new view",
            args: {
                  name: "VIEW_NAME",
                  description: "VIEW_NAME",
            },

          },

          {
            name: ["-t", "--times"],
            description: "Show time intervals on @done tasks",
            
          },

          {
            name: ["--tag_order"],
            description: "Tag sort direction",
            args: {
                  name: "DIRECTION",
                  description: "DIRECTION",
            },

          },

          {
            name: ["--tag_sort"],
            description: "Sort tags by",
            args: {
                  name: "KEY",
                  description: "KEY",
            },

          },

          {
            name: ["--template"],
            description: "Override output format with a template string containing %placeholders",
            args: {
                  name: "TEMPLATE_STRING",
                  description: "TEMPLATE_STRING",
            },

          },

          {
            name: ["--title"],
            description: "Title string to be used for output formats that require it",
            args: {
                  name: "TITLE",
                  description: "TITLE",
            },

          },

          {
            name: ["--totals"],
            description: "Show time totals at the end of output",
            
          },

        ],

    },

  ],
};
export default completionSpec;