dbtSpec top-level property

FigSpec dbtSpec
final

Completion spec for dbt CLI

Implementation

final FigSpec dbtSpec = FigSpec(
  name: 'dbt',
  description: 'CLI for dbt - Data Build Tool',
  subcommands: [

    Subcommand(
      name: 'build',
      description: 'Run models, test tests, snapshot snapshots, and seed seeds',
      options: [

        Option(
          name: '--full-refresh',
          description: 'Treat incremental models as table models'
        ),
        Option(
          name: ['-x', '--fail-fast'],
          description: 'Exit immediately if a single model fails to build'
        ),
        Option(
          name: '--profiles-dir',
          description: 'Set the profiles directory',
          args: [
            Arg(
            name: 'directory',
            description: 'Directory containing profiles.yml',
            template: 'folders',
            suggestions: [

              FigSuggestion(name: 'profiles')
            ]
          )
          ]
        ),
        Option(
          name: '--profile',
          description: 'Use the selected profile',
          args: [
            Arg(
            name: 'name',
            description: 'Name of profile to use when running dbt project',
            suggestions: [

              FigSuggestion(name: 'default')
            ]
          )
          ]
        ),
        Option(
          name: '--target',
          description: 'Target profile configuration i.e. prod/dev',
          args: [
            Arg(
            name: 'profile',
            description: 'Target profile configuration (dev/prod)',
            suggestions: [

              FigSuggestion(name: 'dev'),
              FigSuggestion(name: 'prod')
            ]
          )
          ]
        ),
        Option(
          name: '--vars',
          description: 'Variable values to override dbt_project.yml',
          args: [
            Arg(
            name: 'variables',
            description: 'A short YAML string eg. \'{my_variable: my_value}\''
          )
          ]
        ),
        Option(
          name: '--threads',
          description: 'Number of concurrent database jobs',
          args: [
            Arg(
            name: 'THREAD'
          )
          ]
        ),
        Option(
          name: ['-s', '--select'],
          description: 'Select subset of models',
          args: [
            Arg(
            name: 'subset',
            description: 'Select subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Exclude subset of models',
          args: [
            Arg(
            name: 'subset',
            description: 'Exclude subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--bypass-cache',
          description: 'Bypass the cache'
        )
      ]
    ),
    Subcommand(
      name: 'run',
      description: 'Runs the models in a project',
      options: [

        Option(
          name: '--full-refresh',
          description: 'Treat incremental models as table models'
        ),
        Option(
          name: ['-x', '--fail-fast'],
          description: 'Exit immediately if a single model fails to build'
        ),
        Option(
          name: '--use-colors',
          description: 'Default value -- colorize run logs'
        ),
        Option(
          name: '--no-use-colors',
          description: 'Disable log colorizing'
        ),
        Option(
          name: '--profiles-dir',
          description: 'Set the profiles directory',
          args: [
            Arg(
            name: 'directory',
            description: 'Directory containing profiles.yml',
            template: 'folders',
            suggestions: [

              FigSuggestion(name: 'profiles')
            ]
          )
          ]
        ),
        Option(
          name: '--profile',
          description: 'Select the profile to use',
          args: [
            Arg(
            name: 'name',
            description: 'Name of profile to use when running dbt project',
            suggestions: [

              FigSuggestion(name: 'default')
            ]
          )
          ]
        ),
        Option(
          name: '--target',
          description: 'The target profile',
          args: [
            Arg(
            name: 'Target profile',
            description: 'Target profile configuration (dev/prod)',
            suggestions: [

              FigSuggestion(name: 'dev'),
              FigSuggestion(name: 'prod')
            ]
          )
          ]
        ),
        Option(
          name: '--vars',
          description: 'Variable values to override dbt_project.yml',
          args: [
            Arg(
            name: 'variables',
            description: 'A short YAML string eg. \'{my_variable: my_value}\''
          )
          ]
        ),
        Option(
          name: '--threads',
          description: 'Number of concurrent database jobs',
          args: [
            Arg(
            name: 'thread'
          )
          ]
        ),
        Option(
          name: ['-s', '--select'],
          description: 'Select subset of models',
          args: [
            Arg(
            name: 'subset',
            description: 'Select subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Exclude subset of models',
          args: [
            Arg(
            name: 'subset',
            description: 'Exclude subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--bypass-cache',
          description: 'Bypass the cache'
        )
      ]
    ),
    Subcommand(
      name: 'debug',
      description: 'Debugs dbt connections and projects',
      options: [

        Option(
          name: '--config-dir'
        )
      ]
    ),
    Subcommand(
      name: 'init',
      description: 'Initializes a new dbt project',
      args: [
        Arg(
        name: 'name'
      )
      ],
      options: [

        Option(
          name: '--adapter',
          description: 'Add an adapter',
          args: [
            Arg(
            name: 'adapter',
            description: 'E.g. big quer'
          )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'compile',
      description: 'Compiles (but does not run) the models in a project',
      options: [

        Option(
          name: '--profiles-dir',
          description: 'Set the profiles directory',
          args: [
            Arg(
            name: 'directory',
            description: 'Directory containing profiles.yml',
            template: 'folders',
            suggestions: [

              FigSuggestion(name: 'profiles')
            ]
          )
          ]
        ),
        Option(
          name: '--profile',
          description: 'Select the profile to use',
          args: [
            Arg(
            name: 'name',
            description: 'Name of profile to use when running dbt project',
            suggestions: [

              FigSuggestion(name: 'default')
            ]
          )
          ]
        ),
        Option(
          name: '--target',
          description: 'The target profile',
          args: [
            Arg(
            name: 'Target profile',
            description: 'Target profile configuration (dev/prod)',
            suggestions: [

              FigSuggestion(name: 'dev'),
              FigSuggestion(name: 'prod')
            ]
          )
          ]
        ),
        Option(
          name: '--vars',
          description: 'Variable values to override dbt_project.yml',
          args: [
            Arg(
            name: 'Variable values',
            description: 'A short YAML string eg. \'{my_variable: my_value}\''
          )
          ]
        ),
        Option(
          name: '--threads',
          description: 'Number of concurrent database jobs',
          args: [
            Arg(
            name: 'THREAD'
          )
          ]
        ),
        Option(
          name: '--select',
          description: 'Select subset of models',
          args: [
            Arg(
            name: 'Select subset',
            description: 'Select subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Exclude subset of models',
          args: [
            Arg(
            name: 'Exclude subset',
            description: 'Exclude subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--bypass-cache',
          description: 'Bypass the cache'
        ),
        Option(
          name: '--selector',
          description: 'This flag specifies one or more named selectors, defined in a <selector name>.yml file',
          args: [
            Arg(
            name: 'YAML selector file name',
            isVariadic: true
          )
          ]
        ),
        Option(
          name: '--defer',
          description: 'Defer'
        )
      ]
    ),
    Subcommand(
      name: 'test',
      description: 'Executes tests defined in a project',
      options: [

        Option(
          name: ['-x', '--fail-fast'],
          description: 'Exit immediately if a single model fails to build'
        ),
        Option(
          name: '--profiles-dir',
          description: 'Set the profiles directory',
          args: [
            Arg(
            name: 'directory',
            description: 'Directory containing profiles.yml',
            template: 'folders',
            suggestions: [

              FigSuggestion(name: 'profiles')
            ]
          )
          ]
        ),
        Option(
          name: '--profile',
          description: 'Select the profile to use',
          args: [
            Arg(
            name: 'name',
            description: 'Name of profile to use when running dbt project',
            suggestions: [

              FigSuggestion(name: 'default')
            ]
          )
          ]
        ),
        Option(
          name: '--data',
          description: 'Run only custom data tests'
        ),
        Option(
          name: '--schema',
          description: 'Run only schema tests'
        ),
        Option(
          name: ['-s', '--select'],
          description: 'Select subset of models',
          args: [
            Arg(
            name: 'subset',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Exclude subset of models',
          args: [
            Arg(
            name: 'subset',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--bypass-cache',
          description: 'Bypass the cache'
        ),
        Option(
          name: '--selector',
          description: 'This flag specifies one or more named selectors, defined in a <selector name>.yml file',
          args: [
            Arg(
            name: 'YAML selector file name',
            isVariadic: true
          )
          ]
        ),
        Option(
          name: '--defer',
          description: 'Defer'
        )
      ]
    ),
    Subcommand(
      name: 'deps',
      description: 'Downloads dependencies for a project'
    ),
    Subcommand(
      name: 'snapshot',
      description: 'Executes \'snapshot\' jobs defined in a project',
      options: [

        Option(
          name: '--profiles-dir',
          description: 'Set the profiles directory',
          args: [
            Arg(
            name: 'profiles directory',
            description: 'Directory containing profiles.yml',
            template: 'folders',
            suggestions: [

              FigSuggestion(name: 'profiles')
            ]
          )
          ]
        ),
        Option(
          name: ['-x', '--fail-fast'],
          description: 'Exit immediately if a single model fails to build'
        ),
        Option(
          name: '--profile',
          description: 'Select the profile to use',
          args: [
            Arg(
            name: 'Profile name',
            description: 'Name of profile to use when running dbt project',
            suggestions: [

              FigSuggestion(name: 'default')
            ]
          )
          ]
        ),
        Option(
          name: '--target',
          description: 'The target profile',
          args: [
            Arg(
            name: 'Target profile',
            description: 'Target profile configuration (dev/prod)',
            suggestions: [

              FigSuggestion(name: 'dev'),
              FigSuggestion(name: 'prod')
            ]
          )
          ]
        ),
        Option(
          name: '--vars',
          description: 'Variable values to override dbt_project.yml',
          args: [
            Arg(
            name: 'Variable values',
            description: 'A short YAML string eg. \'{my_variable: my_value}\''
          )
          ]
        ),
        Option(
          name: '--threads',
          description: 'Number of concurrent database jobs',
          args: [
            Arg(
            name: 'threa'
          )
          ]
        ),
        Option(
          name: '--select',
          description: 'Select subset of models',
          args: [
            Arg(
            name: 'subset',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Exclude subset of models',
          args: [
            Arg(
            name: 'Exclude subset',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--bypass-cache',
          description: 'Bypass the cache'
        )
      ]
    ),
    Subcommand(
      name: 'clean',
      description: 'Deletes artifacts present in the dbt project'
    ),
    Subcommand(
      name: 'seed',
      description: 'Loads CSV files into the database',
      options: [

        Option(
          name: '--profiles-dir',
          description: 'Set the profiles directory',
          args: [
            Arg(
            name: 'profiles directory',
            description: 'Directory containing profiles.yml',
            template: 'folders',
            suggestions: [

              FigSuggestion(name: 'profiles')
            ]
          )
          ]
        ),
        Option(
          name: '--profile',
          description: 'Select the profile to use',
          args: [
            Arg(
            name: 'Profile name',
            description: 'Name of profile to use when running dbt project',
            suggestions: [

              FigSuggestion(name: 'default')
            ]
          )
          ]
        ),
        Option(
          name: ['-x', '--fail-fast'],
          description: 'Exit immediately if a single model fails to build'
        ),
        Option(
          name: '--select',
          description: 'Run specific seeds',
          args: [
            Arg(
            name: 'Select subset',
            description: 'E.g. country_codes',
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Exclude subset of models',
          args: [
            Arg(
            name: 'Exclude subset',
            description: 'Exclude subset of models',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--bypass-cache',
          description: 'Bypass the cache'
        ),
        Option(
          name: '--selector',
          description: 'This flag specifies one or more named selectors, defined in a <selector name>.yml file',
          args: [
            Arg(
            name: 'YAML selector file name',
            isVariadic: true
          )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'docs',
      description: 'Generates documentation for a project',
      subcommands: [

        Subcommand(
          name: 'generate',
          description: 'Generate your project\'s documentation website',
          options: [

            Option(
              name: '--no-compile',
              description: 'Skip re-compilation'
            )
          ]
        ),
        Subcommand(
          name: 'serve',
          description: 'Serve your documentation on a local webserver (default prot 8000)',
          options: [

            Option(
              name: '--profiles-dir',
              description: 'Skip re-compilation',
              args: [
                Arg(
                name: 'PROFILES_DIR',
                description: 'Path to profiles directory',
                template: 'folders'
              )
              ]
            ),
            Option(
              name: '--profile',
              description: 'Choose a profile',
              args: [
                Arg(
                name: 'PROFILE NAME'
              )
              ]
            ),
            Option(
              name: '--target',
              description: 'The target profile',
              args: [
                Arg(
                name: 'Target profile',
                description: 'Target profile configuration (dev/prod)',
                suggestions: [

                  FigSuggestion(name: 'dev'),
                  FigSuggestion(name: 'prod')
                ]
              )
              ]
            ),
            Option(
              name: '--port',
              description: 'Choose a port',
              args: [
                Arg(
                name: 'port number',
                description: 'Default is 8000'
              )
              ]
            )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'source',
      description: 'Provides tools for working with source data (including validating that sources are \'fresh\')',
      subcommands: [

        Subcommand(
          name: 'snapshot-freshness',
          options: [

            Option(
              name: ['-o', '--output'],
              description: 'Override the destination for sources.json',
              args: [
                Arg(
                name: 'FILEPATH',
                template: 'filepaths'
              )
              ]
            ),
            Option(
              name: '--select',
              description: 'This flag specifies one or more selection-type arguments used to filter the nodes returned by the dbt ls command',
              args: [
                Arg(
                name: 'Select subset',
                isVariadic: true,
                suggestions: [

                  FigSuggestion(name: 'path:'),
                  FigSuggestion(name: 'tag:'),
                  FigSuggestion(name: 'config:'),
                  FigSuggestion(name: 'test_type:'),
                  FigSuggestion(name: 'test_name:')
                ]
              )
              ]
            )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'run-operation',
      description: 'Runs arbitrary maintenance SQL against the database',
      args: [
        Arg(
        name: 'MACRO',
        description: 'Dbt will call this macro with the supplied arguments and then exit'
      )
      ],
      options: [

        Option(
          name: '--args',
          description: 'Supply arguments to the macro',
          args: [
            Arg(
            name: 'ARGS',
            description: 'A short YAML string eg. \'{my_variable: my_value}\''
          )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'rpc',
      description: 'Runs an RPC server that clients can submit queries to',
      options: [

        Option(
          name: '--host',
          description: 'Specify the host to listen on',
          args: [
            Arg(
            name: 'HOST',
            description: 'Default: 0.0.0.0'
          )
          ]
        ),
        Option(
          name: '--port',
          description: 'The port to use',
          args: [
            Arg(
            name: 'PORT',
            description: 'Default: 8580'
          )
          ]
        )
      ]
    ),
    Subcommand(
      name: ['ls', 'list'],
      description: 'Lists resources defined in a dbt project',
      options: [

        Option(
          name: '--resource-type',
          description: 'This flag limits the \'resource types\' that dbt will return in the dbt ls command. By default, the following resources are included in the results of dbt ls: models, snapshots, seeds, tests, and sources',
          args: [
            Arg(
            name: 'resource-type',
            suggestions: [

              FigSuggestion(name: 'source'),
              FigSuggestion(name: 'analysis'),
              FigSuggestion(name: 'model'),
              FigSuggestion(name: 'snapshot'),
              FigSuggestion(name: 'test'),
              FigSuggestion(name: 'seed'),
              FigSuggestion(name: 'default'),
              FigSuggestion(name: 'all')
            ]
          )
          ]
        ),
        Option(
          name: ['-s', '--select'],
          description: 'This flag specifies one or more selection-type arguments used to filter the nodes returned by the dbt ls command',
          args: [
            Arg(
            name: 'SELECTION_ARG',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--exclude',
          description: 'Specify selectors that should be excluded from the list of returned nodes',
          args: [
            Arg(
            name: 'SELECTOR',
            isVariadic: true,
            suggestions: [

              FigSuggestion(name: 'path:'),
              FigSuggestion(name: 'tag:'),
              FigSuggestion(name: 'config:'),
              FigSuggestion(name: 'test_type:'),
              FigSuggestion(name: 'test_name:')
            ]
          )
          ]
        ),
        Option(
          name: '--selector',
          description: 'This flag specifies one or more named selectors, defined in a <selector name>.yml file',
          args: [
            Arg(
            name: 'YAML selector file name',
            isVariadic: true
          )
          ]
        ),
        Option(
          name: '--output',
          description: 'This flag controls the format of output from the dbt ls command',
          args: [
            Arg(
            name: 'output',
            suggestions: [

              FigSuggestion(name: 'json'),
              FigSuggestion(name: 'name'),
              FigSuggestion(name: 'path'),
              FigSuggestion(name: 'selector')
            ],
            isVariadic: true
          )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'parse',
      description: 'Parse dbt project and write detailed timing information'
    )
  ],
  options: [

    Option(
      name: '--version',
      description: 'Currently installed version'
    ),
    Option(
      name: ['-r', '--record-timing-info'],
      description: 'Create a new file to record timing info',
      args: [
        Arg(
        name: 'file name',
        description: 'Create a new file to record timing info'
      )
      ]
    ),
    Option(
      name: ['-d', '--debug'],
      description: 'Redirect debug logs to standard out'
    ),
    Option(
      name: '--log-format',
      description: 'Specify how dbt\'s logs should be formatted',
      args: [
        Arg(
        name: 'log format',
        suggestions: [

          FigSuggestion(name: 'text'),
          FigSuggestion(name: 'json'),
          FigSuggestion(name: 'default')
        ]
      )
      ]
    ),
    Option(
      name: '--no-write-json',
      description: 'Prevent dbt from writing JSOn artifacts to the \'target/\' directory'
    ),
    Option(
      name: ['-S', '--strict'],
      description: 'Perform extra validation of dbt objects and internal consistency checks during compilation. Use only during development'
    ),
    Option(
      name: '--warn-error',
      description: 'Convert dbt warnings into errors'
    ),
    Option(
      name: '--partial-parse',
      description: 'Configure partial parsing for your project'
    ),
    Option(
      name: '--no-partial-parse',
      description: 'Turn off partial parsing for your project'
    ),
    Option(
      name: '--use-colors',
      description: 'Default value -- colorize run logs'
    ),
    Option(
      name: '--no-use-colors',
      description: 'Disable log colorizing'
    )
  ]
);