easSpec top-level property

FigSpec easSpec
final

Completion spec for eas CLI

Implementation

final FigSpec easSpec = FigSpec(
    name: 'eas',
    description:
        'EAS CLI is the command-line app that you will use to interact with EAS services from your terminal',
    subcommands: [
      Subcommand(
          name: ['account:login', 'login'],
          description: 'Log in with your Expo account'),
      Subcommand(name: ['account:logout', 'logout'], description: 'Log out'),
      Subcommand(
          name: ['account:view', 'whoami'],
          description: 'Show the username you are logged in as'),
      Subcommand(
          name: 'analytics',
          description: 'Display or change analytics settings',
          args: [
            Arg(name: 'Status', isOptional: true, suggestions: [
              FigSuggestion(name: 'on'),
              FigSuggestion(name: 'off')
            ])
          ]),
      Subcommand(
          name: 'autocomplete',
          description: 'Display autocomplete installation instructions',
          options: [
            Option(
                name: ['-r', '--refresh-cache'],
                description: 'Refresh cache (ignores displaying instructions)')
          ],
          args: [
            Arg(
                name: 'Shell',
                description:
                    'Select the shell you\'d like to display autocomplete information for',
                suggestions: [
                  FigSuggestion(name: 'zsh'),
                  FigSuggestion(name: 'bash')
                ])
          ]),
      Subcommand(name: 'branch:create', description: 'Create a branch', args: [
        Arg(name: 'Name', description: 'Name of the branch to create')
      ], options: [
        Option(
            name: '--json',
            description:
                'Enable JSON output, non-JSON messages will be printed to stderr'),
        Option(
            name: '--non-interactive',
            description: 'Run the command in non-interactive mode')
      ]),
      Subcommand(name: 'branch:delete', description: 'Delete a branch', args: [
        Arg(name: 'Name', description: 'Name of the branch to delete')
      ], options: [
        Option(
            name: '--json',
            description:
                'Enable JSON output, non-JSON messages will be printed to stderr'),
        Option(
            name: '--non-interactive',
            description: 'Run the command in non-interactive mode')
      ]),
      Subcommand(
          name: 'branch:list',
          description: 'List all branches',
          options: [
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--limit',
                description:
                    'The number of items to fetch each query. Defaults to 50 and is capped at 100',
                args: [
                  Arg(
                    name: 'Limit',
                    defaultValue: '50',
                    suggestions: generateRange(50, 100),
                  ),
                ]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--offset',
                description:
                    'Start queries from specified index. Use for paginating results. Defaults to 0',
                args: [Arg(name: 'Offset', defaultValue: '0')])
          ]),
      Subcommand(
          name: 'branch:rename',
          description: 'Rename a branch',
          options: [
            Option(
                name: '--from',
                description: 'Current name of the branch',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--to',
                description: 'New name of the branch',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(name: 'branch:view', description: 'View a branch', args: [
        Arg(name: 'Name', description: 'Name of the branch to view')
      ], options: [
        Option(
            name: '--json',
            description:
                'Enable JSON output, non-JSON messages will be printed to stderr'),
        Option(
            name: '--limit',
            description:
                'The number of items to fetch each query. Defaults to 25 and is capped at 50',
            args: [
              Arg(
                  name: 'Limit',
                  suggestions: generateRange(25, 50),
                  defaultValue: '25')
            ]),
        Option(
            name: '--non-interactive',
            description: 'Run the command in non-interactive mode'),
        Option(
            name: '--offset',
            description:
                'Start queries from specified index. Use for paginating results. Defaults to 0',
            args: [Arg(name: 'Offset', defaultValue: '0')])
      ]),
      Subcommand(name: 'build', description: 'Start a build', options: [
        Option(
            name: ['-e', '--profile'],
            description:
                'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json',
            args: [Arg(name: 'Profile Name')]),
        Option(
            name: ['-m', '--message'],
            description: 'A short message describing the build',
            args: [Arg(name: 'Value')]),
        Option(name: [
          '-p',
          '--platform'
        ], args: [
          Arg(name: 'Platform', suggestions: [
            FigSuggestion(name: 'android'),
            FigSuggestion(name: 'ios'),
            FigSuggestion(name: 'all')
          ])
        ]),
        Option(
            name: '--auto-submit',
            description:
                'Submit on build complete using the submit profile with the same name as the build profile'),
        Option(
            name: '--auto-submit-with-profile',
            description:
                'Submit on build complete using the submit profile with provided name',
            args: [Arg(name: 'Profile Name')]),
        Option(
            name: '--clear-cache', description: 'Clear cache before the build'),
        Option(
            name: '--json',
            description:
                'Enable JSON output, non-JSON messages will be printed to stderr'),
        Option(
            name: '--local', description: 'Run build locally [experimental]'),
        Option(
            name: '--non-interactive',
            description: 'Run the command in non-interactive mode'),
        Option(
            name: '--output',
            description: 'Output path for local build',
            args: [Arg(name: 'Value')]),
        Option(
            name: '--no-wait',
            description: 'Don\'t wait for build(s) to complete'),
        Option(name: '--wait', description: 'Wait for build(s) to complete')
      ]),
      Subcommand(name: 'build:cancel', description: 'Cancel a build', options: [
        Option(
            name: '--non-interactive',
            description: 'Run the command in non-interactive mode')
      ], args: [
        Arg(name: 'Build ID')
      ]),
      Subcommand(
          name: 'build:configure',
          description: 'Configure the project to support EAS build',
          options: [
            Option(
                name: ['-p', '--platform'],
                description: 'Platform to configure',
                args: [
                  Arg(name: 'Platform', suggestions: [
                    FigSuggestion(name: 'android'),
                    FigSuggestion(name: 'ios'),
                    FigSuggestion(name: 'all')
                  ])
                ])
          ]),
      Subcommand(
          name: 'build:inspect',
          description:
              'Inspect the state of the project at specific build stages, useful for troubleshooting',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json',
                args: [Arg(name: 'Profile Name')]),
            Option(
                name: ['-o', '--output'],
                description: '(required) Output directory',
                args: [Arg(name: 'Output directory')]),
            Option(
                name: ['-p', '--platform'],
                description: '(required)',
                args: [
                  Arg(name: 'Platform', suggestions: [
                    FigSuggestion(name: 'android'),
                    FigSuggestion(name: 'ios')
                  ])
                ]),
            Option(
                name: ['-s', '--stage'],
                // TS_UNCONVERTED_START (description)
// `(required) Stage of the build you want to inspect.
// archive - builds the project archive that would be uploaded to EAS when building
// pre-build - prepares the project to be built with Gradle/Xcode. Does not run the native build.
// post-build - builds the native project and leaves the output directory for inspection`
// TS_UNCONVERTED_END
                description: null,
                args: [
                  Arg(name: 'Build Stage', suggestions: [
                    FigSuggestion(name: 'archive'),
                    FigSuggestion(name: 'pre-build'),
                    FigSuggestion(name: 'post-build')
                  ])
                ]),
            Option(name: ['-v', '--verbose']),
            Option(
                name: '--force',
                description: 'Delete OUTPUT_DIRECTORY if it already exists')
          ]),
      Subcommand(
          name: 'build:list',
          description: 'List all builds for your project',
          options: [
            Option(name: '--appBuildVersion', args: [Arg(name: 'Value')]),
            Option(name: '--appIdentifier', args: [Arg(name: 'Value')]),
            Option(name: '--appVersion', args: [Arg(name: 'Value')]),
            Option(name: '--buildProfile', args: [Arg(name: 'Value')]),
            Option(name: '--channel', args: [Arg(name: 'Value')]),
            Option(name: '--distribution', args: [
              Arg(name: 'Distribution', suggestions: [
                FigSuggestion(name: 'store'),
                FigSuggestion(name: 'internal'),
                FigSuggestion(name: 'simulator')
              ])
            ]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--limit',
                description:
                    'The number of items to fetch each query. Defaults to 10 and is capped at 50',
                args: [
                  Arg(
                    name: 'Limit',
                    defaultValue: '10',
                    suggestions: generateRange(10, 50),
                  )
                ]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--offset',
                description:
                    'Start queries from specified index. Use for paginating results. Defaults to 0',
                args: [Arg(name: 'Offset', defaultValue: '0')]),
            Option(name: '--platform', args: [
              Arg(name: 'Platform', suggestions: [
                FigSuggestion(name: 'all'),
                FigSuggestion(name: 'android'),
                FigSuggestion(name: 'ios')
              ])
            ]),
            Option(name: '--runtimeVersion', args: [Arg(name: 'Value')]),
            Option(name: '--sdkVersion', args: [Arg(name: 'Value')]),
            Option(name: '--status', args: [
              Arg(name: 'Status', suggestions: [
                FigSuggestion(name: 'new'),
                FigSuggestion(name: 'in-queue'),
                FigSuggestion(name: 'in-progress'),
                FigSuggestion(name: 'errored'),
                FigSuggestion(name: 'finished'),
                FigSuggestion(name: 'canceled')
              ])
            ])
          ]),
      Subcommand(
          name: ['build:submit', 'submit'],
          description: 'Submit app binary to App Store and/or Play Store',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json',
                args: [Arg(name: 'Value')]),
            Option(name: [
              '-p',
              '--platform'
            ], args: [
              Arg(name: 'Platform', suggestions: [
                FigSuggestion(name: 'android'),
                FigSuggestion(name: 'ios'),
                FigSuggestion(name: 'all')
              ])
            ]),
            Option(
                name: '--id',
                description: 'ID of the build to submit',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--latest',
                description: 'Submit the latest build for specified platform'),
            Option(
                name: '--non-interactive',
                description: 'Run command in non-interactive mode'),
            Option(
                name: '--path',
                description: 'Path to the .apk/.aab/.ipa file',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--url',
                description: 'App archive url',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--verbose',
                description: 'Always print logs from Submission Service'),
            Option(
                name: '--no-wait',
                description: 'Don\'t wait for submission to complete'),
            Option(
                name: '--wait', description: 'Wait for submission to complete')
          ]),
      Subcommand(
          name: 'build:version:set',
          description: 'Update version of an app',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json',
                args: [Arg(name: 'Profile Name')]),
            Option(name: [
              '-p',
              '--platform'
            ], args: [
              Arg(name: 'Platform', suggestions: [
                FigSuggestion(name: 'android'),
                FigSuggestion(name: 'ios')
              ])
            ])
          ]),
      Subcommand(
          name: 'build:version:sync',
          description:
              'Update a version in native code with a value stored on EAS servers',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json',
                args: [Arg(name: 'Profile Name')]),
            Option(name: [
              '-p',
              '--platform'
            ], args: [
              Arg(name: 'Platform', suggestions: [
                FigSuggestion(name: 'android'),
                FigSuggestion(name: 'ios'),
                FigSuggestion(name: 'all')
              ])
            ])
          ]),
      Subcommand(
          name: 'build:view',
          description: 'View a build for your project',
          options: [
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr')
          ],
          args: [
            Arg(name: 'Build ID')
          ]),
      Subcommand(
          name: 'channel:create',
          description: 'Create a channel',
          args: [
            Arg(name: 'Name', description: 'Name of the channel to create')
          ],
          options: [
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode')
          ]),
      Subcommand(
          name: 'channel:edit',
          description: 'Point a channel at a new branch',
          args: [
            Arg(name: 'Name', description: 'Name of the channel to edit')
          ],
          options: [
            Option(
                name: '--branch',
                description: 'Name of the branch to point to',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode')
          ]),
      Subcommand(
          name: 'channel:list',
          description: 'List all channels',
          options: [
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--limit',
                description:
                    'The number of items to fetch each query. Defaults to 10 and is capped at 25',
                args: [
                  Arg(
                      name: 'Limit',
                      defaultValue: '10',
                      suggestions: generateRange(10, 25))
                ]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--offset',
                description:
                    'Start queries from specified index. Use for paginating results. Defaults to 0',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(name: 'channel:view', description: 'View a channel', args: [
        Arg(name: 'Name', description: 'Name of the channel to view')
      ], options: [
        Option(
            name: '--json',
            description:
                'Enable JSON output, non-JSON messages will be printed to stderr'),
        Option(
            name: '--limit',
            description:
                'The number of items to fetch each query. Defaults to 50 and is capped at 100',
            args: [
              Arg(
                name: 'Limit',
                defaultValue: '50',
                suggestions: generateRange(50, 100),
              )
            ]),
        Option(
            name: '--non-interactive',
            description: 'Run the command in non-interactive mode'),
        Option(
            name: '--offset',
            description:
                'Start queries from specified index. Use for paginating results. Defaults to 0',
            args: [Arg(name: 'Value', defaultValue: '0')])
      ]),
      Subcommand(
          name: 'config',
          description: 'Display project configuration (app.json + eas.json)',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json',
                args: [Arg(name: 'Profile Name')]),
            Option(name: [
              '-p',
              '--platform'
            ], args: [
              Arg(name: 'Platform', suggestions: [
                FigSuggestion(name: 'android'),
                FigSuggestion(name: 'ios')
              ])
            ])
          ]),
      Subcommand(
          name: 'credentials',
          description: 'Manage credentials',
          options: [
            Option(name: [
              '-p',
              '--platform'
            ], args: [
              Arg(name: 'Platform', suggestions: [
                FigSuggestion(name: 'android'),
                FigSuggestion(name: 'ios')
              ])
            ])
          ]),
      Subcommand(
          name: 'device:create',
          description:
              'Register new Apple devices to use for internal distribution'),
      Subcommand(
          name: 'device:delete',
          description: 'Remove a registered device from your account',
          options: [
            Option(
                name: '--apple-team-id',
                description: 'The Apple team ID on which to find the device',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--udid',
                description: 'The Apple device ID to disable',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(
          name: 'device:list',
          description: 'List all registered devices for your account',
          options: [
            Option(name: '--apple-team-id', args: [Arg(name: 'Value')]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--limit',
                description:
                    'The number of items to fetch each query. Defaults to 50 and is capped at 100',
                args: [
                  Arg(
                      name: 'Limit',
                      suggestions: generateRange(50, 100),
                      defaultValue: '50')
                ]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--offset',
                description:
                    'Start queries from specified index. Use for paginating results. Defaults to 0',
                args: [Arg(name: 'Offset', defaultValue: '0')])
          ]),
      Subcommand(
          name: 'device:view',
          description: 'View a device for your project',
          args: [Arg(name: 'UDID')]),
      Subcommand(name: 'diagnostics', description: 'Display environment info'),
      Subcommand(name: 'help', description: 'Display help for eas-cli', args: [
        Arg(name: 'Command', description: 'Command to show help for')
      ], options: [
        Option(
            name: ['-n', '--nested-commands'],
            description: 'Include all nested commands in the output')
      ]),
      Subcommand(
          name: 'metadata:pull',
          description:
              'Generate the local store configuration from the app stores',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(
          name: 'metadata:push',
          description: 'Sync the local store configuration to the app stores',
          options: [
            Option(
                name: ['-e', '--profile'],
                description:
                    'Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json')
          ]),
      Subcommand(
          name: 'open', description: 'Open the project page in a web browser'),
      Subcommand(
          name: 'project:info',
          description: 'Information about the current project'),
      Subcommand(
          name: ['project:init', 'init'],
          description: 'Create or link an EAS project',
          options: [
            Option(
                name: '--force',
                description: 'Whether to overwrite any existing project ID'),
            Option(
                name: '--id',
                description: 'ID of the EAS project to link',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode')
          ]),
      Subcommand(
          name: 'secret:create',
          description:
              'Create an environment secret on the current project or owner account',
          options: [
            Option(
                name: '--force',
                description: 'Delete and recreate existing secrets'),
            Option(
                name: '--name',
                description: 'Name of the secret',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--scope',
                description: '[default: project] Scope for the secret',
                args: [
                  Arg(name: 'Scope', defaultValue: 'project', suggestions: [
                    FigSuggestion(name: 'account'),
                    FigSuggestion(name: 'project')
                  ])
                ]),
            Option(name: '--type', description: 'The type of secret', args: [
              Arg(name: 'Type', suggestions: [
                FigSuggestion(name: 'string'),
                FigSuggestion(name: 'file')
              ])
            ]),
            Option(
                name: '--value',
                description:
                    'Text value or path to a file to store in the secret',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(
          name: 'secret:delete',
          description: 'Delete an environment secret by ID',
          options: [
            Option(
                name: '--id',
                description: 'ID of the secret to delete',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode')
          ]),
      Subcommand(
          name: 'secret:list',
          description:
              'List environment secrets available for your current app'),
      Subcommand(
          name: 'update',
          description: 'Publish an update group',
          options: [
            Option(
                name: ['-p', '--platform'],
                description: '[default: all]',
                args: [
                  Arg(name: 'Platform', suggestions: [
                    FigSuggestion(name: 'android'),
                    FigSuggestion(name: 'ios'),
                    FigSuggestion(name: 'all')
                  ])
                ]),
            Option(
                name: '--auto',
                description:
                    'Use the current git branch and commit message for the EAS branch and update message'),
            Option(
                name: '--branch',
                description: 'Branch to publish the update group on',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--group',
                description: 'Update group to republish',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--input-dir',
                description: '[default: dist] Location of the bundle',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--message',
                description: 'A short message describing the update',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--private-key-path',
                // TS_UNCONVERTED_START (description)
// `File containing the PEM-encoded private key corresponding to the certificate in
// expo-updates' configuration. Defaults to a file named "private-key.pem" in the
// certificate's directory`
// TS_UNCONVERTED_END
                description: null,
                args: [Arg(name: 'Value', defaultValue: 'private-key.pem')]),
            Option(
                name: '--republish', description: 'Republish an update group'),
            Option(
                name: '--skip-bundler',
                description:
                    'Skip running Expo CLI to bundle the app before publishing')
          ]),
      Subcommand(
          name: 'update:configure',
          description: 'Configure the project to support EAS update',
          options: [
            Option(
                name: ['-p', '--platform'],
                description: '[default: all] Platform to configure',
                args: [
                  Arg(
                      name: 'Platform',
                      suggestions: [
                        FigSuggestion(name: 'android'),
                        FigSuggestion(name: 'ios'),
                        FigSuggestion(name: 'all')
                      ],
                      defaultValue: 'all')
                ])
          ]),
      Subcommand(
          name: 'update:delete',
          description: 'Delete all the updates in an update group',
          args: [
            Arg(
                name: 'Group ID',
                description: 'The ID of an update group to delete')
          ],
          options: [
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode')
          ]),
      Subcommand(
          name: 'update:list',
          description: 'View the recent updates',
          options: [
            Option(name: '--all', description: 'List updates on all branches'),
            Option(
                name: '--branch',
                description: 'List updates only on this branch',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr'),
            Option(
                name: '--limit',
                description:
                    'The number of items to fetch each query. Defaults to 25 and is capped at 50',
                args: [
                  Arg(
                      name: 'Limit',
                      suggestions: generateRange(25, 50),
                      defaultValue: '25')
                ]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--offset',
                description:
                    'Start queries from specified index. Use for paginating results. Defaults to 0')
          ]),
      Subcommand(
          name: 'update:view',
          description: 'Update group details',
          args: [
            Arg(name: 'Group ID', description: 'The ID of an update group')
          ],
          options: [
            Option(
                name: '--json',
                description:
                    'Enable JSON output, non-JSON messages will be printed to stderr')
          ]),
      Subcommand(
          name: 'webhook:create',
          description: 'Create a webhook',
          options: [
            Option(
                name: '--event',
                description: 'Event type that triggers the webhook',
                args: [
                  Arg(name: 'Value', suggestions: [
                    FigSuggestion(name: 'BUILD'),
                    FigSuggestion(name: 'SUBMIT')
                  ])
                ]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--secret',
                description:
                    'Secret used to create a hash signature of the request payload, provided in the \'Expo-Signature\' header',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--url',
                description: 'Webhook URL',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(
          name: 'webhook:delete',
          description: 'Delete a webhook',
          args: [
            Arg(name: 'ID', description: 'ID of the webhook to delete')
          ],
          options: [
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode')
          ]),
      Subcommand(name: 'webhook:list', description: 'List webhooks', options: [
        Option(
            name: '--event',
            description: 'Event type that triggers the webhook',
            args: [
              Arg(name: 'Value', suggestions: [
                FigSuggestion(name: 'BUILD'),
                FigSuggestion(name: 'SUBMIT')
              ])
            ])
      ]),
      Subcommand(
          name: 'webhook:update',
          description: 'Update a webhook',
          options: [
            Option(
                name: '--event',
                description: 'Event type that triggers the webhook',
                args: [
                  Arg(name: 'Value', suggestions: [
                    FigSuggestion(name: 'BUILD'),
                    FigSuggestion(name: 'SUBMIT')
                  ])
                ]),
            Option(
                name: '--id',
                description: '(required) Webhook ID',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--non-interactive',
                description: 'Run the command in non-interactive mode'),
            Option(
                name: '--secret',
                description:
                    'Secret used to create a hash signature of the request payload, provided in the \'Expo-Signature\' header',
                args: [Arg(name: 'Value')]),
            Option(
                name: '--url',
                description: 'Webhook URL',
                args: [Arg(name: 'Value')])
          ]),
      Subcommand(
          name: 'webhook:view',
          description: 'View a webhook',
          args: [Arg(name: 'ID', description: 'ID of the webhook to view')])
    ]);