clilolSpec top-level property

FigSpec clilolSpec
final

Completion spec for clilol CLI

Implementation

final FigSpec clilolSpec = FigSpec(
  name: 'clilol',
  description: 'A cli for omg.lol',
  subcommands: [

    Subcommand(
      name: 'create',
      description: 'Create things',
      subcommands: [

        Subcommand(
          name: 'dns',
          description: 'Create a DNS record',
          args: [

            Arg(
              name: 'name',
              description: 'Name of the DNS record'
            ),
            Arg(
              name: 'type',
              description: 'Type of the DNS record'
            ),
            Arg(
              name: 'data',
              description: 'Data of the DNS record'
            )
          ],
          options: [

            Option(
              name: ['--priority', '-p'],
              description: 'Priority of the DNS record',
              args: [
                Arg(
                name: 'priority',
                defaultValue: ''
              )
              ]
            ),
            Option(
              name: ['--ttl', '-T'],
              description: 'Time to live of the DNS record',
              args: [
                Arg(
                name: 'ttl',
                defaultValue: '360'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'paste',
          description: 'Create or update a paste',
          args: [
            Arg(
            name: 'title',
            description: 'Title of the past'
          )
          ],
          options: [

            Option(
              name: ['--filename', '-f'],
              description: 'File to read paste from (default stdin)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            ),
            Option(
              name: ['--listed', '-l'],
              description: 'Create paste as listed (default false)'
            )
          ]
        ),
        Subcommand(
          name: 'picture',
          description: 'Upload a picture to some.pics',
          args: [
            Arg(
            name: 'filename',
            description: 'Filename of the image fil'
          )
          ],
          options: [

            Option(
              name: ['--description', '-d'],
              description: 'Description of the picture (default empty/unlisted)'
            )
          ]
        ),
        Subcommand(
          name: 'purl',
          description: 'Create a PURL',
          args: [

            Arg(
              name: 'name',
              description: 'Name of the PURL'
            ),
            Arg(
              name: 'url',
              description: 'URL that the PURL redirects to'
            )
          ],
          options: [

            Option(
              name: ['--listed', '-l'],
              description: 'Create as listed (default false)'
            )
          ]
        ),
        Subcommand(
          name: 'status',
          description: 'Create a status',
          args: [
            Arg(
            name: 'text',
            description: 'Text of the statu'
          )
          ],
          options: [

            Option(
              name: ['--emoji', '-e'],
              description: 'Emoji to add to status (default sparkles)',
              args: [
                Arg(
                name: 'emoj'
              )
              ]
            ),
            Option(
              name: '--skip-mastodon-post',
              description: 'Do not cross-post to Mastodon'
            )
          ]
        ),
        Subcommand(
          name: 'weblog',
          description: 'Create a weblog entry',
          options: [

            Option(
              name: ['--filename', '-f'],
              description: 'File to read entry from (default stdin)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'delete',
      description: 'Delete things',
      subcommands: [

        Subcommand(
          name: 'account',
          description: 'Delete information about your account',
          subcommands: [

            Subcommand(
              name: 'session',
              description: 'Delete a session',
              args: [
                Arg(
                name: 'id',
                description: 'ID of the session to delete',
                isDangerous: true
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'dns',
          description: 'Delete a DNS record',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the record to delete',
            isDangerous: true
          )
          ]
        ),
        Subcommand(
          name: 'paste',
          description: 'Delete a paste',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the paste to delete',
            isDangerous: true
          )
          ]
        ),
        Subcommand(
          name: 'picture',
          description: 'Delete a picture from some.pics',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the picture to delete',
            isDangerous: true
          )
          ]
        ),
        Subcommand(
          name: 'purl',
          description: 'Delete a PURL',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the PURL to delete',
            isDangerous: true
          )
          ]
        ),
        Subcommand(
          name: 'status',
          description: 'Delete a status',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the status to delete',
            isDangerous: true
          )
          ]
        ),
        Subcommand(
          name: 'weblog',
          description: 'Delete a weblog entry',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the weblog entry to delete',
            isDangerous: true
          )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'get',
      description: 'Get things',
      subcommands: [

        Subcommand(
          name: 'account',
          description: 'Get information about your account',
          subcommands: [

            Subcommand(
              name: 'info',
              description: 'Get info about your account'
            ),
            Subcommand(
              name: 'name',
              description: 'Get your account name'
            ),
            Subcommand(
              name: 'settings',
              description: 'Get your account settings'
            )
          ]
        ),
        Subcommand(
          name: 'address',
          description: 'Get information about an address',
          subcommands: [

            Subcommand(
              name: 'availability',
              description: 'Get address availability',
              args: [
                Arg(
                name: 'address',
                description: 'Address to ge'
              )
              ]
            ),
            Subcommand(
              name: 'expiration',
              description: 'Get address expiration',
              args: [
                Arg(
                name: 'address',
                description: 'Address to ge'
              )
              ]
            ),
            Subcommand(
              name: 'info',
              description: 'Get information about an address',
              subcommands: [

                Subcommand(
                  name: 'private',
                  description: 'Get private information about an address',
                  args: [
                    Arg(
                    name: 'address',
                    description: 'Address to ge'
                  )
                  ]
                ),
                Subcommand(
                  name: 'public',
                  description: 'Get public information about an address',
                  args: [
                    Arg(
                    name: 'address',
                    description: 'Address to ge'
                  )
                  ]
                )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'email',
          description: 'Get email forwarding address(es)'
        ),
        Subcommand(
          name: 'now',
          description: 'Get a Now page',
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose Now page to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            ),
            Option(
              name: ['--filename', '-f'],
              description: 'File to write Now page to (default stdout)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'paste',
          description: 'Get a paste',
          args: [
            Arg(
            name: 'title',
            description: 'Title of the past'
          )
          ],
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose paste to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            ),
            Option(
              name: ['--filename', '-f'],
              description: 'File to write paste to (default stdout)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'purl',
          description: 'Get a PURL',
          args: [
            Arg(
            name: 'name',
            description: 'Name of the PUR'
          )
          ],
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose PURL to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'service',
          description: 'Get service stats'
        ),
        Subcommand(
          name: 'status',
          description: 'Get status',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the statu'
          )
          ],
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose status to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'status-bio',
          description: 'Get status bio',
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose status bio to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'theme',
          description: 'Get theme information',
          args: [
            Arg(
            name: 'name',
            description: 'Name of the them'
          )
          ],
          subcommands: [

            Subcommand(
              name: 'preview',
              description: 'Get theme preview',
              args: [
                Arg(
                name: 'name',
                description: 'Name of the them'
              )
              ],
              options: [

                Option(
                  name: ['--filename', '-f'],
                  description: 'File to write preview to (default stdout)',
                  args: [
                    Arg(
                    name: 'filename',
                    template: 'filepath'
                  )
                  ]
                )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'web',
          description: 'Get your webpage content',
          options: [

            Option(
              name: ['--filename', '-f'],
              description: 'File to write webpage to (default stdout)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'weblog',
          description: 'Get a weblog entry',
          args: [
            Arg(
            name: 'id',
            description: 'ID of the weblog entr'
          )
          ],
          subcommands: [

            Subcommand(
              name: 'config',
              description: 'Get your weblog config',
              options: [

                Option(
                  name: ['--filename', '-f'],
                  description: 'File to write configuration to (default stdout)',
                  args: [
                    Arg(
                    name: 'filename',
                    template: 'filepath'
                  )
                  ]
                )
              ]
            ),
            Subcommand(
              name: 'latest',
              description: 'Get the latest weblog entry'
            ),
            Subcommand(
              name: 'template',
              description: 'Get your weblog template',
              options: [

                Option(
                  name: ['--filename', '-f'],
                  description: 'File to write template to (default stdout)',
                  args: [
                    Arg(
                    name: 'filename',
                    template: 'filepath'
                  )
                  ]
                )
              ]
            )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'list',
      description: 'List things',
      subcommands: [

        Subcommand(
          name: 'account',
          description: 'List information about your account',
          subcommands: [

            Subcommand(
              name: 'addresses',
              description: 'List your addresses'
            ),
            Subcommand(
              name: 'sessions',
              description: 'List your sessions'
            )
          ]
        ),
        Subcommand(
          name: 'directory',
          description: 'List the address directory'
        ),
        Subcommand(
          name: 'dns',
          description: 'List your dns records'
        ),
        Subcommand(
          name: 'now',
          description: 'List Now pages'
        ),
        Subcommand(
          name: 'paste',
          description: 'List pastes',
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose pastes to list',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'picture',
          description: 'List pictures'
        ),
        Subcommand(
          name: 'purl',
          description: 'List all PURLs',
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose PURLs to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'status',
          description: 'List statuses',
          options: [

            Option(
              name: ['--address', '-a'],
              description: 'Address whose status(es) to get',
              args: [
                Arg(
                name: 'addres'
              )
              ]
            ),
            Option(
              name: ['--limit', '-l'],
              description: 'How many status(es) to get (default all)',
              args: [
                Arg(
                name: 'limit',
                defaultValue: ''
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'statuslog',
          description: 'List the statuslog',
          options: [

            Option(
              name: ['--all', '-A'],
              description: 'Get the entire statuslog (default is latest statuses only)'
            )
          ]
        ),
        Subcommand(
          name: 'theme',
          description: 'List profile themes'
        ),
        Subcommand(
          name: 'weblog',
          description: 'List all weblog entries'
        )
      ]
    ),
    Subcommand(
      name: 'update',
      description: 'Update things',
      subcommands: [

        Subcommand(
          name: 'account',
          description: 'Update information about your account',
          subcommands: [

            Subcommand(
              name: 'name',
              description: 'Set the name on your account'
            ),
            Subcommand(
              name: 'settings',
              description: 'Set the settings on your account',
              options: [

                Option(
                  name: ['--communication', '-c'],
                  description: 'Communication preference',
                  args: [
                    Arg(
                    name: 'communicatio'
                  )
                  ]
                ),
                Option(
                  name: ['--date-format', '-d'],
                  description: 'Date format preference',
                  args: [
                    Arg(
                    name: 'date-forma'
                  )
                  ]
                ),
                Option(
                  name: ['--web-editor', '-w'],
                  description: 'Web editor preference',
                  args: [
                    Arg(
                    name: 'web-edito'
                  )
                  ]
                )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'dns',
          description: 'Update a DNS record',
          options: [

            Option(
              name: ['--priority', '-p'],
              description: 'Updated priority',
              args: [
                Arg(
                name: 'priority',
                defaultValue: ''
              )
              ]
            ),
            Option(
              name: ['--ttl', '-T'],
              description: 'Updated TTL',
              args: [
                Arg(
                name: 'ttl',
                defaultValue: '360'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'email',
          description: 'Set email forwarding address(es)',
          options: [

            Option(
              name: ['--destination', '-d'],
              description: 'Address(es) to forward to',
              args: [
                Arg(
                name: 'destinatio'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'preference',
          description: 'Set a preference'
        ),
        Subcommand(
          name: 'set',
          description: 'Set Now page content',
          options: [

            Option(
              name: ['--filename', '-f'],
              description: 'File to read Now page from (default stdin)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            ),
            Option(
              name: ['--listed', '-l'],
              description: 'Create Now page as listed (default false)'
            )
          ]
        ),
        Subcommand(
          name: 'status',
          description: 'Update a status',
          options: [

            Option(
              name: ['--emoji', '-e'],
              description: 'Emoji to add to status (default sparkles)',
              args: [
                Arg(
                name: 'emoj'
              )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'status-bio',
          description: 'Update your status bio'
        ),
        Subcommand(
          name: 'web',
          description: 'Set webpage content',
          subcommands: [

            Subcommand(
              name: 'pfp',
              description: 'Set your profile picture'
            )
          ],
          options: [

            Option(
              name: ['--filename', '-f'],
              description: 'File to read webpage from (default stdin)',
              args: [
                Arg(
                name: 'filename',
                template: 'filepath'
              )
              ]
            ),
            Option(
              name: ['--publish', '-p'],
              description: 'Publish the updated page (default false)'
            )
          ]
        ),
        Subcommand(
          name: 'weblog',
          description: 'Set your weblog config',
          subcommands: [

            Subcommand(
              name: 'config',
              description: 'Set your weblog config',
              options: [

                Option(
                  name: ['--filename', '-f'],
                  description: 'File to read config from (default stdin)',
                  args: [
                    Arg(
                    name: 'filename',
                    template: 'filepath'
                  )
                  ]
                )
              ]
            ),
            Subcommand(
              name: 'template',
              description: 'Set your weblog template',
              options: [

                Option(
                  name: ['--filename', '-f'],
                  description: 'File to read template from (default stdin)',
                  args: [
                    Arg(
                    name: 'filename',
                    template: 'filepath'
                  )
                  ]
                )
              ]
            )
          ]
        )
      ]
    ),
    Subcommand(
      name: 'help',
      description: 'Help about any command',
      subcommands: [

        Subcommand(
          name: 'create',
          description: 'Create things',
          subcommands: [

            Subcommand(
              name: 'dns',
              description: 'Create a DNS record'
            ),
            Subcommand(
              name: 'paste',
              description: 'Create or update a paste'
            ),
            Subcommand(
              name: 'purl',
              description: 'Create a PURL'
            ),
            Subcommand(
              name: 'status',
              description: 'Create a status'
            ),
            Subcommand(
              name: 'weblog',
              description: 'Create a weblog entry'
            )
          ]
        ),
        Subcommand(
          name: 'delete',
          description: 'Delete things',
          subcommands: [

            Subcommand(
              name: 'account',
              description: 'Delete information about your account',
              subcommands: [

                Subcommand(
                  name: 'session',
                  description: 'Delete a session'
                )
              ]
            ),
            Subcommand(
              name: 'dns',
              description: 'Delete a DNS record'
            ),
            Subcommand(
              name: 'paste',
              description: 'Delete a paste'
            ),
            Subcommand(
              name: 'purl',
              description: 'Delete a PURL'
            ),
            Subcommand(
              name: 'weblog',
              description: 'Delete a weblog entry'
            )
          ]
        ),
        Subcommand(
          name: 'get',
          description: 'Get things',
          subcommands: [

            Subcommand(
              name: 'account',
              description: 'Get information about your account',
              subcommands: [

                Subcommand(
                  name: 'info',
                  description: 'Get info about your account'
                ),
                Subcommand(
                  name: 'name',
                  description: 'Get your account name'
                ),
                Subcommand(
                  name: 'settings',
                  description: 'Get your account settings'
                )
              ]
            ),
            Subcommand(
              name: 'address',
              description: 'Get information about an address',
              subcommands: [

                Subcommand(
                  name: 'availability',
                  description: 'Get address availability'
                ),
                Subcommand(
                  name: 'expiration',
                  description: 'Get address expiration'
                ),
                Subcommand(
                  name: 'info',
                  description: 'Get information about an address',
                  subcommands: [

                    Subcommand(
                      name: 'private',
                      description: 'Get private information about an address'
                    ),
                    Subcommand(
                      name: 'public',
                      description: 'Get public information about an address'
                    )
                  ]
                )
              ]
            ),
            Subcommand(
              name: 'email',
              description: 'Get email forwarding address(es)'
            ),
            Subcommand(
              name: 'now',
              description: 'Get a Now page'
            ),
            Subcommand(
              name: 'paste',
              description: 'Get a paste'
            ),
            Subcommand(
              name: 'purl',
              description: 'Get a PURL'
            ),
            Subcommand(
              name: 'service',
              description: 'Get service stats'
            ),
            Subcommand(
              name: 'status',
              description: 'Get status'
            ),
            Subcommand(
              name: 'status-bio',
              description: 'Get status bio'
            ),
            Subcommand(
              name: 'theme',
              description: 'Get theme information',
              subcommands: [

                Subcommand(
                  name: 'preview',
                  description: 'Get theme preview'
                )
              ]
            ),
            Subcommand(
              name: 'web',
              description: 'Get your webpage content'
            ),
            Subcommand(
              name: 'weblog',
              description: 'Get a weblog entry',
              subcommands: [

                Subcommand(
                  name: 'config',
                  description: 'Get your weblog config'
                ),
                Subcommand(
                  name: 'latest',
                  description: 'Get the latest weblog entry'
                ),
                Subcommand(
                  name: 'template',
                  description: 'Get your weblog template'
                )
              ]
            )
          ]
        ),
        Subcommand(
          name: 'list',
          description: 'List things',
          subcommands: [

            Subcommand(
              name: 'account',
              description: 'List information about your account',
              subcommands: [

                Subcommand(
                  name: 'addresses',
                  description: 'List your addresses'
                ),
                Subcommand(
                  name: 'sessions',
                  description: 'List your sessions'
                )
              ]
            ),
            Subcommand(
              name: 'directory',
              description: 'List the address directory'
            ),
            Subcommand(
              name: 'dns',
              description: 'List your dns records'
            ),
            Subcommand(
              name: 'now',
              description: 'List Now pages'
            ),
            Subcommand(
              name: 'paste',
              description: 'List pastes'
            ),
            Subcommand(
              name: 'purl',
              description: 'List all PURLs'
            ),
            Subcommand(
              name: 'status',
              description: 'List statuses'
            ),
            Subcommand(
              name: 'statuslog',
              description: 'List the statuslog'
            ),
            Subcommand(
              name: 'theme',
              description: 'List profile themes'
            ),
            Subcommand(
              name: 'weblog',
              description: 'List all weblog entries'
            )
          ]
        ),
        Subcommand(
          name: 'update',
          description: 'Update things',
          subcommands: [

            Subcommand(
              name: 'account',
              description: 'Update information about your account',
              subcommands: [

                Subcommand(
                  name: 'name',
                  description: 'Set the name on your account',
                  args: [
                    Arg(
                    name: 'name',
                    description: 'The name to se'
                  )
                  ]
                ),
                Subcommand(
                  name: 'settings',
                  description: 'Set the settings on your account'
                )
              ]
            ),
            Subcommand(
              name: 'dns',
              description: 'Update a DNS record',
              args: [

                Arg(
                  name: 'id',
                  description: 'The ID of the record to update'
                ),
                Arg(
                  name: 'name',
                  description: 'Updated name'
                ),
                Arg(
                  name: 'type',
                  description: 'Updated type'
                ),
                Arg(
                  name: 'data',
                  description: 'Updated data'
                )
              ]
            ),
            Subcommand(
              name: 'email',
              description: 'Set email forwarding address(es)',
              args: [
                Arg(
                name: 'address',
                description: 'Address(es) to forward to'
              )
              ]
            ),
            Subcommand(
              name: 'preference',
              description: 'Set a preference',
              args: [

                Arg(
                  name: 'item',
                  description: 'Preferences item to set'
                ),
                Arg(
                  name: 'value',
                  description: 'Value to set'
                )
              ]
            ),
            Subcommand(
              name: 'now',
              description: 'Update Now page content'
            ),
            Subcommand(
              name: 'status',
              description: 'Update a status',
              args: [

                Arg(
                  name: 'id',
                  description: 'The ID of the status to update'
                ),
                Arg(
                  name: 'text',
                  description: 'New text for the status'
                )
              ]
            ),
            Subcommand(
              name: 'status-bio',
              description: 'Update your status bio',
              args: [
                Arg(
                name: 'text',
                description: 'New text for the status bio'
              )
              ]
            ),
            Subcommand(
              name: 'web',
              description: 'Set webpage content',
              subcommands: [

                Subcommand(
                  name: 'pfp',
                  description: 'Set your profile picture',
                  args: [
                    Arg(
                    name: 'filename',
                    template: 'filepaths',
                    description: 'The filename of the image to set'
                  )
                  ]
                )
              ]
            ),
            Subcommand(
              name: 'weblog',
              description: 'Set your weblog config',
              subcommands: [

                Subcommand(
                  name: 'config',
                  description: 'Set your weblog config'
                ),
                Subcommand(
                  name: 'template',
                  description: 'Set your weblog template'
                )
              ]
            )
          ]
        )
      ]
    )
  ],
  options: [

    Option(
      name: ['--help', '-h'],
      description: 'Display help',
      isPersistent: true
    )
  ]
);