Smos Logo Smos

A comprehensive self-management system

The Smos Query Tool

Documentation for the Smos Query tool, for querying the entries in your workflow

The smos editor comes with some handy companion tools. smos-query is one of those and it is a query tool for your .smos files.

File structure

The smos-query tool operates in the workflow directory. See the directories documentation for more information. The smos-query tool will only consider the contents of the workflow directory for its functionality.

Reference

Options

  --config-file Path to the configuration file
  entry Run a custom report with given filter, sorter, ...
      FILTER            A filter to filter entries by                                            
      FILTER            A filter to filter entries by                                            
      --columns         The columns in the report     default: OntoFile :| [OntoState,OntoHeader]
      --sort            A sorter to sort entries by                                              
      --sort            A sorter to sort entries by                                              
      --hide-archive    Hide archived files                                                      
      --show-archive|-a Do not hide archived files                                               
      --pretty          pretty text                                                              
      --yaml            Yaml                                                                     
      --json            single-line JSON                                                         
      --pretty-json     pretty JSON                   default: pretty                            
  report Run a prepared report
      NAME          name of the report                
      --pretty      pretty text                       
      --yaml        Yaml                              
      --json        single-line JSON                  
      --pretty-json pretty JSON        default: pretty
  waiting Run the waiting report
      FILTER            A filter to filter entries by                                      
      FILTER            A filter to filter entries by                                      
      --hide-archive    Hide archived files                                                
      --show-archive|-a Do not hide archived files                                         
      --threshold       The threshold at which to color waiting entries red default: Days 7
  next Run the next actions report
      FILTER            A filter to filter entries by
      FILTER            A filter to filter entries by
      --hide-archive    Hide archived files          
      --show-archive|-a Do not hide archived files   
  ongoing Show ongoing entries
      FILTER            A filter to filter entries by
      FILTER            A filter to filter entries by
      --hide-archive    Hide archived files          
      --show-archive|-a Do not hide archived files   
  clock Run the clock report
      FILTER            A filter to filter entries by                                                          
      FILTER            A filter to filter entries by                                                          
      --begin           start date (inclusive)                                                                 
      --end             end time (inclusive)                                                                   
      --yesterday       yesterday                                                                              
      --today           today                                                                                  
      --tomorrow        tomorrow                                                                               
      --last-week       last week                                                                              
      --past-week       the past week                                                                          
      --this-week       this week                                                                              
      --coming-week     the coming week                                                                        
      --next-week       next week                                                                              
      --last-month      last month                                                                             
      --past-month      the past month                                                                         
      --this-month      this month                                                                             
      --coming-month    the coming month                                                                       
      --next-month      next month                                                                             
      --last-year       last year                                                                              
      --past-year       the past year                                                                          
      --this-year       this year                                                                              
      --coming-year     the coming year                                                                        
      --next-year       next year                                                                              
      --all-time        all time                                                              default: AllTime 
      --day-block       blocks of one day                                                                      
      --week-block      blocks of one week                                                                     
      --month-block     blocks of one month                                                                    
      --year-block      blocks of one year                                                                     
      --one-block       a single block                                                        default: OneBlock
      --pretty          pretty text                                                                            
      --yaml            Yaml                                                                                   
      --json            single-line JSON                                                                       
      --pretty-json     pretty JSON                                                           default: pretty  
      --temporal        Show the clocks with a temporal resolution (hours and minutes)                         
      --seconds         Show clocks in seconds                                                                 
      --minutes         Show clocks in minutes                                                                 
      --hours           Show clocks in hours                                                  default: minutes 
      --decimal         Show the clocks with a decimal resolution (hours and tenths of hours)                  
      --hours           Show clocks in a decimal number of hours                                               
      --quarters        Show clocks in a decimal number of quarter hours                                       
      --decimals        Show clocks in a decimal manner, with this many decimals              default: 2       
      --forest          Show the clocks as a forest                                                            
      --flat            Show the clocks line by line                                          default: forest  
      --hide-archive    Hide archived files                                                                    
      --show-archive|-a Do not hide archived files                                                             
  agenda Show timestamps in an agenda
      FILTER            A filter to filter entries by                              
      FILTER            A filter to filter entries by                              
      --historical      Select all entries                                         
      --future          Select only entries in the future default: HistoricalAgenda
      --hide-archive    Hide archived files                                        
      --show-archive|-a Do not hide archived files                                 
      --begin           start date (inclusive)                                     
      --end             end time (inclusive)                                       
      --yesterday       yesterday                                                  
      --today           today                                                      
      --tomorrow        tomorrow                                                   
      --last-week       last week                                                  
      --past-week       the past week                                              
      --this-week       this week                                                  
      --coming-week     the coming week                                            
      --next-week       next week                                                  
      --last-month      last month                                                 
      --past-month      the past month                                             
      --this-month      this month                                                 
      --coming-month    the coming month                                           
      --next-month      next month                                                 
      --last-year       last year                                                  
      --past-year       the past year                                              
      --this-year       this year                                                  
      --coming-year     the coming year                                            
      --next-year       next year                                                  
      --all-time        all time                          default: all             
      --day-block       blocks of one day                                          
      --week-block      blocks of one week                                         
      --month-block     blocks of one month                                        
      --year-block      blocks of one year                                         
      --one-block       a single block                                             
  projects Run the projects overview
      FILTER A filter to filter projects by
  stuck Run the stuck projects report
      FILTER      A filter to filter projects by                                     
      --threshold The threshold at which to color stuck projects red default: Weeks 3
  work Run the work report
      CONTEXT             The context that you are in                                                                                                                                                                                                                           
      TIME_FILTER         A filter to filter by time                                                                                                                                                                                                                            
      --time-filter       The property to use to filter by time                                                                                                                                                                                                                 
      --base-filter       The base work filter                                default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
      -f|--filter         A filter to filter entries by                                                                                                                                                                                                                         
      -f|--filter         A filter to filter entries by                                                                                                                                                                                                                         
      --columns           The columns in the report                           default: OntoFile :| [OntoState,OntoHeader]                                                                                                                                                       
      --sort              A sorter to sort entries by                                                                                                                                                                                                                           
      --sort              A sorter to sort entries by                                                                                                                                                                                                                           
      --hide-archive      Hide archived files                                                                                                                                                                                                                                   
      --show-archive|-a   Do not hide archived files                                                                                                                                                                                                                            
      --waiting-threshold The threshold at which to color waiting entries red default: Days 7                                                                                                                                                                                   
      --stuck-threshold   The threshold at which to color stuck projects red  default: Weeks 3                                                                                                                                                                                  
  free Find a free slot for a meeting
      --begin           start date (inclusive)                                                  
      --end             end time (inclusive)                                                    
      --yesterday       yesterday                                                               
      --today           today                                                                   
      --tomorrow        tomorrow                                                                
      --last-week       last week                                                               
      --past-week       the past week                                                           
      --this-week       this week                                                               
      --coming-week     the coming week                                                         
      --next-week       next week                                                               
      --last-month      last month                                                              
      --past-month      the past month                                                          
      --this-month      this month                                                              
      --coming-month    the coming month                                                        
      --next-month      next month                                                              
      --last-year       last year                                                               
      --past-year       the past year                                                           
      --this-year       this year                                                               
      --coming-year     the coming year                                                         
      --next-year       next year                                                               
      --all-time        all time                                             default: ComingWeek
      TIME              Minimum amount of free time to show a free time slot                    
      --hide-archive    Hide archived files                                                     
      --show-archive|-a Do not hide archived files                                              
      --earliest        Earliest time of day                                                    
      --latest          Latest time of day                                                      
  log Show a log of what has happened
      FILTER            A filter to filter entries by                  
      FILTER            A filter to filter entries by                  
      --begin           start date (inclusive)                         
      --end             end time (inclusive)                           
      --yesterday       yesterday                                      
      --today           today                                          
      --tomorrow        tomorrow                                       
      --last-week       last week                                      
      --past-week       the past week                                  
      --this-week       this week                                      
      --coming-week     the coming week                                
      --next-week       next week                                      
      --last-month      last month                                     
      --past-month      the past month                                 
      --this-month      this month                                     
      --coming-month    the coming month                               
      --next-month      next month                                     
      --last-year       last year                                      
      --past-year       the past year                                  
      --this-year       this year                                      
      --coming-year     the coming year                                
      --next-year       next year                                      
      --all-time        all time                      default: Today   
      --day-block       blocks of one day                              
      --week-block      blocks of one week                             
      --month-block     blocks of one month                            
      --year-block      blocks of one year                             
      --one-block       a single block                default: DayBlock
      --hide-archive    Hide archived files                            
      --show-archive|-a Do not hide archived files                     
  stats Show statitistics about entries being changed
      --begin        start date (inclusive)                 
      --end          end time (inclusive)                   
      --yesterday    yesterday                              
      --today        today                                  
      --tomorrow     tomorrow                               
      --last-week    last week                              
      --past-week    the past week                          
      --this-week    this week                              
      --coming-week  the coming week                        
      --next-week    next week                              
      --last-month   last month                             
      --past-month   the past month                         
      --this-month   this month                             
      --coming-month the coming month                       
      --next-month   next month                             
      --last-year    last year                              
      --past-year    the past year                          
      --this-year    this year                              
      --coming-year  the coming year                        
      --next-year    next year                              
      --all-time     all time               default: AllTime
  tags List all the tags that are in use
      FILTER            A filter to filter entries by
      FILTER            A filter to filter entries by
      --hide-archive    Hide archived files          
      --show-archive|-a Do not hide archived files   
  --workflow-dir The workflow directory
  --archive-dir The archive directory
  --projects-dir The projects directory
  --archived-projects-dir The archived projects directory

Environment variables

  SMOS_CONFIG_FILE FILE_PATH                  Path to the configuration file                                                                                                                                                                                                                          
  SMOS_ENTRY_COLUMNS COLUMNS                  The columns in the report                             default: OntoFile :| [OntoState,OntoHeader]                                                                                                                                                       
  SMOS_ENTRY_SORTER SORTER                    A sorter to sort entries by                                                                                                                                                                                                                             
  SMOS_ENTRY_IGNORE_ARCHIVE BOOL              Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WAITING_IGNORE_ARCHIVE BOOL            Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WAITING_THRESHOLD TIME                 The threshold at which to color waiting entries red   default: Days 7                                                                                                                                                                                   
  SMOS_NEXT_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_ONGOING_IGNORE_ARCHIVE BOOL            Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_CLOCK_IGNORE_ARCHIVE BOOL              Whether to consider archived entries                  default: Don'tHideArchive                                                                                                                                                                         
  SMOS_AGENDA_IGNORE_ARCHIVE BOOL             Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_STUCK_THRESHOLD TIME                   The threshold at which to color stuck projects red    default: Weeks 3                                                                                                                                                                                  
  SMOS_WORK_CONTEXT CONTEXT                   The context that you are in                                                                                                                                                                                                                             
  SMOS_WORK_TIME TIME_FILTER                  A filter to filter by time                                                                                                                                                                                                                              
  SMOS_WORK_TIME_FILTER PROPERTY_NAME         The property to use to filter by time                                                                                                                                                                                                                   
  SMOS_WORK_BASE_FILTER FILTER                The base work filter                                  default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
  SMOS_WORK_FILTER FILTER                     A filter to filter entries by                                                                                                                                                                                                                           
  SMOS_WORK_COLUMNS COLUMNS                   The columns in the report                             default: OntoFile :| [OntoState,OntoHeader]                                                                                                                                                       
  SMOS_WORK_SORTER SORTER                     A sorter to sort entries by                                                                                                                                                                                                                             
  SMOS_WORK_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WAITING_THRESHOLD TIME                 The threshold at which to color waiting entries red   default: Days 7                                                                                                                                                                                   
  SMOS_STUCK_THRESHOLD TIME                   The threshold at which to color stuck projects red    default: Weeks 3                                                                                                                                                                                  
  SMOS_FREE_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_LOG_IGNORE_ARCHIVE BOOL                Whether to consider archived entries                  default: Don'tHideArchive                                                                                                                                                                         
  SMOS_TAGS_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WORKFLOW_DIR DIRECTORY_PATH            The workflow directory                                                                                                                                                                                                                                  
  SMOS_ARCHIVE_DIR DIRECTORY_PATH             The archive directory                                                                                                                                                                                                                                   
  SMOS_PROJECTS_DIR DIRECTORY_PATH            The projects directory                                                                                                                                                                                                                                  
  SMOS_ARCHIVED_PROJECTS_DIR DIRECTORY_PATH   The archived projects directory                                                                                                                                                                                                                         

Configuration values

  The columns in the report
  default: OntoFile :| [OntoState,OntoHeader]
  entry.columns:
    # or null
    - def: Projection
      # A column (projection) is a string of one of the following forms:
      # 
      # file
      # state
      # header
      # tag:<tag-name>
      # property:<property-name>
      # timestamp:<timestamp-name>
      # ancestor:<projection>
      <string>
  A sorter to sort entries by
  entry.sorter:
    # any of
    [ null
    , def: Sorter
      # A sorter is a string of one of the following forms:
      # 
      # file
      # header
      # state
      # tag:<tag>
      # property:<property-name>
      # property-as-time:<property-name>
      # timestamp:<timestamp-name>
      # reverse:<sorter>
      # (<sorter> then <sorter>)
      <string>
    , - ref: Sorter
    ]
  Whether to consider archived entries
  default: HideArchive
  entry.hide-archive:
    # or null
    <boolean>
  available reports
  default: fromList []
  report.reports:
    # or null
    <key>: 
      # PreparedReport
      description: # optional
        # A description of the report
        # or null
        <string>
      filter: # optional
        # The entry filter to get the results in the report
        # or null
        def: EntryFilter
        # A filter is a string of one of the following forms:
        # 
        # tag:<tag>
        # state:<state>
        # file:<file>
        # level:<level>
        # header:<header>
        # property:<property-name>
        # property:<property-name>:<property-value>
        # property:<property-name>:time:<comparison>:<time>
        # parent:<filter>
        # ancestor:<filter>
        # child:<filter>
        # legacy:<filter>
        # not:<filter>
        # (<filter> and <filter>)
        # (<filter> or <filter>)
        <string>
      columns: # optional
        # The columns of the report
        # or null
        - def: Projection
          # A column (projection) is a string of one of the following forms:
          # 
          # file
          # state
          # header
          # tag:<tag-name>
          # property:<property-name>
          # timestamp:<timestamp-name>
          # ancestor:<projection>
          <string>
      sorter: # optional
        # The sorter to sort the rows of the report by
        # or null
        def: Sorter
        # A sorter is a string of one of the following forms:
        # 
        # file
        # header
        # state
        # tag:<tag>
        # property:<property-name>
        # property-as-time:<property-name>
        # timestamp:<timestamp-name>
        # reverse:<sorter>
        # (<sorter> then <sorter>)
        <string>
      hide-archive: # optional
        # Whether to consider the archive for the report
        # or null
        <boolean>
  Whether to consider archived entries
  default: HideArchive
  waiting.hide-archive:
    # or null
    <boolean>
  The threshold at which to color waiting entries red
  default: Days 7
  waiting.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  Whether to consider archived entries
  default: HideArchive
  next.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: HideArchive
  ongoing.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: Don'tHideArchive
  clock.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: HideArchive
  agenda.hide-archive:
    # or null
    <boolean>
  The threshold at which to color stuck projects red
  default: Weeks 3
  stuck.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  The context that you are in
  work.context:
    # or null
    <string>
  Contexts for the work report
  default: fromList []
  work.contexts:
    # or null
    <key>: 
      def: EntryFilter
      # A filter is a string of one of the following forms:
      # 
      # tag:<tag>
      # state:<state>
      # file:<file>
      # level:<level>
      # header:<header>
      # property:<property-name>
      # property:<property-name>:<property-value>
      # property:<property-name>:time:<comparison>:<time>
      # parent:<filter>
      # ancestor:<filter>
      # child:<filter>
      # legacy:<filter>
      # not:<filter>
      # (<filter> and <filter>)
      # (<filter> or <filter>)
      <string>
  Checks for the work report
  default: fromList []
  work.checks:
    # or null
    - def: EntryFilter
      # A filter is a string of one of the following forms:
      # 
      # tag:<tag>
      # state:<state>
      # file:<file>
      # level:<level>
      # header:<header>
      # property:<property-name>
      # property:<property-name>:<property-value>
      # property:<property-name>:time:<comparison>:<time>
      # parent:<filter>
      # ancestor:<filter>
      # child:<filter>
      # legacy:<filter>
      # not:<filter>
      # (<filter> and <filter>)
      # (<filter> or <filter>)
      <string>
  A filter to filter by time
  work.time:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  The property to use to filter by time
  work.time-filter:
    # or null
    def: PropertyName
    <string>
  The base work filter
  default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
  work.base-filter:
    # or null
    def: EntryFilter
    # A filter is a string of one of the following forms:
    # 
    # tag:<tag>
    # state:<state>
    # file:<file>
    # level:<level>
    # header:<header>
    # property:<property-name>
    # property:<property-name>:<property-value>
    # property:<property-name>:time:<comparison>:<time>
    # parent:<filter>
    # ancestor:<filter>
    # child:<filter>
    # legacy:<filter>
    # not:<filter>
    # (<filter> and <filter>)
    # (<filter> or <filter>)
    <string>
  A filter to filter entries by
  work.filter:
    # any of
    [ null
    , def: EntryFilter
      # A filter is a string of one of the following forms:
      # 
      # tag:<tag>
      # state:<state>
      # file:<file>
      # level:<level>
      # header:<header>
      # property:<property-name>
      # property:<property-name>:<property-value>
      # property:<property-name>:time:<comparison>:<time>
      # parent:<filter>
      # ancestor:<filter>
      # child:<filter>
      # legacy:<filter>
      # not:<filter>
      # (<filter> and <filter>)
      # (<filter> or <filter>)
      <string>
    , - ref: EntryFilter
    ]
  The columns in the report
  default: OntoFile :| [OntoState,OntoHeader]
  work.columns:
    # or null
    - def: Projection
      # A column (projection) is a string of one of the following forms:
      # 
      # file
      # state
      # header
      # tag:<tag-name>
      # property:<property-name>
      # timestamp:<timestamp-name>
      # ancestor:<projection>
      <string>
  A sorter to sort entries by
  work.sorter:
    # any of
    [ null
    , def: Sorter
      # A sorter is a string of one of the following forms:
      # 
      # file
      # header
      # state
      # tag:<tag>
      # property:<property-name>
      # property-as-time:<property-name>
      # timestamp:<timestamp-name>
      # reverse:<sorter>
      # (<sorter> then <sorter>)
      <string>
    , - ref: Sorter
    ]
  Whether to consider archived entries
  default: HideArchive
  work.hide-archive:
    # or null
    <boolean>
  The threshold at which to color waiting entries red
  default: Days 7
  waiting.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  The threshold at which to color stuck projects red
  default: Weeks 3
  stuck.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  Whether to consider archived entries
  default: HideArchive
  free.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: Don'tHideArchive
  log.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: HideArchive
  tags.hide-archive:
    # or null
    <boolean>
  The workflow directory
  workflow-dir:
    # or null
    <string>
  The archive directory
  archive-dir:
    # or null
    <string>
  The projects directory
  projects-dir:
    # or null
    <string>
  The archived projects directory
  archived-projects-dir:
    # or null
    <string>
  Table background colours
  default: UseTableBackground (Bicolour (Just (Colour8Bit 234)) (Just (Colour8Bit 235)))
  colour.background:
    # any of
    [ null
    , null
    , # A single background colour
      def: Colour
      # any of
      [ <string>
      , # Set this to a number between 0 and 255 that represents the colour that you want from the 8-bit colour schema.
        # See this overview on wikipedia for more information:
        # https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
        <integer> # 8 bit unsigned integer
      , # Colour24Bit
        red: # required
          # The red component, [0..255]
          <integer> # 8 bit unsigned integer
        green: # required
          # The green component, [0..255]
          <integer> # 8 bit unsigned integer
        blue: # required
          # The blue component, [0..255]
          <integer> # 8 bit unsigned integer
      ]
    , # Bicolour
      even: # optional
        # background for even-numbered table-rows (0-indexed)
        # or null
        ref: Colour
      odd: # optional
        # background for odd-numbered table-rows
        # or null
        ref: Colour
    ]

Combined settings

Usage: smos-query [--config-file FILE_PATH] COMMAND [--workflow-dir DIRECTORY_PATH] [--archive-dir DIRECTORY_PATH] [--projects-dir DIRECTORY_PATH] [--archived-projects-dir DIRECTORY_PATH]

All settings:
  Show this help text
  switch: -h|--help

  Output version information
  switch: --version

  Path to the configuration file
  option: --config-file FILE_PATH
  env: SMOS_CONFIG_FILE FILE_PATH

  The workflow directory
  option: --workflow-dir DIRECTORY_PATH
  env: SMOS_WORKFLOW_DIR DIRECTORY_PATH
  config:
    workflow-dir: # or null
      <string>

  The archive directory
  option: --archive-dir DIRECTORY_PATH
  env: SMOS_ARCHIVE_DIR DIRECTORY_PATH
  config:
    archive-dir: # or null
      <string>

  The projects directory
  option: --projects-dir DIRECTORY_PATH
  env: SMOS_PROJECTS_DIR DIRECTORY_PATH
  config:
    projects-dir: # or null
      <string>

  The archived projects directory
  option: --archived-projects-dir DIRECTORY_PATH
  env: SMOS_ARCHIVED_PROJECTS_DIR DIRECTORY_PATH
  config:
    archived-projects-dir: # or null
      <string>

  Table background colours
  config:
    colour.background: # any of
      [ null
      , null
      , # A single background colour
        def: Colour
        # any of
        [ <string>
        , # Set this to a number between 0 and 255 that represents the colour that you want from the 8-bit colour schema.
          # See this overview on wikipedia for more information:
          # https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
          <integer> # 8 bit unsigned integer
        , # Colour24Bit
          red: # required
            # The red component, [0..255]
            <integer> # 8 bit unsigned integer
          green: # required
            # The green component, [0..255]
            <integer> # 8 bit unsigned integer
          blue: # required
            # The blue component, [0..255]
            <integer> # 8 bit unsigned integer
        ]
      , # Bicolour
        even: # optional
          # background for even-numbered table-rows (0-indexed)
          # or null
          ref: Colour
        odd: # optional
          # background for odd-numbered table-rows
          # or null
          ref: Colour
      ]
  default: UseTableBackground (Bicolour (Just (Colour8Bit 234)) (Just (Colour8Bit 235)))

All commands:
  Run a custom report with given filter, sorter, ...
  command: entry
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    The columns in the report
    option: --columns COLUMNS
    env: SMOS_ENTRY_COLUMNS COLUMNS
    config:
      entry.columns: # or null
        - def: Projection
          # A column (projection) is a string of one of the following forms:
          # 
          # file
          # state
          # header
          # tag:<tag-name>
          # property:<property-name>
          # timestamp:<timestamp-name>
          # ancestor:<projection>
          <string>
    default: OntoFile :| [OntoState,OntoHeader]
    
    A sorter to sort entries by
    option: --sort SORTER
    
    A sorter to sort entries by
    option: --sort SORTER
    
    A sorter to sort entries by
    env: SMOS_ENTRY_SORTER SORTER
    config:
      entry.sorter: # any of
        [ null
        , def: Sorter
          # A sorter is a string of one of the following forms:
          # 
          # file
          # header
          # state
          # tag:<tag>
          # property:<property-name>
          # property-as-time:<property-name>
          # timestamp:<timestamp-name>
          # reverse:<sorter>
          # (<sorter> then <sorter>)
          <string>
        , - ref: Sorter
        ]
  
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_ENTRY_IGNORE_ARCHIVE BOOL
    config:
      entry.hide-archive: # or null
        <boolean>
    default: HideArchive
    
    pretty text
    switch: --pretty
  
    Yaml
    switch: --yaml
  
    single-line JSON
    switch: --json
  
    pretty JSON
    switch: --pretty-json
    default: pretty
    
  
  Run a prepared report
  command: report
    name of the report
    argument: NAME
    
    available reports
    config:
      report.reports: # or null
        <key>: 
          # PreparedReport
          description: # optional
            # A description of the report
            # or null
            <string>
          filter: # optional
            # The entry filter to get the results in the report
            # or null
            def: EntryFilter
            # A filter is a string of one of the following forms:
            # 
            # tag:<tag>
            # state:<state>
            # file:<file>
            # level:<level>
            # header:<header>
            # property:<property-name>
            # property:<property-name>:<property-value>
            # property:<property-name>:time:<comparison>:<time>
            # parent:<filter>
            # ancestor:<filter>
            # child:<filter>
            # legacy:<filter>
            # not:<filter>
            # (<filter> and <filter>)
            # (<filter> or <filter>)
            <string>
          columns: # optional
            # The columns of the report
            # or null
            - def: Projection
              # A column (projection) is a string of one of the following forms:
              # 
              # file
              # state
              # header
              # tag:<tag-name>
              # property:<property-name>
              # timestamp:<timestamp-name>
              # ancestor:<projection>
              <string>
          sorter: # optional
            # The sorter to sort the rows of the report by
            # or null
            def: Sorter
            # A sorter is a string of one of the following forms:
            # 
            # file
            # header
            # state
            # tag:<tag>
            # property:<property-name>
            # property-as-time:<property-name>
            # timestamp:<timestamp-name>
            # reverse:<sorter>
            # (<sorter> then <sorter>)
            <string>
          hide-archive: # optional
            # Whether to consider the archive for the report
            # or null
            <boolean>
    default: fromList []
    
    pretty text
    switch: --pretty
  
    Yaml
    switch: --yaml
  
    single-line JSON
    switch: --json
  
    pretty JSON
    switch: --pretty-json
    default: pretty
    
  
  Run the waiting report
  command: waiting
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_WAITING_IGNORE_ARCHIVE BOOL
    config:
      waiting.hide-archive: # or null
        <boolean>
    default: HideArchive
    
    The threshold at which to color waiting entries red
    option: --threshold TIME
    env: SMOS_WAITING_THRESHOLD TIME
    config:
      waiting.threshold: # or null
        def: Time
        # any of
        [ # Time string, for example:
          #  2s
          #  2 seconds
          #  3m
          #  3 minutes
          #  4h
          #  4 hours
          #  5d
          #  5 days
          #  6w
          #  6 weeks
          #  7mo
          #  7 months
          #  8y
          #  8 years
          <string>
        , # Interpreted as a number of days
          <integer> # 64 bit unsigned integer
        ]
    default: Days 7
    
  
  Run the next actions report
  command: next
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_NEXT_IGNORE_ARCHIVE BOOL
    config:
      next.hide-archive: # or null
        <boolean>
    default: HideArchive
    
  
  Show ongoing entries
  command: ongoing
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_ONGOING_IGNORE_ARCHIVE BOOL
    config:
      ongoing.hide-archive: # or null
        <boolean>
    default: HideArchive
    
  
  Run the clock report
  command: clock
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    start date (inclusive)
    option: --begin DAY
    
    end time (inclusive)
    option: --end DAY
    
    yesterday
    switch: --yesterday
  
    today
    switch: --today
  
    tomorrow
    switch: --tomorrow
  
    last week
    switch: --last-week
  
    the past week
    switch: --past-week
  
    this week
    switch: --this-week
  
    the coming week
    switch: --coming-week
  
    next week
    switch: --next-week
  
    last month
    switch: --last-month
  
    the past month
    switch: --past-month
  
    this month
    switch: --this-month
  
    the coming month
    switch: --coming-month
  
    next month
    switch: --next-month
  
    last year
    switch: --last-year
  
    the past year
    switch: --past-year
  
    this year
    switch: --this-year
  
    the coming year
    switch: --coming-year
  
    next year
    switch: --next-year
  
    all time
    switch: --all-time
    default: AllTime
    
    blocks of one day
    switch: --day-block
  
    blocks of one week
    switch: --week-block
  
    blocks of one month
    switch: --month-block
  
    blocks of one year
    switch: --year-block
  
    a single block
    switch: --one-block
    default: OneBlock
    
    pretty text
    switch: --pretty
  
    Yaml
    switch: --yaml
  
    single-line JSON
    switch: --json
  
    pretty JSON
    switch: --pretty-json
    default: pretty
    
    Show the clocks with a temporal resolution (hours and minutes)
    switch: --temporal
    
    Show clocks in seconds
    switch: --seconds
  
    Show clocks in minutes
    switch: --minutes
  
    Show clocks in hours
    switch: --hours
    default: minutes
    
    Show the clocks with a decimal resolution (hours and tenths of hours)
    switch: --decimal
    
    Show clocks in a decimal number of hours
    switch: --hours
  
    Show clocks in a decimal number of quarter hours
    switch: --quarters
  
    Show clocks in a decimal manner, with this many decimals
    option: --decimals DIGITS
    default: 2
    
    Show the clocks as a forest
    switch: --forest
  
    Show the clocks line by line
    switch: --flat
    default: forest
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_CLOCK_IGNORE_ARCHIVE BOOL
    config:
      clock.hide-archive: # or null
        <boolean>
    default: Don'tHideArchive
    
  
  Show timestamps in an agenda
  command: agenda
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    Select all entries
    switch: --historical
  
    Select only entries in the future
    switch: --future
    default: HistoricalAgenda
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_AGENDA_IGNORE_ARCHIVE BOOL
    config:
      agenda.hide-archive: # or null
        <boolean>
    default: HideArchive
    
    start date (inclusive)
    option: --begin DAY
    
    end time (inclusive)
    option: --end DAY
    
    yesterday
    switch: --yesterday
  
    today
    switch: --today
  
    tomorrow
    switch: --tomorrow
  
    last week
    switch: --last-week
  
    the past week
    switch: --past-week
  
    this week
    switch: --this-week
  
    the coming week
    switch: --coming-week
  
    next week
    switch: --next-week
  
    last month
    switch: --last-month
  
    the past month
    switch: --past-month
  
    this month
    switch: --this-month
  
    the coming month
    switch: --coming-month
  
    next month
    switch: --next-month
  
    last year
    switch: --last-year
  
    the past year
    switch: --past-year
  
    this year
    switch: --this-year
  
    the coming year
    switch: --coming-year
  
    next year
    switch: --next-year
  
    all time
    switch: --all-time
    default: all
    
    blocks of one day
    switch: --day-block
  
    blocks of one week
    switch: --week-block
  
    blocks of one month
    switch: --month-block
  
    blocks of one year
    switch: --year-block
  
    a single block
    switch: --one-block
    
  
  Run the projects overview
  command: projects
    A filter to filter projects by
    argument: FILTER
    
  
  Run the stuck projects report
  command: stuck
    A filter to filter projects by
    argument: FILTER
    
    The threshold at which to color stuck projects red
    option: --threshold TIME
    env: SMOS_STUCK_THRESHOLD TIME
    config:
      stuck.threshold: # or null
        def: Time
        # any of
        [ # Time string, for example:
          #  2s
          #  2 seconds
          #  3m
          #  3 minutes
          #  4h
          #  4 hours
          #  5d
          #  5 days
          #  6w
          #  6 weeks
          #  7mo
          #  7 months
          #  8y
          #  8 years
          <string>
        , # Interpreted as a number of days
          <integer> # 64 bit unsigned integer
        ]
    default: Weeks 3
    
  
  Run the work report
  command: work
    The context that you are in
    argument: CONTEXT
    env: SMOS_WORK_CONTEXT CONTEXT
    config:
      work.context: # or null
        <string>
    
    Contexts for the work report
    config:
      work.contexts: # or null
        <key>: 
          def: EntryFilter
          # A filter is a string of one of the following forms:
          # 
          # tag:<tag>
          # state:<state>
          # file:<file>
          # level:<level>
          # header:<header>
          # property:<property-name>
          # property:<property-name>:<property-value>
          # property:<property-name>:time:<comparison>:<time>
          # parent:<filter>
          # ancestor:<filter>
          # child:<filter>
          # legacy:<filter>
          # not:<filter>
          # (<filter> and <filter>)
          # (<filter> or <filter>)
          <string>
    default: fromList []
    
    Checks for the work report
    config:
      work.checks: # or null
        - def: EntryFilter
          # A filter is a string of one of the following forms:
          # 
          # tag:<tag>
          # state:<state>
          # file:<file>
          # level:<level>
          # header:<header>
          # property:<property-name>
          # property:<property-name>:<property-value>
          # property:<property-name>:time:<comparison>:<time>
          # parent:<filter>
          # ancestor:<filter>
          # child:<filter>
          # legacy:<filter>
          # not:<filter>
          # (<filter> and <filter>)
          # (<filter> or <filter>)
          <string>
    default: fromList []
    
    A filter to filter by time
    argument: TIME_FILTER
    env: SMOS_WORK_TIME TIME_FILTER
    config:
      work.time: # or null
        def: Time
        # any of
        [ # Time string, for example:
          #  2s
          #  2 seconds
          #  3m
          #  3 minutes
          #  4h
          #  4 hours
          #  5d
          #  5 days
          #  6w
          #  6 weeks
          #  7mo
          #  7 months
          #  8y
          #  8 years
          <string>
        , # Interpreted as a number of days
          <integer> # 64 bit unsigned integer
        ]
    
    The property to use to filter by time
    option: --time-filter PROPERTY_NAME
    env: SMOS_WORK_TIME_FILTER PROPERTY_NAME
    config:
      work.time-filter: # or null
        def: PropertyName
        <string>
    
    The base work filter
    option: --base-filter FILTER
    env: SMOS_WORK_BASE_FILTER FILTER
    config:
      work.base-filter: # or null
        def: EntryFilter
        # A filter is a string of one of the following forms:
        # 
        # tag:<tag>
        # state:<state>
        # file:<file>
        # level:<level>
        # header:<header>
        # property:<property-name>
        # property:<property-name>:<property-value>
        # property:<property-name>:time:<comparison>:<time>
        # parent:<filter>
        # ancestor:<filter>
        # child:<filter>
        # legacy:<filter>
        # not:<filter>
        # (<filter> and <filter>)
        # (<filter> or <filter>)
        <string>
    default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
    
    A filter to filter entries by
    option: -f|--filter FILTER
    
    A filter to filter entries by
    option: -f|--filter FILTER
    
    A filter to filter entries by
    env: SMOS_WORK_FILTER FILTER
    config:
      work.filter: # any of
        [ null
        , def: EntryFilter
          # A filter is a string of one of the following forms:
          # 
          # tag:<tag>
          # state:<state>
          # file:<file>
          # level:<level>
          # header:<header>
          # property:<property-name>
          # property:<property-name>:<property-value>
          # property:<property-name>:time:<comparison>:<time>
          # parent:<filter>
          # ancestor:<filter>
          # child:<filter>
          # legacy:<filter>
          # not:<filter>
          # (<filter> and <filter>)
          # (<filter> or <filter>)
          <string>
        , - ref: EntryFilter
        ]
  
    The columns in the report
    option: --columns COLUMNS
    env: SMOS_WORK_COLUMNS COLUMNS
    config:
      work.columns: # or null
        - def: Projection
          # A column (projection) is a string of one of the following forms:
          # 
          # file
          # state
          # header
          # tag:<tag-name>
          # property:<property-name>
          # timestamp:<timestamp-name>
          # ancestor:<projection>
          <string>
    default: OntoFile :| [OntoState,OntoHeader]
    
    A sorter to sort entries by
    option: --sort SORTER
    
    A sorter to sort entries by
    option: --sort SORTER
    
    A sorter to sort entries by
    env: SMOS_WORK_SORTER SORTER
    config:
      work.sorter: # any of
        [ null
        , def: Sorter
          # A sorter is a string of one of the following forms:
          # 
          # file
          # header
          # state
          # tag:<tag>
          # property:<property-name>
          # property-as-time:<property-name>
          # timestamp:<timestamp-name>
          # reverse:<sorter>
          # (<sorter> then <sorter>)
          <string>
        , - ref: Sorter
        ]
  
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_WORK_IGNORE_ARCHIVE BOOL
    config:
      work.hide-archive: # or null
        <boolean>
    default: HideArchive
    
    The threshold at which to color waiting entries red
    option: --waiting-threshold TIME
    env: SMOS_WAITING_THRESHOLD TIME
    config:
      waiting.threshold: # or null
        def: Time
        # any of
        [ # Time string, for example:
          #  2s
          #  2 seconds
          #  3m
          #  3 minutes
          #  4h
          #  4 hours
          #  5d
          #  5 days
          #  6w
          #  6 weeks
          #  7mo
          #  7 months
          #  8y
          #  8 years
          <string>
        , # Interpreted as a number of days
          <integer> # 64 bit unsigned integer
        ]
    default: Days 7
    
    The threshold at which to color stuck projects red
    option: --stuck-threshold TIME
    env: SMOS_STUCK_THRESHOLD TIME
    config:
      stuck.threshold: # or null
        def: Time
        # any of
        [ # Time string, for example:
          #  2s
          #  2 seconds
          #  3m
          #  3 minutes
          #  4h
          #  4 hours
          #  5d
          #  5 days
          #  6w
          #  6 weeks
          #  7mo
          #  7 months
          #  8y
          #  8 years
          <string>
        , # Interpreted as a number of days
          <integer> # 64 bit unsigned integer
        ]
    default: Weeks 3
    
  
  Find a free slot for a meeting
  command: free
    start date (inclusive)
    option: --begin DAY
    
    end time (inclusive)
    option: --end DAY
    
    yesterday
    switch: --yesterday
  
    today
    switch: --today
  
    tomorrow
    switch: --tomorrow
  
    last week
    switch: --last-week
  
    the past week
    switch: --past-week
  
    this week
    switch: --this-week
  
    the coming week
    switch: --coming-week
  
    next week
    switch: --next-week
  
    last month
    switch: --last-month
  
    the past month
    switch: --past-month
  
    this month
    switch: --this-month
  
    the coming month
    switch: --coming-month
  
    next month
    switch: --next-month
  
    last year
    switch: --last-year
  
    the past year
    switch: --past-year
  
    this year
    switch: --this-year
  
    the coming year
    switch: --coming-year
  
    next year
    switch: --next-year
  
    all time
    switch: --all-time
    default: ComingWeek
    
    Minimum amount of free time to show a free time slot
    argument: TIME
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_FREE_IGNORE_ARCHIVE BOOL
    config:
      free.hide-archive: # or null
        <boolean>
    default: HideArchive
    
    Earliest time of day
    option: --earliest TIME_OF_DAY
    
    Latest time of day
    option: --latest TIME_OF_DAY
    
  
  Show a log of what has happened
  command: log
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    start date (inclusive)
    option: --begin DAY
    
    end time (inclusive)
    option: --end DAY
    
    yesterday
    switch: --yesterday
  
    today
    switch: --today
  
    tomorrow
    switch: --tomorrow
  
    last week
    switch: --last-week
  
    the past week
    switch: --past-week
  
    this week
    switch: --this-week
  
    the coming week
    switch: --coming-week
  
    next week
    switch: --next-week
  
    last month
    switch: --last-month
  
    the past month
    switch: --past-month
  
    this month
    switch: --this-month
  
    the coming month
    switch: --coming-month
  
    next month
    switch: --next-month
  
    last year
    switch: --last-year
  
    the past year
    switch: --past-year
  
    this year
    switch: --this-year
  
    the coming year
    switch: --coming-year
  
    next year
    switch: --next-year
  
    all time
    switch: --all-time
    default: Today
    
    blocks of one day
    switch: --day-block
  
    blocks of one week
    switch: --week-block
  
    blocks of one month
    switch: --month-block
  
    blocks of one year
    switch: --year-block
  
    a single block
    switch: --one-block
    default: DayBlock
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_LOG_IGNORE_ARCHIVE BOOL
    config:
      log.hide-archive: # or null
        <boolean>
    default: Don'tHideArchive
    
  
  Show statitistics about entries being changed
  command: stats
    start date (inclusive)
    option: --begin DAY
    
    end time (inclusive)
    option: --end DAY
    
    yesterday
    switch: --yesterday
  
    today
    switch: --today
  
    tomorrow
    switch: --tomorrow
  
    last week
    switch: --last-week
  
    the past week
    switch: --past-week
  
    this week
    switch: --this-week
  
    the coming week
    switch: --coming-week
  
    next week
    switch: --next-week
  
    last month
    switch: --last-month
  
    the past month
    switch: --past-month
  
    this month
    switch: --this-month
  
    the coming month
    switch: --coming-month
  
    next month
    switch: --next-month
  
    last year
    switch: --last-year
  
    the past year
    switch: --past-year
  
    this year
    switch: --this-year
  
    the coming year
    switch: --coming-year
  
    next year
    switch: --next-year
  
    all time
    switch: --all-time
    default: AllTime
    
  
  List all the tags that are in use
  command: tags
    A filter to filter entries by
    argument: FILTER
    
    A filter to filter entries by
    argument: FILTER
    
    Hide archived files
    switch: --hide-archive
  
    Do not hide archived files
    switch: --show-archive|-a
  
    Whether to consider archived entries
    env: SMOS_TAGS_IGNORE_ARCHIVE BOOL
    config:
      tags.hide-archive: # or null
        <boolean>
    default: HideArchive
    
  

Options:
  -h|--help Show this help text
  --version Output version information
  --config-file Path to the configuration file
  entry Run a custom report with given filter, sorter, ...
      FILTER            A filter to filter entries by                                            
      FILTER            A filter to filter entries by                                            
      --columns         The columns in the report     default: OntoFile :| [OntoState,OntoHeader]
      --sort            A sorter to sort entries by                                              
      --sort            A sorter to sort entries by                                              
      --hide-archive    Hide archived files                                                      
      --show-archive|-a Do not hide archived files                                               
      --pretty          pretty text                                                              
      --yaml            Yaml                                                                     
      --json            single-line JSON                                                         
      --pretty-json     pretty JSON                   default: pretty                            
  report Run a prepared report
      NAME          name of the report                
      --pretty      pretty text                       
      --yaml        Yaml                              
      --json        single-line JSON                  
      --pretty-json pretty JSON        default: pretty
  waiting Run the waiting report
      FILTER            A filter to filter entries by                                      
      FILTER            A filter to filter entries by                                      
      --hide-archive    Hide archived files                                                
      --show-archive|-a Do not hide archived files                                         
      --threshold       The threshold at which to color waiting entries red default: Days 7
  next Run the next actions report
      FILTER            A filter to filter entries by
      FILTER            A filter to filter entries by
      --hide-archive    Hide archived files          
      --show-archive|-a Do not hide archived files   
  ongoing Show ongoing entries
      FILTER            A filter to filter entries by
      FILTER            A filter to filter entries by
      --hide-archive    Hide archived files          
      --show-archive|-a Do not hide archived files   
  clock Run the clock report
      FILTER            A filter to filter entries by                                                          
      FILTER            A filter to filter entries by                                                          
      --begin           start date (inclusive)                                                                 
      --end             end time (inclusive)                                                                   
      --yesterday       yesterday                                                                              
      --today           today                                                                                  
      --tomorrow        tomorrow                                                                               
      --last-week       last week                                                                              
      --past-week       the past week                                                                          
      --this-week       this week                                                                              
      --coming-week     the coming week                                                                        
      --next-week       next week                                                                              
      --last-month      last month                                                                             
      --past-month      the past month                                                                         
      --this-month      this month                                                                             
      --coming-month    the coming month                                                                       
      --next-month      next month                                                                             
      --last-year       last year                                                                              
      --past-year       the past year                                                                          
      --this-year       this year                                                                              
      --coming-year     the coming year                                                                        
      --next-year       next year                                                                              
      --all-time        all time                                                              default: AllTime 
      --day-block       blocks of one day                                                                      
      --week-block      blocks of one week                                                                     
      --month-block     blocks of one month                                                                    
      --year-block      blocks of one year                                                                     
      --one-block       a single block                                                        default: OneBlock
      --pretty          pretty text                                                                            
      --yaml            Yaml                                                                                   
      --json            single-line JSON                                                                       
      --pretty-json     pretty JSON                                                           default: pretty  
      --temporal        Show the clocks with a temporal resolution (hours and minutes)                         
      --seconds         Show clocks in seconds                                                                 
      --minutes         Show clocks in minutes                                                                 
      --hours           Show clocks in hours                                                  default: minutes 
      --decimal         Show the clocks with a decimal resolution (hours and tenths of hours)                  
      --hours           Show clocks in a decimal number of hours                                               
      --quarters        Show clocks in a decimal number of quarter hours                                       
      --decimals        Show clocks in a decimal manner, with this many decimals              default: 2       
      --forest          Show the clocks as a forest                                                            
      --flat            Show the clocks line by line                                          default: forest  
      --hide-archive    Hide archived files                                                                    
      --show-archive|-a Do not hide archived files                                                             
  agenda Show timestamps in an agenda
      FILTER            A filter to filter entries by                              
      FILTER            A filter to filter entries by                              
      --historical      Select all entries                                         
      --future          Select only entries in the future default: HistoricalAgenda
      --hide-archive    Hide archived files                                        
      --show-archive|-a Do not hide archived files                                 
      --begin           start date (inclusive)                                     
      --end             end time (inclusive)                                       
      --yesterday       yesterday                                                  
      --today           today                                                      
      --tomorrow        tomorrow                                                   
      --last-week       last week                                                  
      --past-week       the past week                                              
      --this-week       this week                                                  
      --coming-week     the coming week                                            
      --next-week       next week                                                  
      --last-month      last month                                                 
      --past-month      the past month                                             
      --this-month      this month                                                 
      --coming-month    the coming month                                           
      --next-month      next month                                                 
      --last-year       last year                                                  
      --past-year       the past year                                              
      --this-year       this year                                                  
      --coming-year     the coming year                                            
      --next-year       next year                                                  
      --all-time        all time                          default: all             
      --day-block       blocks of one day                                          
      --week-block      blocks of one week                                         
      --month-block     blocks of one month                                        
      --year-block      blocks of one year                                         
      --one-block       a single block                                             
  projects Run the projects overview
      FILTER A filter to filter projects by
  stuck Run the stuck projects report
      FILTER      A filter to filter projects by                                     
      --threshold The threshold at which to color stuck projects red default: Weeks 3
  work Run the work report
      CONTEXT             The context that you are in                                                                                                                                                                                                                           
      TIME_FILTER         A filter to filter by time                                                                                                                                                                                                                            
      --time-filter       The property to use to filter by time                                                                                                                                                                                                                 
      --base-filter       The base work filter                                default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
      -f|--filter         A filter to filter entries by                                                                                                                                                                                                                         
      -f|--filter         A filter to filter entries by                                                                                                                                                                                                                         
      --columns           The columns in the report                           default: OntoFile :| [OntoState,OntoHeader]                                                                                                                                                       
      --sort              A sorter to sort entries by                                                                                                                                                                                                                           
      --sort              A sorter to sort entries by                                                                                                                                                                                                                           
      --hide-archive      Hide archived files                                                                                                                                                                                                                                   
      --show-archive|-a   Do not hide archived files                                                                                                                                                                                                                            
      --waiting-threshold The threshold at which to color waiting entries red default: Days 7                                                                                                                                                                                   
      --stuck-threshold   The threshold at which to color stuck projects red  default: Weeks 3                                                                                                                                                                                  
  free Find a free slot for a meeting
      --begin           start date (inclusive)                                                  
      --end             end time (inclusive)                                                    
      --yesterday       yesterday                                                               
      --today           today                                                                   
      --tomorrow        tomorrow                                                                
      --last-week       last week                                                               
      --past-week       the past week                                                           
      --this-week       this week                                                               
      --coming-week     the coming week                                                         
      --next-week       next week                                                               
      --last-month      last month                                                              
      --past-month      the past month                                                          
      --this-month      this month                                                              
      --coming-month    the coming month                                                        
      --next-month      next month                                                              
      --last-year       last year                                                               
      --past-year       the past year                                                           
      --this-year       this year                                                               
      --coming-year     the coming year                                                         
      --next-year       next year                                                               
      --all-time        all time                                             default: ComingWeek
      TIME              Minimum amount of free time to show a free time slot                    
      --hide-archive    Hide archived files                                                     
      --show-archive|-a Do not hide archived files                                              
      --earliest        Earliest time of day                                                    
      --latest          Latest time of day                                                      
  log Show a log of what has happened
      FILTER            A filter to filter entries by                  
      FILTER            A filter to filter entries by                  
      --begin           start date (inclusive)                         
      --end             end time (inclusive)                           
      --yesterday       yesterday                                      
      --today           today                                          
      --tomorrow        tomorrow                                       
      --last-week       last week                                      
      --past-week       the past week                                  
      --this-week       this week                                      
      --coming-week     the coming week                                
      --next-week       next week                                      
      --last-month      last month                                     
      --past-month      the past month                                 
      --this-month      this month                                     
      --coming-month    the coming month                               
      --next-month      next month                                     
      --last-year       last year                                      
      --past-year       the past year                                  
      --this-year       this year                                      
      --coming-year     the coming year                                
      --next-year       next year                                      
      --all-time        all time                      default: Today   
      --day-block       blocks of one day                              
      --week-block      blocks of one week                             
      --month-block     blocks of one month                            
      --year-block      blocks of one year                             
      --one-block       a single block                default: DayBlock
      --hide-archive    Hide archived files                            
      --show-archive|-a Do not hide archived files                     
  stats Show statitistics about entries being changed
      --begin        start date (inclusive)                 
      --end          end time (inclusive)                   
      --yesterday    yesterday                              
      --today        today                                  
      --tomorrow     tomorrow                               
      --last-week    last week                              
      --past-week    the past week                          
      --this-week    this week                              
      --coming-week  the coming week                        
      --next-week    next week                              
      --last-month   last month                             
      --past-month   the past month                         
      --this-month   this month                             
      --coming-month the coming month                       
      --next-month   next month                             
      --last-year    last year                              
      --past-year    the past year                          
      --this-year    this year                              
      --coming-year  the coming year                        
      --next-year    next year                              
      --all-time     all time               default: AllTime
  tags List all the tags that are in use
      FILTER            A filter to filter entries by
      FILTER            A filter to filter entries by
      --hide-archive    Hide archived files          
      --show-archive|-a Do not hide archived files   
  --workflow-dir The workflow directory
  --archive-dir The archive directory
  --projects-dir The projects directory
  --archived-projects-dir The archived projects directory

Environment Variables:
  SMOS_CONFIG_FILE FILE_PATH                  Path to the configuration file                                                                                                                                                                                                                          
  SMOS_ENTRY_COLUMNS COLUMNS                  The columns in the report                             default: OntoFile :| [OntoState,OntoHeader]                                                                                                                                                       
  SMOS_ENTRY_SORTER SORTER                    A sorter to sort entries by                                                                                                                                                                                                                             
  SMOS_ENTRY_IGNORE_ARCHIVE BOOL              Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WAITING_IGNORE_ARCHIVE BOOL            Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WAITING_THRESHOLD TIME                 The threshold at which to color waiting entries red   default: Days 7                                                                                                                                                                                   
  SMOS_NEXT_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_ONGOING_IGNORE_ARCHIVE BOOL            Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_CLOCK_IGNORE_ARCHIVE BOOL              Whether to consider archived entries                  default: Don'tHideArchive                                                                                                                                                                         
  SMOS_AGENDA_IGNORE_ARCHIVE BOOL             Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_STUCK_THRESHOLD TIME                   The threshold at which to color stuck projects red    default: Weeks 3                                                                                                                                                                                  
  SMOS_WORK_CONTEXT CONTEXT                   The context that you are in                                                                                                                                                                                                                             
  SMOS_WORK_TIME TIME_FILTER                  A filter to filter by time                                                                                                                                                                                                                              
  SMOS_WORK_TIME_FILTER PROPERTY_NAME         The property to use to filter by time                                                                                                                                                                                                                   
  SMOS_WORK_BASE_FILTER FILTER                The base work filter                                  default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
  SMOS_WORK_FILTER FILTER                     A filter to filter entries by                                                                                                                                                                                                                           
  SMOS_WORK_COLUMNS COLUMNS                   The columns in the report                             default: OntoFile :| [OntoState,OntoHeader]                                                                                                                                                       
  SMOS_WORK_SORTER SORTER                     A sorter to sort entries by                                                                                                                                                                                                                             
  SMOS_WORK_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WAITING_THRESHOLD TIME                 The threshold at which to color waiting entries red   default: Days 7                                                                                                                                                                                   
  SMOS_STUCK_THRESHOLD TIME                   The threshold at which to color stuck projects red    default: Weeks 3                                                                                                                                                                                  
  SMOS_FREE_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_LOG_IGNORE_ARCHIVE BOOL                Whether to consider archived entries                  default: Don'tHideArchive                                                                                                                                                                         
  SMOS_TAGS_IGNORE_ARCHIVE BOOL               Whether to consider archived entries                  default: HideArchive                                                                                                                                                                              
  SMOS_WORKFLOW_DIR DIRECTORY_PATH            The workflow directory                                                                                                                                                                                                                                  
  SMOS_ARCHIVE_DIR DIRECTORY_PATH             The archive directory                                                                                                                                                                                                                                   
  SMOS_PROJECTS_DIR DIRECTORY_PATH            The projects directory                                                                                                                                                                                                                                  
  SMOS_ARCHIVED_PROJECTS_DIR DIRECTORY_PATH   The archived projects directory                                                                                                                                                                                                                         

Configuration Values:
  The columns in the report
  default: OntoFile :| [OntoState,OntoHeader]
  entry.columns:
    # or null
    - def: Projection
      # A column (projection) is a string of one of the following forms:
      # 
      # file
      # state
      # header
      # tag:<tag-name>
      # property:<property-name>
      # timestamp:<timestamp-name>
      # ancestor:<projection>
      <string>
  A sorter to sort entries by
  entry.sorter:
    # any of
    [ null
    , def: Sorter
      # A sorter is a string of one of the following forms:
      # 
      # file
      # header
      # state
      # tag:<tag>
      # property:<property-name>
      # property-as-time:<property-name>
      # timestamp:<timestamp-name>
      # reverse:<sorter>
      # (<sorter> then <sorter>)
      <string>
    , - ref: Sorter
    ]
  Whether to consider archived entries
  default: HideArchive
  entry.hide-archive:
    # or null
    <boolean>
  available reports
  default: fromList []
  report.reports:
    # or null
    <key>: 
      # PreparedReport
      description: # optional
        # A description of the report
        # or null
        <string>
      filter: # optional
        # The entry filter to get the results in the report
        # or null
        def: EntryFilter
        # A filter is a string of one of the following forms:
        # 
        # tag:<tag>
        # state:<state>
        # file:<file>
        # level:<level>
        # header:<header>
        # property:<property-name>
        # property:<property-name>:<property-value>
        # property:<property-name>:time:<comparison>:<time>
        # parent:<filter>
        # ancestor:<filter>
        # child:<filter>
        # legacy:<filter>
        # not:<filter>
        # (<filter> and <filter>)
        # (<filter> or <filter>)
        <string>
      columns: # optional
        # The columns of the report
        # or null
        - def: Projection
          # A column (projection) is a string of one of the following forms:
          # 
          # file
          # state
          # header
          # tag:<tag-name>
          # property:<property-name>
          # timestamp:<timestamp-name>
          # ancestor:<projection>
          <string>
      sorter: # optional
        # The sorter to sort the rows of the report by
        # or null
        def: Sorter
        # A sorter is a string of one of the following forms:
        # 
        # file
        # header
        # state
        # tag:<tag>
        # property:<property-name>
        # property-as-time:<property-name>
        # timestamp:<timestamp-name>
        # reverse:<sorter>
        # (<sorter> then <sorter>)
        <string>
      hide-archive: # optional
        # Whether to consider the archive for the report
        # or null
        <boolean>
  Whether to consider archived entries
  default: HideArchive
  waiting.hide-archive:
    # or null
    <boolean>
  The threshold at which to color waiting entries red
  default: Days 7
  waiting.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  Whether to consider archived entries
  default: HideArchive
  next.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: HideArchive
  ongoing.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: Don'tHideArchive
  clock.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: HideArchive
  agenda.hide-archive:
    # or null
    <boolean>
  The threshold at which to color stuck projects red
  default: Weeks 3
  stuck.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  The context that you are in
  work.context:
    # or null
    <string>
  Contexts for the work report
  default: fromList []
  work.contexts:
    # or null
    <key>: 
      def: EntryFilter
      # A filter is a string of one of the following forms:
      # 
      # tag:<tag>
      # state:<state>
      # file:<file>
      # level:<level>
      # header:<header>
      # property:<property-name>
      # property:<property-name>:<property-value>
      # property:<property-name>:time:<comparison>:<time>
      # parent:<filter>
      # ancestor:<filter>
      # child:<filter>
      # legacy:<filter>
      # not:<filter>
      # (<filter> and <filter>)
      # (<filter> or <filter>)
      <string>
  Checks for the work report
  default: fromList []
  work.checks:
    # or null
    - def: EntryFilter
      # A filter is a string of one of the following forms:
      # 
      # tag:<tag>
      # state:<state>
      # file:<file>
      # level:<level>
      # header:<header>
      # property:<property-name>
      # property:<property-name>:<property-value>
      # property:<property-name>:time:<comparison>:<time>
      # parent:<filter>
      # ancestor:<filter>
      # child:<filter>
      # legacy:<filter>
      # not:<filter>
      # (<filter> and <filter>)
      # (<filter> or <filter>)
      <string>
  A filter to filter by time
  work.time:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  The property to use to filter by time
  work.time-filter:
    # or null
    def: PropertyName
    <string>
  The base work filter
  default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
  work.base-filter:
    # or null
    def: EntryFilter
    # A filter is a string of one of the following forms:
    # 
    # tag:<tag>
    # state:<state>
    # file:<file>
    # level:<level>
    # header:<header>
    # property:<property-name>
    # property:<property-name>:<property-value>
    # property:<property-name>:time:<comparison>:<time>
    # parent:<filter>
    # ancestor:<filter>
    # child:<filter>
    # legacy:<filter>
    # not:<filter>
    # (<filter> and <filter>)
    # (<filter> or <filter>)
    <string>
  A filter to filter entries by
  work.filter:
    # any of
    [ null
    , def: EntryFilter
      # A filter is a string of one of the following forms:
      # 
      # tag:<tag>
      # state:<state>
      # file:<file>
      # level:<level>
      # header:<header>
      # property:<property-name>
      # property:<property-name>:<property-value>
      # property:<property-name>:time:<comparison>:<time>
      # parent:<filter>
      # ancestor:<filter>
      # child:<filter>
      # legacy:<filter>
      # not:<filter>
      # (<filter> and <filter>)
      # (<filter> or <filter>)
      <string>
    , - ref: EntryFilter
    ]
  The columns in the report
  default: OntoFile :| [OntoState,OntoHeader]
  work.columns:
    # or null
    - def: Projection
      # A column (projection) is a string of one of the following forms:
      # 
      # file
      # state
      # header
      # tag:<tag-name>
      # property:<property-name>
      # timestamp:<timestamp-name>
      # ancestor:<projection>
      <string>
  A sorter to sort entries by
  work.sorter:
    # any of
    [ null
    , def: Sorter
      # A sorter is a string of one of the following forms:
      # 
      # file
      # header
      # state
      # tag:<tag>
      # property:<property-name>
      # property-as-time:<property-name>
      # timestamp:<timestamp-name>
      # reverse:<sorter>
      # (<sorter> then <sorter>)
      <string>
    , - ref: Sorter
    ]
  Whether to consider archived entries
  default: HideArchive
  work.hide-archive:
    # or null
    <boolean>
  The threshold at which to color waiting entries red
  default: Days 7
  waiting.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  The threshold at which to color stuck projects red
  default: Weeks 3
  stuck.threshold:
    # or null
    def: Time
    # any of
    [ # Time string, for example:
      #  2s
      #  2 seconds
      #  3m
      #  3 minutes
      #  4h
      #  4 hours
      #  5d
      #  5 days
      #  6w
      #  6 weeks
      #  7mo
      #  7 months
      #  8y
      #  8 years
      <string>
    , # Interpreted as a number of days
      <integer> # 64 bit unsigned integer
    ]
  Whether to consider archived entries
  default: HideArchive
  free.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: Don'tHideArchive
  log.hide-archive:
    # or null
    <boolean>
  Whether to consider archived entries
  default: HideArchive
  tags.hide-archive:
    # or null
    <boolean>
  The workflow directory
  workflow-dir:
    # or null
    <string>
  The archive directory
  archive-dir:
    # or null
    <string>
  The projects directory
  projects-dir:
    # or null
    <string>
  The archived projects directory
  archived-projects-dir:
    # or null
    <string>
  Table background colours
  default: UseTableBackground (Bicolour (Just (Colour8Bit 234)) (Just (Colour8Bit 235)))
  colour.background:
    # any of
    [ null
    , null
    , # A single background colour
      def: Colour
      # any of
      [ <string>
      , # Set this to a number between 0 and 255 that represents the colour that you want from the 8-bit colour schema.
        # See this overview on wikipedia for more information:
        # https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
        <integer> # 8 bit unsigned integer
      , # Colour24Bit
        red: # required
          # The red component, [0..255]
          <integer> # 8 bit unsigned integer
        green: # required
          # The green component, [0..255]
          <integer> # 8 bit unsigned integer
        blue: # required
          # The blue component, [0..255]
          <integer> # 8 bit unsigned integer
      ]
    , # Bicolour
      even: # optional
        # background for even-numbered table-rows (0-indexed)
        # or null
        ref: Colour
      odd: # optional
        # background for odd-numbered table-rows
        # or null
        ref: Colour
    ]