Reviewing snapcraft.yaml schema documentation

  • build-packages ref: #/definitions/grammar-array

  • adopt-info string

  • name required type must match all of these

    • string

    • pattern: ^[a-z0-9-]*[a-z][a-z0-9-]*$

    • pattern: ^[^-]

    • pattern: [^-]$

    • not

      • pattern: --
  • title string

  • architectures array with at least 1 unique item(s) of type can match any of these

    • string

    • object with properties

      • build-on required type can match any of these

        • string
        • array with at least 1 unique item(s) of
      • run-on type can match any of these

        • string
        • array with at least 1 unique item(s) of
  • version type must match all of these

    • string
    • pattern: ^[a-zA-Z0-9](?:[a-zA-Z0-9:.+~-]*[a-zA-Z0-9+~])?$
  • version-script string

  • license string

  • icon string

  • summary string

  • description string

  • assumes array with at least 1 unique item(s) of string

  • type string value must be one of "app", "base", "gadget", "kernel", "snapd"

  • frameworks array with at least 1 unique item(s) of string

  • confinement string value must be one of "classic", "devmode", "strict"

  • grade string value must be one of "stable", "devel"

  • base string

  • build-base string

  • epoch

  • compression string value must be one of "lzo", "xz"

  • environment ref: #/definitions/environment

  • passthrough

  • layout

  • package-repositories array with at least 0 unique item(s) of type matching one of these

    • ref: #/definitions/apt-deb
    • ref: #/definitions/apt-ppa
  • system-usernames

    • ^snap_(daemon|microk8s|aziotedge|aziotdu)$ type matching one of these

      • ref: #/definitions/system-username-scope

      • object with properties

        • scope required ref: #/definitions/system-username-scope
  • donation type matching one of these

    • array with at least 1 unique item(s) of string
    • string
  • issues type matching one of these

    • array with at least 1 unique item(s) of string
    • string
  • contact type matching one of these

    • array with at least 1 unique item(s) of string
    • string
  • source-code string

  • website string

  • apps

    • ^[a-zA-Z0-9](?:-?[a-zA-Z0-9])*$

      • autostart string

      • common-id string

      • bus-name string

      • activates-on array with at least 1 unique item(s) of string

      • desktop string

      • command required string

      • completer string

      • stop-command string

      • post-stop-command string

      • start-timeout string

      • stop-timeout string

      • watchdog-timeout string

      • reload-command string

      • restart-delay string

      • timer string

      • daemon string value must be one of "simple", "forking", "oneshot", "notify", "dbus"

      • after array with at least 1 unique item(s) of string

      • before array with at least 1 unique item(s) of string

      • refresh-mode string value must be one of "endure", "restart"

      • stop-mode string value must be one of "sigterm", "sigterm-all", "sighup", "sighup-all", "sigusr1", "sigusr1-all", "sigusr2", "sigusr2-all", "sigint", "sigint-all"

      • restart-condition string value must be one of "on-success", "on-failure", "on-abnormal", "on-abort", "on-watchdog", "always", "never"

      • install-mode string value must be one of "enable", "disable"

      • slots array with at least 1 unique item(s) of string

      • plugs array with at least 1 unique item(s) of string

      • aliases array with at least 1 unique item(s) of string

      • environment ref: #/definitions/environment

      • adapter string value must be one of "none", "legacy", "full"

      • command-chain array with at least 1 unique item(s) of string

      • sockets

        • ^[a-z][a-z0-9_-]*$

          • listen-stream required type can match any of these

            • integer
            • string
          • socket-mode integer

      • passthrough

      • extensions array with at least 1 unique item(s) of

  • hooks

    • ^[a-z](?:-?[a-z0-9])*$

      • command-chain array with at least 1 unique item(s) of string
      • environment ref: #/definitions/environment
      • plugs array with at least 1 unique item(s) of string
      • passthrough
  • parts required

    • ^(?!plugins$)[a-z0-9][a-z0-9+-]*$ or null

      • plugin required string
      • source ref: #/definitions/grammar-string
      • source-checksum string
      • source-branch string
      • source-commit string
      • source-depth integer
      • source-submodules array with at least 0 unique item(s) of string
      • source-subdir string
      • source-tag string
      • source-type string value must be one of "bzr", "git", "hg", "mercurial", "subversion", "svn", "tar", "zip", "deb", "rpm", "7z", "local"
      • disable-parallel boolean
      • after array with at least 1 unique item(s) of string
      • stage-snaps ref: #/definitions/grammar-array
      • stage-packages ref: #/definitions/grammar-array
      • build-snaps ref: #/definitions/grammar-array
      • build-packages ref: #/definitions/grammar-array
      • build-environment ref: #/definitions/build-environment-grammar
      • build-attributes array with at least 1 unique item(s) of string value must be one of "core22-step-dependencies", "enable-patchelf", "no-patchelf", "no-install", "debug", "keep-execstack"
      • organize
      • filesets
      • stage array with at least 1 unique item(s) of string
      • prime array with at least 1 unique item(s) of string
      • override-pull string
      • override-build string
      • override-stage string
      • override-prime string
      • parse-info array with at least 1 unique item(s) of string
  • plugs

  • slots

  • ua-services array with at least 1 unique item(s) of string

Ideally this should sync up with the reference but really they should both be automatically generated or partially generated by the continuous integration system in the Snapcraft repository.