Pyaptly Configuration Schema

The schema used for pyaptly configurations. See also https://github.com/adfinis/pyaptly/tree/main/pyaptly/tests for examples using the TOML language.

Properties

  • mirror (object): A configuration for a mirror. Cannot contain additional properties.

    • .* (object): Cannot contain additional properties.

      • archive (string): The aptly ‘archive’ argument.

      • architectures (array): Set ‘-architectures’ for aptly.

        • Items (string)

      • components ([‘array’, ‘string’]): The aptly ‘component’ arguments.

        • Items (string)

      • distribution (string): The aptly ‘distribution’ argument.

      • gpg-keys (array): List of GPG Key Fingerprints used to sign the packages and metadata.

        • Items (string)

      • gpg-urls (array): List of URLs to retrieve the GPG keys.

        • Items (string)

      • keyserver (string): A PGP Key Server to retrieve keys for verification.

      • max-tries (integer): Set ‘-max-tries’ for ‘aptly repo update’.

      • sources (boolean): Set ‘-with-sources’ for aptly.

      • udeb (boolean): Set ‘-with-udebs’ for aptly.

    Examples:

    {
        "repo1": {
            "max-tries": 2,
            "archive": "http://localhost:3123/fakerepo01",
            "gpg-keys": [
                "2841988729C7F3FF"
            ],
            "components": "main",
            "distribution": "main"
        },
        "repo2": {
            "archive": "http://localhost:3123/fakerepo02",
            "gpg-keys": [
                "2841988729C7F3FF"
            ],
            "gpg-urls": [
                "http://localhost:3123/keys/test02.key"
            ],
            "components": "main",
            "distribution": "main"
        }
    }
    
  • snapshot (object): Cannot contain additional properties.

    • .* (object): Cannot contain additional properties.

      • filter (object): Cannot contain additional properties.

      • merge (array)

        • Items ([‘string’, ‘object’])

          • name (string)

          • timestamp

      • mirror (string)

      • timestamp (object): Cannot contain additional properties.

        • time (string)

        • repeat-weekly: Must be one of: ["mon", "tue", "wed", "thu", "fri", "sat", "sun"].

      • repo (string)

    Examples:

    {
        "fakerepo01-current": {
            "mirror": "fakerepo01"
        },
        "fakerepo02-%T": {
            "mirror": "fakrepo02",
            "timestamp": {
                "time": "00:00",
                "repeat-weekly": "sat"
            }
        },
        "fakerepo03-%T": {
            "timestamp": {
                "time": "00:00"
            },
            "filter": {
                "query": "libhello_0.1-1_amd64",
                "source": {
                    "name": "fakerepo01-%T",
                    "timestamp": "current"
                }
            }
        }
    }
    
  • publish (object): Cannot contain additional properties.

    • .* (array)

      • Items (object): Cannot contain additional properties.

        • architectures (array): Set ‘-architectures’ for aptly.

          • Items (string)

        • automatic-update (boolean): If the publish should be updated when it’s not explicitly mentioned as argument to pyaptly.

        • components ([‘array’, ‘string’]): Set ‘-component’ for aptly.

          • Items (string)

        • distribution (string): Set ‘-distribution’ for aptly.

        • gpg-key (string): Set ‘-gpg-key’ for aptly.

        • publish (string): Use the snapshots of another named publish. Space separated name and component. E.g. ‘fakerepo01 main’.

        • repo (string): Use ‘publish repo’ with this repo name.

        • skip-contents (boolean): Set ‘-skip-contents’ for aptly.

        • snapshots (array): A list of snapshots to be merged.

          • Items ([‘object’, ‘string’]): Cannot contain additional properties.

            • name (string): Name of the snapshot.

            • timestamp: Refer to #/$defs/timestamp-reference.

            • archive-on-update (string): Rename the Snapshot to this and replace %T with the current timestamp on update. E.g. ‘archive-snap-%T’.

    Examples:

    {
        "fakerepo01": [
            {
                "gpg-key": "6D79A810B9B7ABAE",
                "skip-contents": true,
                "automatic-update": true,
                "components": "main",
                "distribution": "main",
                "snapshots": [
                    {
                        "name": "fakerepo01-%T",
                        "timestamp": "current",
                        "archive-on-update": "archived-fakerepo01-%T"
                    }
                ]
            }
        ],
        "fakerepo01-stable": [
            {
                "publish": "fakerepo01 main",
                "gpg-key": "6D79A810B9B7ABAE",
                "automatic-update": true,
                "components": "main",
                "distribution": "main"
            }
        ]
    }
    

Definitions

  • timestamp-reference: if the ‘current’ (newest) snapshot should be used or the ‘previous’ly created (e.g. from a week ago). Useful to delay a publish for a certain period. Must be one of: ["current", "previous", 0, 1].

  • snapshot-reference (object): A pointer to an existing snapshot. Cannot contain additional properties.

Examples

{
    "mirror": {
        "fakerepo01": {
            "max-tries": 2,
            "archive": "http://localhost:3123/fakerepo01",
            "gpg-keys": [
                "2841988729C7F3FF"
            ],
            "components": "main",
            "distribution": "main"
        }
    },
    "snapshot": {
        "fakerepo01-%T": {
            "mirror": "fakerepo01",
            "timestamp": {
                "time": "00:00"
            }
        }
    },
    "publish": {
        "fakerepo01": [
            {
                "gpg-key": "6D79A810B9B7ABAE",
                "skip-contents": true,
                "automatic-update": true,
                "components": "main",
                "distribution": "main",
                "snapshots": [
                    {
                        "name": "fakerepo01-%T",
                        "timestamp": "current",
                        "archive-on-update": "archived-fakerepo01-%T"
                    }
                ]
            }
        ],
        "fakerepo01-stable": [
            {
                "publish": "fakerepo01 main",
                "gpg-key": "6D79A810B9B7ABAE",
                "automatic-update": true,
                "components": "main",
                "distribution": "main"
            }
        ]
    }
}