ocli command tree

cli - CLI for GOLDEN AI processing
     * Options:
         - verbose ['--verbose', '-v'] "Verbose level"
         - config ['--config'] "Overrides a config key/value pair."
         - home ['--home'] "Changes the folder to operate on."
    ├── activate - Activate project
    │    * Arguments:
    │        - name <NAME | RECORD> "STRING"
    ├── ai - AI tensor processing
    │   ├── apply-mask
    │   │    * Options:
    │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │    * Arguments:
    │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   ├── basic - AI  processing
    │   │   ├── assemble - assemble tensor from co-registered stack  by given recipe
    │   │   │    * Options:
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - fast ['--fast'] "Use optimised EE libraries if possible"
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   └── process - Run cluster analysis on assembled tensor
    │   │        * Options:
    │   │            - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │        * Arguments:
    │   │            - zone ZONE "Choice(['zone', 'full'])"
    │   │            - pred_type PRED_TYPE "Choice(['fit', 'fitpredict', 'predict'])"
    │   ├── make
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │    * Arguments:
    │   │        - type TYPE "Choice(['3d', 'geojson'])"
    │   ├── makecog
    │   │    * Options:
    │   │        - source ['-s', '--source'] "source:  ENVI img or GeoTiff file"
    │   │        - nodata ['--nodata'] "No data value"
    │   │        - mask_band ['--mask-band'] "Number of band (starting from 1) to be used as mask. Use -1 to indicate the last band."
    │   │        - band ['-b', '--band'] "input band band for output. Bands are numbered from 1. Multiple -b switches may be used to select a set of input bands to write to the output file, or to reorder bands."
    │   │        - as_dem ['--dem'] "create COG for .dem.tiff NOTE  This argument is mutually EXCLUSIVE with  arguments: [dem_normals]."
    │   │        - as_dem_normals ['--dem-normals'] "create COG for .dem_normals.tiff NOTE  This argument is mutually EXCLUSIVE with  arguments: [as_dem]."
    │   │        - overview_resampling ['-r', '--overview-resampling'] ""
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │    * Arguments:
    │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   ├── makegeojson - Make geojson for COG
    │   │    * Options:
    │   │        - friendly_name ['--friendly-name'] "override friendly name"
    │   │        - cog_path ['--cog'] "reference COG file"
    │   │        - with_dem ['--dem'] "include dem url"
    │   │        - with_dem_normals ['--dem-normals'] "include dem normals url"
    │   │        - cos_key ['--cos-key'] "COS key"
    │   │        - print_res ['--print'] "print resulting GeoJSON"
    │   │        - less ['--less'] "use pagination"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── preview - Preview
    │   │   ├── cluster - Preview result of clustring
    │   │   │    * Options:
    │   │   │        - slice_range ['-s', '--slice'] "limit preview to bounding box: minY minX maxY maxX"
    │   │   │        - show_list ['-l', '--list'] "list available products"
    │   │   │        - band ['-b', '--band'] "Define band to preview"
    │   │   │        - columns ['-c', '--columns'] "Number of columns in image"
    │   │   │        - hist ['--hist'] "Plot histograms with given number of bins"
    │   │   │        - ylog ['--ylog'] "logarithmic Y-axis scale (for histograms only)"
    │   │   │        - export ['--export'] "save data as ENVI file (filename without extension) NOTE  This argument is mutually EXCLUSIVE with  arguments: [save, hist, ylog]."
    │   │   │        - save ['--save'] "save rendered image to file name ( output format is inferred from the extension of filename [jpeg,png, etc]) NOTE  This argument is mutually EXCLUSIVE with  arguments: [export]."
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   ├── stack - Preview stack band
    │   │   │    * Options:
    │   │   │        - show_list ['-l', '--list'] "list available products"
    │   │   │        - slice_by_roi ['--slice-by-roi'] "limit preview to roi"
    │   │   │        - slice_range ['-s', '--slice'] "limit preview to bounding box: minY minX maxY maxX"
    │   │   │        - clip ['--clip'] "apply log10(numpy.clip(min, max) "
    │   │   │        - band ['-b', '--band'] "Define band to preview"
    │   │   │        - columns ['-c', '--columns'] "Number of columns in image"
    │   │   │        - hist ['--hist'] "Plot histograms with given number of bins"
    │   │   │        - ylog ['--ylog'] "logarithmic Y-axis scale (for histograms only)"
    │   │   │        - export ['--export'] "save data as ENVI file (filename without extension) NOTE  This argument is mutually EXCLUSIVE with  arguments: [save, hist, ylog]."
    │   │   │        - save ['--save'] "save rendered image to file name ( output format is inferred from the extension of filename [jpeg,png, etc]) NOTE  This argument is mutually EXCLUSIVE with  arguments: [export]."
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   ├── stack-math - Band math for stack
    │   │   │    * Options:
    │   │   │        - vis_mode ['--vis'] "Visualisation calculations"
    │   │   │        - hist ['--hist'] "Plot histograms with given number of bins"
    │   │   │        - ylog ['--ylog'] "logarithmic Y-axis scale (for histograms only)"
    │   │   │        - band3 ['-b3', '--band3'] "b3 band file index"
    │   │   │        - band3_scale ['--band3_scale'] "band3 scaling (shift, scale) : band3 = (band3 + shift) / scale"
    │   │   │        - band2 ['-b2', '--band2'] "b2 band file index"
    │   │   │        - band2_scale ['--band2_scale'] "band2 scaling (shift, scale) : band2 = (band2 + shift) / scale"
    │   │   │        - band1 ['-b1', '--band1'] "b1 band file index"
    │   │   │        - band1_scale ['--band1_scale'] "band1 scaling (shift, scale) : band1 = (band1 + shift) / scale"
    │   │   │        - show_list ['-l', '--list'] "list available products"
    │   │   │        - data_path ['-d', '--data-path'] "Path to data directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project, path]."
    │   │   │        - slice_by_roi ['--slice-by-roi'] "limit preview to roi"
    │   │   │        - slice_range ['-s', '--slice'] "limit preview to bounding box: minY minX maxY maxX"
    │   │   │        - export ['--export'] "save data as ENVI file (filename without extension) NOTE  This argument is mutually EXCLUSIVE with  arguments: [save, hist, ylog]."
    │   │   │        - save ['--save'] "save rendered image to file name ( output format is inferred from the extension of filename [jpeg,png, etc]) NOTE  This argument is mutually EXCLUSIVE with  arguments: [export]."
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   ├── tensor - Preview assembled tensor band
    │   │   │    * Options:
    │   │   │        - mask ['--mask'] ""
    │   │   │        - band ['-b', '--band'] "Define band to preview"
    │   │   │        - slice_range ['-s', '--slice'] "limit preview to bounding box: minY minX maxY maxX"
    │   │   │        - hist ['--hist'] "Plot histograms with given number of bins"
    │   │   │        - ylog ['--ylog'] "logarithmic Y-axis scale (for histograms only)"
    │   │   │        - tnorm ['--tnorm'] "Apply predictor's tnorm"
    │   │   │        - columns ['-c', '--columns'] "Number of columns in image"
    │   │   │        - show_list ['-l', '--list'] "list available bands"
    │   │   │        - export ['--export'] "save data as ENVI file (filename without extension) NOTE  This argument is mutually EXCLUSIVE with  arguments: [save, hist, ylog]."
    │   │   │        - save ['--save'] "save rendered image to file name ( output format is inferred from the extension of filename [jpeg,png, etc]) NOTE  This argument is mutually EXCLUSIVE with  arguments: [export]."
    │   │   │        - data_path ['-d', '--data-path'] "Path to data directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project, path]."
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   └── tensor-math - Bands math for tensor
    │   │        * Options:
    │   │            - vis_mode ['--vis'] "Visualisation calculations"
    │   │            - hist ['--hist'] "Plot histograms with given number of bins"
    │   │            - ylog ['--ylog'] "logarithmic Y-axis scale (for histograms only)"
    │   │            - thresh ['--thresh'] "Apply thresholding"
    │   │            - tnorm ['--tnorm'] "Apply predictor's tnorm"
    │   │            - gauss ['--gauss'] "Apply gauss filtration with given sigma"
    │   │            - band3 ['-b3', '--band3'] "b3 band file index"
    │   │            - band3_scale ['--band3_scale'] "band3 scaling (shift, scale) : band3 = (band3 + shift) / scale"
    │   │            - band2 ['-b2', '--band2'] "b2 band file index"
    │   │            - band2_scale ['--band2_scale'] "band2 scaling (shift, scale) : band2 = (band2 + shift) / scale"
    │   │            - band1 ['-b1', '--band1'] "b1 band file index"
    │   │            - band1_scale ['--band1_scale'] "band1 scaling (shift, scale) : band1 = (band1 + shift) / scale"
    │   │            - slice_range ['-s', '--slice'] "limit preview to bounding box: minY minX maxY maxX"
    │   │            - show_list ['-l', '--list'] "list available bands"
    │   │            - data_path ['-d', '--data-path'] "Path to data directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project, path]."
    │   │            - export ['--export'] "save data as ENVI file (filename without extension) NOTE  This argument is mutually EXCLUSIVE with  arguments: [save, hist, ylog]."
    │   │            - save ['--save'] "save rendered image to file name ( output format is inferred from the extension of filename [jpeg,png, etc]) NOTE  This argument is mutually EXCLUSIVE with  arguments: [export]."
    │   │            - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │        * Arguments:
    │   │            - zone ZONE "Choice(['zone', 'full'])"
    │   ├── publish - Publish results
    │   │   ├── delete - Delete documents DB
    │   │   │    * Options:
    │   │   │        - dry_run ['--dry-run'] "Do not update documents in DB"
    │   │   │        - keep_files ['--keep-files'] "Do not delete files from COS bucket"
    │   │   │        - less ['--less'] "use pagination"
    │   │   │        - doc_id ['--id'] "Exact docment _id NOTE  This argument is mutually EXCLUSIVE with  arguments: [like]."
    │   │   │        - like ['--like'] "Filter _id regex NOTE  This argument is mutually EXCLUSIVE with  arguments: [id]."
    │   │   │        - doc_type ['--type'] "Filter by properties.type"
    │   │   │        - grep ['-g', '--grep'] "Grep all field for regex"
    │   │   │        - column ['-c', '--column'] "List of columns to display"
    │   │   │        - limit ['-l', '--limit'] "limit records number retrived"
    │   │   ├── export - Post document to DB
    │   │   │    * Options:
    │   │   │        - doc_id ['--id'] "Exact docment _id NOTE  This argument is mutually EXCLUSIVE with  arguments: [like]."
    │   │   │        - like ['--like'] "Filter _id regex NOTE  This argument is mutually EXCLUSIVE with  arguments: [id]."
    │   │   │        - doc_type ['--type'] "Filter by properties.type"
    │   │   │        - grep ['-g', '--grep'] "Grep all field for regex"
    │   │   │        - column ['-c', '--column'] "List of columns to display"
    │   │   │        - limit ['-l', '--limit'] "limit records number retrived"
    │   │   │    * Arguments:
    │   │   │        - path PATH "<click.types.Path object at 0x7e69226fade0>"
    │   │   ├── list - Post document to DB
    │   │   │    * Options:
    │   │   │        - less ['--less'] "use pagination"
    │   │   │        - doc_id ['--id'] "Exact docment _id NOTE  This argument is mutually EXCLUSIVE with  arguments: [like]."
    │   │   │        - like ['--like'] "Filter _id regex NOTE  This argument is mutually EXCLUSIVE with  arguments: [id]."
    │   │   │        - doc_type ['--type'] "Filter by properties.type"
    │   │   │        - grep ['-g', '--grep'] "Grep all field for regex"
    │   │   │        - column ['-c', '--column'] "List of columns to display"
    │   │   │        - limit ['-l', '--limit'] "limit records number retrived"
    │   │   ├── post - Post document to DB
    │   │   │    * Options:
    │   │   │        - print_json ['--print'] "Print posted document"
    │   │   │        - dry_run ['--dry-run'] "Do not do actual DB update"
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - less ['--less'] "use pagination"
    │   │   │        - no_color ['--no-color'] "Disable terminal colors"
    │   │   │        - report ['--report'] ""
    │   │   ├── set - set property in document
    │   │   │    * Options:
    │   │   │        - doc_id ['--id'] "Exact docment _id NOTE  This argument is mutually EXCLUSIVE with  arguments: [like]."
    │   │   │        - like ['--like'] "Filter _id regex NOTE  This argument is mutually EXCLUSIVE with  arguments: [id]."
    │   │   │        - doc_type ['--type'] "Filter by properties.type"
    │   │   │        - grep ['-g', '--grep'] "Grep all field for regex"
    │   │   │        - column ['-c', '--column'] "List of columns to display"
    │   │   │        - limit ['-l', '--limit'] "limit records number retrived"
    │   │   │        - quiet ['--quiet'] "Do notprint output"
    │   │   │        - dry_run ['--dry-run'] "Do not update documents in DB"
    │   │   │    * Arguments:
    │   │   │        - args KEY=VALUE "STRING"
    │   │   └── show
    │   │        * Options:
    │   │            - no_color ['--no-color'] "Disable terminal colors"
    │   │            - less ['--less'] "use pagination"
    │   │        * Arguments:
    │   │            - doc_id DOCUMENT_ID "STRING"
    │   ├── rvi - RVI AI
    │   │   └── visualize - visualize RVI
    │   │        * Options:
    │   │            - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │        * Arguments:
    │   │            - zone ZONE "Choice(['zone', 'full'])"
    │   ├── tilewise - AI tilewise (pro) optimized processing
    │   │   ├── assemble - assemble tensor from co-registered stack  by given recipe
    │   │   │    * Options:
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   ├── integrate - integrate tensor
    │   │   │    * Options:
    │   │   │        - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   ├── pca - Run PCA analysis on assembled tensor
    │   │   │    * Options:
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   │        - action ACTION "Choice(['fit', 'predict'])"
    │   │   └── process - Run cluster analysis on assembled tensor
    │   │        * Options:
    │   │            - tnorm_only ['--tnorm-only'] "only create tnorm.npy (no actual fit)"
    │   │            - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │   │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │   │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │   │            - algorithm ['--algorithm'] "Model learning algorithm, gm: Gaussian Mixture, bgm: Bayesian Gaussian Mixture"
    │   │        * Arguments:
    │   │            - zone ZONE "Choice(['zone', 'full'])"
    │   │            - action ACTION "Choice(['fit', 'predict'])"
    │   ├── upload - Upload COG TIFF to cloud storage
    │   │    * Options:
    │   │        - dry_run ['--dry-run'] "Do not do upload"
    │   │        - cos_key ['--cos-key'] "COS key"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── upload-report - Upload report (.pdf and .geojson) to cloud storage
    │   │    * Options:
    │   │        - dry_run ['--dry-run'] "Do not do upload"
    │   │        - cos_key ['--cos-key'] "COS key"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   └── visualize - visualize AI processing results
    │        * Options:
    │            - recipe_path ['--recipe'] "recipe JSON file NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project, path]."
    │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, name, project]."
    │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [recipe, path]."
    │        * Arguments:
    │            - zone ZONE "Choice(['zone', 'full'])"
    ├── aoi - area of interest (AOI) commands
    │    * Options:
    │        - project ['--project', '-p'] "project name, use active project if omitted"
    │   ├── add - add AOI to project database
    │   │    * Options:
    │   │        - type ['--type', '-t'] "AOI type"
    │   │        - format ['--format', '-f'] "File Format"
    │   │        - override ['--override'] "Override existed AOI records."
    │   │        - quiet ['-q', '--quiet'] "Do not print resulting AOI database."
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │    * Arguments:
    │   │        - file FILE "<click.types.File object at 0x7e691a0f9010>"
    │   ├── delete - Delete AOI records
    │   │    * Options:
    │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details) NOTE  This argument is mutually EXCLUSIVE with  arguments: [all]."
    │   │        - do_all ['--all', '-a'] "Set all records NOTE  This argument is mutually EXCLUSIVE with  arguments: [where]."
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   ├── export - Export AOI records
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details) NOTE  This argument is mutually EXCLUSIVE with  arguments: [all]."
    │   │        - do_all ['--all', '-a'] "Set all records NOTE  This argument is mutually EXCLUSIVE with  arguments: [where]."
    │   │        - target ['--target'] "Export target"
    │   │        - export_format ['--format', '-f'] "File Format"
    │   │        - ref_filename ['--ref'] "geo-reference file for --target=stack"
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │    * Arguments:
    │   │        - filename FILENAME "STRING"
    │   ├── list - List AOI records
    │   │    * Options:
    │   │        - limit ['-l', '--limit'] "records output limit, -1 for no limit"
    │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details)"
    │   │        - column ['-c', '--column'] "List of columns to display"
    │   │        - sort ['-s', '--sort'] "sort columns, prefix with "-" for descending"
    │   │        - list_columns ['--columns'] "list available product columns"
    │   │        - description ['--description', '-d'] "Print formatted description"
    │   │        - project ['--project', '-p'] "project name, use active project if omitted"
    │   ├── preview
    │   │    * Options:
    │   │        - burst_range ['-b', '--burst'] "arguments <start> <stop>,Limit to bursts in range [start:stop]"
    │   │        - swath ['-s', '--swath'] "Show only listed swathes"
    │   │        - basemap ['-m', '--map'] "Background map style"
    │   │        - zoom_basemap ['-z', '--zoom-basemap'] "Background map zoom factor [6-14]"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details) NOTE  This argument is mutually EXCLUSIVE with  arguments: [all]."
    │   │        - do_all ['--all', '-a'] "Set all records NOTE  This argument is mutually EXCLUSIVE with  arguments: [where]."
    │   └── set - Set AOI record's column value
    │        * Options:
    │            - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details) NOTE  This argument is mutually EXCLUSIVE with  arguments: [all]."
    │            - do_all ['--all', '-a'] "Set all records NOTE  This argument is mutually EXCLUSIVE with  arguments: [where]."
    │            - yes ['-y', '--yes'] "Do not ask for confirmation."
    │        * Arguments:
    │            - args ARGS "STRING"
    ├── bucket - Collecting EO products in buckets
    │   ├── list
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - reload ['--update', '-u'] "force products load "
    │   │        - fit ['--fit'] "filter buckets by ROI coverage percentage"
    │   └── show - show bucket info by BUCKET_NAME OR record number
    │        * Options:
    │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │            - check ['--check'] "Check master-slave data exists"
    │            - reload ['--update', '-u'] "force products load"
    │            - limit ['-l', '--limit'] "records output limit, -1 for no limit"
    │            - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details)"
    │            - column ['-c', '--column'] "List of columns to display, use +colname1,colname2 to add columns to default, multiple options allowed"
    │            - sort ['-s', '--sort'] "sort columns, prefix with "-" for descending"
    │            - less ['--less'] "use pagination"
    │            - export ['--export'] "export table in either json, txt or csv format"
    │            - header ['--header'] "append header to the table when exported"
    │            - export_linkdir ['--export_linkdir'] "export symlinks to eodata files into specified directory"
    │            - yes ['-y', '--yes'] "Do not ask for confirmation."
    │        * Arguments:
    │            - bucket_name <BUCKET_NAME | RECORD> "STRING"
    ├── create - create new or re-recreate existed project  in current workspace
    │    * Options:
    │        - activate ['-a', '--activate'] "Activate project after creation"
    │        - config ['-с', '--config'] "Set uploading configuration"
    │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │        - name ['--name', '-n'] "project name"
    ├── deactivate - Deactivate project
    ├── delete - delete project directory
    │    * Options:
    │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │        - name ['--name', '-n'] "project name"
    ├── dem - Digital elevation map (dem) commands
    │   ├── analyze - Analyze DEM crs
    │   │    * Options:
    │   │        - crs ['-c', '--crs'] "override for dem's crs"
    │   │        - hist ['-h', '--hist'] "Show dem deviation histogram"
    │   │        - reference_dem ['-r', '--reference-dem'] "Path to a reference DEM to compare to"
    │   │    * Arguments:
    │   │        - dem_path DEM_PATH "<click.types.Path object at 0x7e691a0c38c0>"
    │   ├── compose - Compose DEM patch that corresponds in coverage to a given reference product.
    │   │    * Options:
    │   │        - reference_product ['--reference-product'] "Product (.tiff, etc) to take footprint from. If not specified, active task output products are used as reference"
    │   │        - dem_dir ['--dem-dir'] "Directory with custom dem files. If not specified, key "custom_dem_dir" from the task is used NOTE  This argument is mutually EXCLUSIVE with  arguments: [eu-dem-only]."
    │   │        - eu_dem_only ['--eu-dem-only'] "Ignore dem-dir, use only eu-dem & srtm NOTE  This argument is mutually EXCLUSIVE with  arguments: [dem-dir]."
    │   │        - output_path ['--output-path'] "Path (including file name) for output tiff. If not specified, the task's default output(dem) path is used"
    │   │        - zone ['--zone'] "Whether to use zone or full products from task as a reference"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   └── edit-crs - Edit dataset (DEM?) crs. Use with caution!
    │        * Options:
    │            - crs ['-c', '--crs'] "new dem's crs"
    │        * Arguments:
    │            - path PATH "<click.types.Path object at 0x7e6921bdf7d0>"
    ├── info - Display ocli tsar configuration.
    │    * Options:
    │        - project ['--project', '-p'] "project name, use active project if omitted"
    ├── init - init projects workspace cli
    │    * Options:
    │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │        - projects_home ['--projects-home', '-p'] "path to tsar projects home"
    ├── list - list projects
    ├── manage
    │   ├── delete
    │   │   ├── orphan-ai-results
    │   │   │    * Options:
    │   │   │        - path ['--path'] "ai_results home directory"
    │   │   │        - all ['--all'] "delete all orphan ai_results, no prompt"
    │   │   └── orphan-stacks
    │   │        * Options:
    │   │            - path ['--path'] "stacks home directory"
    │   │            - all ['--all'] "delete all orphan stacks, no prompt"
    │   ├── list
    │   │   ├── all-ai-results
    │   │   │    * Options:
    │   │   │        - path ['--path'] "ai_results home directory"
    │   │   ├── all-stacks
    │   │   │    * Options:
    │   │   │        - path ['--path'] "stacks home directory"
    │   │   ├── bound-ai-results
    │   │   ├── bound-stacks
    │   │   ├── orphan-ai-results
    │   │   │    * Options:
    │   │   │        - path ['--path'] "ai_results home directory"
    │   │   ├── orphan-stacks
    │   │   │    * Options:
    │   │   │        - path ['--path'] "stacks home directory"
    │   │   └── tasks
    │   │        * Options:
    │   │            - with_eodata ['--with-eodata'] "including eodata storage"
    │   └── rebind
    │       ├── ai-results
    │       │    * Options:
    │       │        - path ['--path'] "ai_results home directory"
    │       └── stacks
    │            * Options:
    │                - path ['--path'] "stacks home directory"
    ├── pipe - Pipe-lined processing
    │   ├── cluster - Pipe-lined  Cluster AI
    │   │   ├── bucket - Process newest pair in task's bucket
    │   │   │    * Options:
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html for details)"
    │   │   │        - decimation ['--decimation'] "decimation"
    │   │   │        - dry_run ['--dry-run'] "Show steps to be invoked, no actual processing will be run"
    │   │   │        - run_process ['--run-process'] "run processing options"
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   ├── process - Run cluster task in  Pipeline
    │   │   │    * Options:
    │   │   │        - skip_verified ['--skip-verified'] "Skip stack creation if stack is valid"
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html for details)"
    │   │   │        - skip_json ['--skip'] "JSON string containing list of steps IDs to skip"
    │   │   │        - dry_run ['--dry-run'] "Show steps to be invoked, no actual processing will be run"
    │   │   │        - decimation ['--decimation'] "decimation"
    │   │   │        - master_id ['--master-id'] "Set task's master before processing"
    │   │   │        - slave_id ['--slave-id'] "Set task's master before processing"
    │   │   │    * Arguments:
    │   │   │        - zone ZONE "Choice(['zone', 'full'])"
    │   │   └── watch - update task slave and master to latest
    │   │        * Options:
    │   │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │            - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html for details)"
    │   │            - start_date ['--start-date'] "format:YYYY-MM-DD, skip products after (UTC timezone assumed)"
    │   │            - dry_run ['--dry-run'] "Show steps to be invoked, no actual processing will be run"
    │   │            - run_process ['--run-process'] "run processing options"
    │   │            - keep_slave ['--keep-slave'] "do not change slave NOTE  This argument is mutually EXCLUSIVE with  arguments: [next-best-fit]."
    │   │            - fit ['--next-best-fit'] "search by ROI area fit (0.0-1.0) NOTE  This argument is mutually EXCLUSIVE with  arguments: [next-in-bucket]."
    │   │            - next_in_bucket ['--next-in-bucket'] "search most recent product in the current master's bucket NOTE  This argument is mutually EXCLUSIVE with  arguments: [next-best-fit]."
    │   │        * Arguments:
    │   │            - zone ZONE "Choice(['zone', 'full'])"
    │   └── rvi - RVI pipeline commands
    │       ├── newest - Process newest product in task's bucket
    │       │    * Options:
    │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │       │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html for details)"
    │       │        - decimation ['--decimation'] "decimation"
    │       │        - dry_run ['--dry-run'] "Show steps to be invoked, no actual processing will be run"
    │       │        - run_process ['--run-process'] "run processing options"
    │       │    * Arguments:
    │       │        - zone ZONE "Choice(['zone', 'full'])"
    │       ├── process - Run task in  Pipeline
    │       │    * Options:
    │       │        - skip_verified ['--skip-verified'] "Skip stack creation if stack is valid"
    │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │       │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html for details)"
    │       │        - skip_json ['--skip'] "JSON string containing list of steps IDs to skip"
    │       │        - dry_run ['--dry-run'] "Show steps to be invoked, no actual processing will be run"
    │       │        - decimation ['--decimation'] "decimation"
    │       │    * Arguments:
    │       │        - zone ZONE "Choice(['zone', 'full'])"
    │       │        - args [SET] "STRING"
    │       └── watch - update task master to latest
    │            * Options:
    │                - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │                - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │                - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │                - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html for details)"
    │                - start_date ['--start-date'] "format:YYYY-MM-DD, skip products after (UTC timezone assumed)"
    │                - dry_run ['--dry-run'] "Show steps to be invoked, no actual processing will be run"
    │                - run_process ['--run-process'] "run processing options"
    │                - fit ['--next-best-fit'] "search by ROI area fit (0.0-1.0) NOTE  This argument is mutually EXCLUSIVE with  arguments: [next-in-bucket]."
    │                - next_in_bucket ['--next-in-bucket'] "search most recent product in the current master's bucket NOTE  This argument is mutually EXCLUSIVE with  arguments: [next-best-fit]."
    │            * Arguments:
    │                - zone ZONE "Choice(['zone', 'full'])"
    ├── product - Satellite products commands
    │    * Options:
    │        - satellite ['-s', '--satellite'] "staellite in question"
    │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── list - list satellite data
    │   │    * Options:
    │   │        - limit ['-l', '--limit'] "records output limit, -1 for no limit"
    │   │        - where ['-w', '--where'] "pandas Dataframe.query expression (see https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query for details)"
    │   │        - column ['-c', '--column'] "List of columns to display, use +colname1,colname2 to add columns to default, multiple options allowed"
    │   │        - sort ['-s', '--sort'] "sort columns, prefix with "-" for descending"
    │   │        - fit ['--fit'] "filter products by ROI coverage percentage"
    │   │        - local_only ['--local'] "Show only products that exist in <local> directory"
    │   │        - list_columns ['--columns'] "list available product columns"
    │   │        - aggregate ['--aggregate'] "aggregate products by time"
    │   │        - less ['--less'] "use pagination"
    │   ├── load - load data into DB
    │   │    * Options:
    │   │        - start_date ['-s', '--start-date'] "MIN product's date"
    │   │        - completion_date ['-c', '--completion-date'] "MAX product's date"
    │   │        - quiet ['--quiet', '-q'] "do not show progress"
    │   ├── ls - list directory with SAFE files and its  sub-directories and output products and  ...
    │   │    * Options:
    │   │        - limit ['-l', '--limit'] "limited number of records, -1 for no-limit"
    │   │        - less ['--less'] "use pagination"
    │   │    * Arguments:
    │   │        - path PATH "<click.types.Path object at 0x7e69623d6900>"
    │   └── show - show products DB info by PRODUCT_ID or RECORD number
    │        * Options:
    │            - force_id ['-i'] "interpret argument as PRODUCT_ID"
    │        * Arguments:
    │            - value <PRODUCT_ID | RECORD> "STRING"
    ├── repl - start interactive console
    │    * Options:
    │        - fullscreen ['--full-screen'] "bottom toolbar"
    │        - disable_system_commands ['--disable-system-commands'] "disable execution of system commands with ! prefix"
    ├── roi - region of interest (roi) commands
    │    * Options:
    │        - project ['--project', '-p'] "project name, use active project if omitted"
    │   ├── add - add roi to project database
    │   │    * Options:
    │   │        - activate ['-a', '--activate'] "Activate roi after creation"
    │   │        - name ['--name', '-n'] "roi name (should be unique in project)"
    │   │    * Arguments:
    │   │        - file FILE "<ocli.core.click_extensions.ExpandedPath object at 0x7e6969040200>"
    │   ├── delete - delete roi(s) from project
    │   │    * Options:
    │   │        - delete_all ['--all', '-a'] "delete all records"
    │   │        - roi_id ['-r', '--roi'] "roi index or name in question"
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   ├── export - Export roi to file
    │   │    * Options:
    │   │        - export_format ['--format', '-f'] "File Format"
    │   │        - roi_id ['-r', '--roi'] "roi index or name in question"
    │   │    * Arguments:
    │   │        - filename FILENAME "STRING"
    │   ├── list - show info and stats about roi in project
    │   │    * Options:
    │   │        - project ['--project', '-p'] "project name, use active project if omitted"
    │   │        - less ['--less'] "use pagination"
    │   └── set - set roi fields
    │        * Options:
    │            - queit ['--queit'] "Do not print results"
    │            - roi_id ['-r', '--roi'] "roi index or name in question"
    │        * Arguments:
    │            - args ARGS "STRING"
    ├── set - set workspace config parameters key=value pairs (multiple space-separated pairs  ...
    │    * Options:
    │        - quiet ['-q', '--quiet'] "Do not print config on success"
    │        - reset ['--reset'] "Reset project to defaults"
    │        - project ['--project', '-p'] "project name, use active project if omitted"
    │    * Arguments:
    │        - args KEY=VALUE "STRING"
    ├── task - task configuration and executions
    │    * Options:
    │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── activate - set Task as active for active project, <TASK NAME | INDEX> is name or index as i ...
    │   │    * Options:
    │   │        - project ['--project', '-p'] "project name, use active project if omitted"
    │   │        - quiet ['-q', '--quiet'] "Do not print results"
    │   │    * Arguments:
    │   │        - name <TASK NAME> "STRING"
    │   ├── clear - delete task data and results
    │   │    * Options:
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │        - master ['-m', '--master'] "delete master eodata"
    │   │        - slave ['-s', '--slave'] "delete slave eodata"
    │   │        - stack ['--stack'] "delete stack"
    │   │        - ai_results ['--ai-results'] "delete ai_results"
    │   │        - derived ['--derived'] "delete derived data: stack and ai_results"
    │   │        - all ['--all'] "delete all task's data: master, slave, stack, ai_results"
    │   ├── clone - clone existed task
    │   │    * Options:
    │   │        - activate ['-a', '--activate'] "Activate cloned task"
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │        - quiet ['--quiet-q'] "Show cloned task"
    │   │        - path ['--path'] "Path to source task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n', '--name'] "Source task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p', '--project'] "Source project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - target ['-t', '--target'] "Target project name , default to active project"
    │   │    * Arguments:
    │   │        - new_name <NEW NAME> "STRING"
    │   ├── create - create new task or reset existed to initial state
    │   │    * Options:
    │   │        - activate ['-a', '--activate'] "Activate task after creation"
    │   │        - template ['-t', '--template'] "template module name"
    │   │        - roi_id ['-r', '--roi'] "roi index or name in question"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │    * Arguments:
    │   │        - args ARGS "STRING"
    │   ├── delete - delete task settings and cache, to delete task results run 'task clear'
    │   │    * Options:
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── get-data - load satellite date into task.eodata directory
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - with_data ['-d', '--data'] "load meta-data and data"
    │   │        - master ['-m', '--master'] "load master"
    │   │        - slave ['-s', '--slave'] "load slave"
    │   │        - all_swath ['-a', '--all-swath'] "load all swathes measurements (REQUIRED by ESA SNAP stack processing"
    │   │        - dry_run ['--dry-run'] "dry-run, do not perform actual download"
    │   ├── link - Create symlinks for task-related directories
    │   │   └── stack - Link external stack files (.img, .hdr) to task's stack location
    │   │       └── from-eodata - Link stack files from eodata products. Suitable for stacks, previously loaded as ...
    │   │            * Options:
    │   │                - link_master ['-m', '--master'] "link master"
    │   │                - link_slave ['-s', '--slave'] "link slave"
    │   │                - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │                - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │                - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── list - list tasks for project
    │   │    * Options:
    │   │        - like ['--like'] "filter list by task name regex"
    │   │        - columns ['-c', '--column'] "additional task config columns, multiple allowed"
    │   │        - project ['--project', '-p'] "project name, use active project if omitted"
    │   ├── ls - list content of task master or slave directory
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - master ['-m', '--master'] "list master directory"
    │   │        - slave ['-s', '--slave'] "list  slave directory"
    │   │        - list_all ['-a', '--list_all'] "list  all task directories"
    │   │        - ai_results ['--ai'] "list  slave directory"
    │   │        - stack_results ['--stack'] "list  slave directory"
    │   │        - terse ['-t', '--terse'] "terse output"
    │   ├── make
    │   │   ├── predictor - Create / override existing predictor's config.json
    │   │   │    * Options:
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │   ├── recipe - Generate AI recipe file
    │   │   │    * Options:
    │   │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │   │        - roi_id ['-r', '--roi'] "roi index or name in question"
    │   │   │        - print_results ['--print'] "Print recipe, do not save file NOTE  This argument is mutually EXCLUSIVE with  arguments: [file]."
    │   │   │        - quiet ['--quiet', '-q'] ""
    │   │   │        - edit ['--edit'] "Open generated recipe in editor"
    │   │   │        - override ['--override'] "Override recipe file if exists"
    │   │   │        - force ['--force'] "dry-run, do not perform most of error checks, use to generate AI recipe for learning phase"
    │   │   │        - file ['-f', '--file'] "Override auto-generated AI recipe filename and path  NOTE  This argument is mutually EXCLUSIVE with  arguments: [print]."
    │   │   │        - zone_by_roi ['--zone-by-roi'] "Define zone by ROI envelope (rectangular bounding box containing all ROI points) NOTE  This argument is mutually EXCLUSIVE with  arguments: [zone]."
    │   │   │        - zone ['-z', '--zone'] "Define zone as minY minX maxY maxX in Pixels coordinates NOTE  This argument is mutually EXCLUSIVE with  arguments: [zone-by-roi]."
    │   │   │        - clusters ['-c', '--clusters'] "number of generated clusters in predictor. NOTE: used only in fit (learn) phase, ignored in predict phase"
    │   │   └── stack - Make products stack
    │   │       ├── aster - Make stack for ASTER from Level1B product
    │   │       │    * Options:
    │   │       │        - do_descaling ['--do-descaling'] "Descale DigitalNumbers to Radiance values"
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       ├── aster-l1t - Make stack for ASTER from Level1T product
    │   │       │    * Options:
    │   │       │        - do_descaling ['--do-descaling'] "Descale DigitalNumbers to Radiance values"
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       ├── landsat
    │   │       │    * Options:
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       ├── pc - Make stack from point clouds source
    │   │       │    * Options:
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       ├── s2 - Make stack for sentinel2 from Level2A product
    │   │       │    * Options:
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - sen2cor ['--sen2cor'] "If LEVEL1C product given, prepare a LEVEL2A product in stack folder. If LEVEL2A product given - ignored"
    │   │       │        - sen2cor_options ['--sen2cor-options'] "Options to pass to sen2cor. Should be quoted"
    │   │       │        - clean_l2a_from_stackdir ['--clean-l2a-from-stackdir'] "If LEVEL2A products found in stack folder, clean them out prior to running sen2cor"
    │   │       │        - use_l2a_from_stackdir ['--use-l2a-from-stackdir'] "If a single corresponding LEVEL2A product is found in stack folder use it as input. Implies --no-clean-l2a-from-stackdir --no-sen2cor. Use it when NOT using any sen2cor variants"
    │   │       ├── sarpy - Make Sentinel-1 or TSX stack with SARPY processor
    │   │       │    * Options:
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - skip_verified ['--skip-verified'] "Skip stack creation if stack is valid"
    │   │       │        - decimation ['--decimation'] "decimation  vertical horizontal. Default (1,6) for Sentinel-1, (1,1) for TSX"
    │   │       │        - decimation_filter ['--filter'] "decimation filter"
    │   │       │        - single ['--single'] "Single product stack"
    │   │       │        - no_clean ['--no-clean'] "do not clean intermediate results"
    │   │       │        - latlon_bbox ['--latlon_bbox'] "(Lat_min Lon_min Lat_max Lon_max) bounding box. When bbox is used, burst indices are ignored"
    │   │       │        - bbox_by_roi ['--bbox_by_roi'] "Set latlon_bbox extents according to ROI"
    │   │       │        - roi_id ['-r', '--roi'] "roi index or name in question"
    │   │       │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │       ├── shape - Make stack from shape files
    │   │       ├── snap - Make Sentinel-1 stack with ESA SNAP pipeline
    │   │       │    * Options:
    │   │       │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │       │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │       │        - dry_run ['--dry-run'] "dry-run, do not perform actual running"
    │   │       │        - gpt_cache ['--gpt-cache'] "ESA SNAP gpt RAM cache max size"
    │   │       │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   │       └── wv3 - Make stack for worldview 3 disaligned bands
    │   │            * Options:
    │   │                - ignore_missing_bands ['--ignore-missing-bands'] ""
    │   │                - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │                - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │                - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   ├── preview - Preview  task geometry
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - burst_range ['-b', '--burst'] "arguments <start> <stop>,Limit to bursts in range [start:stop]"
    │   │        - swath ['-s', '--swath'] "Show only listed swathes"
    │   │        - basemap ['-m', '--map'] "Background map style"
    │   │        - zoom_basemap ['-z', '--zoom-basemap'] "Background map zoom factor [6-14]"
    │   ├── roi-by-master - add ROI to project database
    │   │    * Options:
    │   │        - name ['--name', '-n'] "ROI name (should be unique in project)"
    │   │        - yes ['-y', '--yes'] "Do not ask for confirmation."
    │   ├── say - Get task config key (for scripting purposes)
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - raw ['--raw'] "print not-formatted or extended values"
    │   │        - info ['--info'] "Print errors"
    │   │    * Arguments:
    │   │        - key KEY "STRING"
    │   ├── set - set parameters of task, multiple key=value pairs allowed
    │   │    * Options:
    │   │        - quiet ['-q', '--quiet'] "Do not print results"
    │   │        - force ['--force'] "Add new or set protected tag"
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │    * Arguments:
    │   │        - args ARGS "STRING"
    │   ├── show - show task information
    │   │    * Options:
    │   │        - say ['--say'] "show resolved (actual) values"
    │   │        - swath ['--swath'] "show ROI fit by swath/burst"
    │   │        - recipe ['--recipe'] "show ROI AI recipe file"
    │   │        - recipe_key ['-k', '--key'] "show recipe key, dot delimited"
    │   │        - no_color ['--no-color'] "Disable terminal colors"
    │   │        - edit ['--edit'] "Open in editor"
    │   │        - editor ['--editor'] "the user’s defined editor for recipe editing"
    │   │        - less ['--less'] "use pagination"
    │   ├── template - template specific commands
    │   ├── test-pattern - test Rvi
    │   │    * Options:
    │   │        - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │   │        - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │   │        - fn_prefix ['--friendly-name'] "Friendly name pattern"
    │   │        - cos_prefix ['--cos-key'] "COS key pattern"
    │   └── update - update task's keys with values from --source task (if source value is not empty)
    │        * Options:
    │            - force ['--force'] "Update if source task is invalid"
    │            - template_only ['--template-only'] "Update only template keys"
    │            - all_values ['--all-values'] "DO not skip  source empty values"
    │            - source ['-s', '--source'] "Source task name in the task project"
    │            - yes ['-y', '--yes'] "Do not ask for confirmation."
    │            - quiet ['-q', '--quiet'] "Do not print results"
    │            - dry_run ['--dry-run'] "dry-run, do not perform actual download"
    │            - path ['--path'] "Path to task directory. NOTE  This argument is mutually EXCLUSIVE with  arguments: [name, project]."
    │            - name ['-n'] "Task name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    │            - project ['-p'] "Project name. NOTE  This argument is mutually EXCLUSIVE with  arguments: [path]."
    └── workspace - projects workspace commands
        ├── activate - Activate project
        │    * Arguments:
        │        - name <NAME | RECORD> "STRING"
        ├── create - create new or re-recreate existed project  in current workspace
        │    * Options:
        │        - activate ['-a', '--activate'] "Activate project after creation"
        │        - config ['-с', '--config'] "Set uploading configuration"
        │        - yes ['-y', '--yes'] "Do not ask for confirmation."
        │        - name ['--name', '-n'] "project name"
        ├── deactivate - Deactivate project
        └── delete - delete project directory
             * Options:
                 - yes ['-y', '--yes'] "Do not ask for confirmation."
                 - name ['--name', '-n'] "project name"