type: map
mapping:
  vhost:
    type: str
    pattern: /^https?:\/\//
    required: true
  wordpress_path:
    type: str
    required: true
  wordpress_absolute_path:
    type: str
  database:
    type: map
    required: true
    mapping:
      name:
        type: str
        required: true
      user:
        type: str
        required: true
      password:
        type: str
        required: true
      host:
        type: str
        required: true
      mysqldump_options:
        type: str
      port:
        type: int
      charset:
        type: str
  exclude:
    type: seq
    sequence:
      - type: str
  paths:
    type: map
    mapping:
      wp_content:
      wp_config:
      uploads:
      plugins:
      mu_plugins:
      themes:
      languages:
  ssh:
    type: map
    mapping:
      host:
        required: true
      user:
        required: false # If host is configured in ~/.ssh/config
      password:
      port:
        type: int
      rsync_options:
      gateway:
        type: map
        mapping:
          host:
            required: true
          user:
            required: true
          password:
  ftp:
    type: map
    mapping:
      user:
        required: true
      password:
        required: true
      host:
        required: true
      passive:
        type: bool
      scheme:
  hooks:
    type: map
    mapping:
      push:
        type: map
        mapping:
          before:
            type: map
            mapping:
              local:
                type: seq
                sequence:
                  - type: str
              remote:
                type: seq
                sequence:
                  - type: str
          after:
            type: map
            mapping:
              local:
                type: seq
                sequence:
                  - type: str
              remote:
                type: seq
                sequence:
                  - type: str
      pull:
        type: map
        mapping:
          before:
            type: map
            mapping:
              local:
                type: seq
                sequence:
                  - type: str
              remote:
                type: seq
                sequence:
                  - type: str
          after:
            type: map
            mapping:
              local:
                type: seq
                sequence:
                  - type: str
              remote:
                type: seq
                sequence:
                  - type: str
  forbid:
    type: map
    mapping:
      pull:
        type: map
        mapping:
          db:
            type: bool
          plugins:
            type: bool
          themes:
            type: bool
          languages:
            type: bool
          uploads:
            type: bool
          mu-plugins:
            type: bool
      push:
        type: map
        mapping:
          db:
            type: bool
          plugins:
            type: bool
          themes:
            type: bool
          languages:
            type: bool
          uploads:
            type: bool
          mu-plugins:
            type: bool