// vim: : filetype=json
// json configuration file with comments
// validate with: sed '/\/\//d' aptly.conf | json_pp
{

// Aptly Configuration File
////////////////////////////

  // Aptly storage directory for:
  // - downloaded packages (`rootDir`/pool)
  // - database (`rootDir`/db)
  // - published repositories (`rootDir`/public)
  "rootDir": "~/.aptly",

  // Number of attempts to open database if it's locked by other instance
  // * -1 (no retry)
  "databaseOpenAttempts": -1,

  // Log Level
  // * debug
  // * info
  // * warning
  // * error
  "logLevel": "info",

  // Log Format
  // * default (text)
  // * json
  "logFormat": "default",

  // Default Architectures
  // empty array defaults to all available architectures
  "architectures": [],

  // Follow contents of `Suggests:` field when processing dependencies for the package
  "dependencyFollowSuggests": false,

  // Follow contents of `Recommends:` field when processing dependencies for the package
  "dependencyFollowRecommends": false,

  // When dependency looks like `package-a | package-b`, follow both variants always
  "dependencyFollowAllVariants": false,

  // Follow dependency from binary package to source package
  "dependencyFollowSource": false,

  // Log additional details while resolving dependencies (useful for debugging)
  "dependencyVerboseResolve": false,

  // Specifies paramaters for short PPA url expansion
  // empty defaults to output of `lsb_release` command
  "ppaDistributorID": "ubuntu",

  // Codename for short PPA url expansion
  "ppaCodename": "",

  // OBSOLETE
  // in aptly up to version 1.0.0, package files were stored in internal package pool
  // with MD5-dervied path, since 1.1.0 package pool layout was changed;
  // if option is enabled, aptly stops checking for legacy paths;
  // by default option is enabled for new aptly installations and disabled when
  // upgrading from older versions
  "skipLegacyPool": true,


// Aptly Server
////////////////

  // Serve published repos as well as API
  "serveInAPIMode": false,

  // Enable metrics for Prometheus client
  "enableMetricsEndpoint": false,

  // Enable API documentation on /docs
  "enableSwaggerEndpoint": false,

  // OBSOLETE: use via url param ?_async=true
  "AsyncAPI": false,


// Database
////////////

  // Database backend
  // Type must be one of:
  // * leveldb (default)
  // * etcd
  "databaseBackend": {
    // LevelDB
    "type": "leveldb",
    // Path to leveldb files
    // empty dbPath defaults to `rootDir`/db
    "dbPath": ""

    // // etcd
    // "type": "etcd",
    // // URL to db server
    // "url": "127.0.0.1:2379"
  },


// Mirroring
/////////////

  // Downloader
  // * "default"
  // * "grab"      (more robust)
  "downloader": "default",

  // Number of parallel download threads to use when downloading packages
  "downloadConcurrency": 4,

  // Limit in kbytes/sec on download speed while mirroring remote repositories
  "downloadSpeedLimit": 0,

  // Number of retries for download attempts
  "downloadRetries": 0,

  // Download source packages per default
  "downloadSourcePackages": false,


// Signing
///////////

  // GPG Provider
  // * "internal" (Go internal implementation)
  // * "gpg"      (External `gpg` utility)
  "gpgProvider": "gpg",

  // Disable signing of published repositories
  "gpgDisableSign": false,

  // Disable signature verification of remote repositories
  "gpgDisableVerify": false,


// Publishing
//////////////

  // Do not publish Contents files
  "skipContentsPublishing": false,

  // Do not create bz2 files
  "skipBz2Publishing": false,


// Storage
///////////

  // Filesystem publishing endpoints
  //
  // aptly defaults to publish to a single publish directory under `rootDir`/public. For
  // a more advanced publishing strategy, you can define one or more filesystem endpoints in the
  // `FileSystemPublishEndpoints` list of the aptly configuration file. Each endpoint has a name
  // and the following associated settings.
  //
  // In order to publish to such an endpoint, specify the endpoint as `filesystem:endpoint-name`
  // with `endpoint-name` as the name given in the aptly configuration file. For example:
  //
  //   `aptly publish snapshot wheezy-main filesystem:test1:wheezy/daily`
  //
  "FileSystemPublishEndpoints": {
    // // Endpoint Name
    // "test1": {
    //    // Directory for publishing
    //    "rootDir": "/opt/srv/aptly_public",

    //    // File Link Method for linking files from the internal pool to the published directory
    //    // * hardlink
    //    // * symlink
    //    // * copy
    //    "linkMethod": "hardlink",

    //    // File Copare Method for comparing existing links from the internal pool to the published directory
    //    // Only used when "linkMethod" is set to "copy"
    //    // * md5 (default: compare md5 sum)
    //    // * size (compare file size)
    //    "verifyMethod": "md5"
    // }
  },

  // S3 Endpoint Support
  //
  // cloud storage). First, publishing
  // endpoints should be described in aptly configuration file. Each endpoint has name
  // and associated settings.
  //
  // In order to publish to S3, specify endpoint as `s3:endpoint-name:` before
  // publishing prefix on the command line, e.g.:
  //
  //   `aptly publish snapshot wheezy-main s3:test:`
  //
  "S3PublishEndpoints": {
    // // Endpoint Name
    // "test": {

    //    // Amazon region for S3 bucket
    //    "region": "us-east-1",

    //    // Bucket name
    //    "bucket": "test-bucket",

    //    // Endpoint (optional)
    //    // When using S3-compatible cloud storage, specify hostname of service endpoint here,
    //    // region is ignored if endpoint is set (set region to some human-readable name)
    //    // (should be left blank for real Amazon S3)
    //    "endpoint": "",

    //    // Prefix (optional)
    //    // publishing under specified prefix in the bucket, defaults to
    //    // no prefix (bucket root)
    //    "prefix": "",

    //    // Default ACLs (optional)
    //    // assign ACL to published files (one of the canned ACLs in Amazon
    //    // terminology). Useful values: `private` (default), `public-read` (public
    //    // repository) or `none` (don't set ACL). Public repositories could be consumed by `apt` using
    //    // HTTP endpoint (Amazon bucket should be configured for "website hosting"),
    //    // for private repositories special apt S3 transport is required.
    //    "acl": "private",

    //    // Credentials (optional)
    //    // Amazon credentials to access S3 bucket. If not supplied,
    //    // environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
    //    // are used.
    //    "awsAccessKeyID": "",
    //    "awsSecretAccessKey": "",

    //    // Storage Class (optional)
    //    // Amazon S3 storage class, defaults to `STANDARD`. Other values
    //    // available: `REDUCED_REDUNDANCY` (lower price, lower redundancy)
    //    "storageClass": "STANDARD",

    //    // Encryption Method (optional)
    //    // Server-side encryption method, defaults to none. Currently
    //    // the only available encryption method is `AES256`
    //    "encryptionMethod": "none",

    //    // Plus Workaround (optional)
    //    // Workaround misbehavior in apt and Amazon S3 for files with `+` in filename by
    //    // creating two copies of package files with `+` in filename: one original
    //    // and another one with spaces instead of plus signs
    //    // With `plusWorkaround` enabled, package files with plus sign
    //    // would be stored twice. aptly might not cleanup files with spaces when published
    //    // repository is dropped or updated (switched) to new version of repository (snapshot)
    //    "plusWorkaround": false,

    //    // Disable MultiDel (optional)
    //    // For S3-compatible cloud storages which do not support `MultiDel` S3 API,
    //    // enable this setting (file deletion would be slower with this setting enabled)
    //    "disableMultiDel": false,

    //    // ForceSig2 (optional)
    //    // Disable Signature V4 support, useful with non-AWS S3-compatible object stores
    //    // which do not support SigV4, shouldn't be enabled for AWS
    //    "forceSigV2": false,

    //    // ForceVirtualHostedStyle (optional)
    //    // Disable path style visit, useful with non-AWS S3-compatible object stores
    //    // which only support virtual hosted style
    //    "forceVirtualHostedStyle": false,

    //    // Debug (optional)
    //    // Enables detailed request/response dump for each S3 operation
    //    "debug": false
    // }
  },

  // Swift Endpoint Support
  //
  // aptly could be configured to publish repository directly to OpenStack Swift. First,
  // publishing endpoints should be described in aptly configuration file. Each endpoint
  // has name and associated settings.
  //
  // In order to publish to Swift, specify endpoint as `swift:endpoint-name:` before
  // publishing prefix on the command line, e.g.:
  //
  //   `aptly publish snapshot jessie-main swift:test:`
  //
  "SwiftPublishEndpoints": {
    // Endpoint Name
    // "test": {

    //    // Container Name
    //    "container": "taylor1",

    //    // Prefix (optional)
    //    // Publish under specified prefix in the container, defaults to no prefix (container root)
    //    "prefix": "",

    //    // Credentials (optional)
    //    // OpenStack credentials to access Keystone. If not supplied, environment variables `OS_USERNAME` and `OS_PASSWORD` are used
    //    "osname": "",
    //    "password": "",

    //    // Tenant (optional)
    //    // OpenStack tenant name and id (in order to use v2 authentication)
    //    "tenant": "",
    //    "tenantid": "",

    //    // Auth URL (optional)
    //    // Full url of Keystone server (including port, and version).
    //    // Example `http://identity.example.com:5000/v2.0`
    //    "authurl": ""
    // }
  },

  // Azure Endpoint Support
  //
  // aptly can be configured to publish repositories directly to Microsoft Azure Blob
  // Storage. First, publishing endpoints should be described in the aptly
  // configuration file. Each endpoint has its name and associated settings.
  "AzurePublishEndpoints": {
    // // Endpoint Name
    // "test": {

    //    // Container Name
    //    "container": "container1",

    //    // Prefix (optional)
    //    // Publishing under specified prefix in the container, defaults to no prefix (container root)
    //    "prefix": "",

    //    // Credentials
    //    // Azure storage account access key to access blob storage
    //    "accountName": "",
    //    "accountKey": "",

    //    // Endpoint URL
    //    // See: Azure documentation https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string
    //    // defaults to "https://<accountName>.blob.core.windows.net"
    //    "endpoint": ""
    // }
  },

  // Package Pool
  // Location for storing downloaded packages
  // Type must be one of:
  // * local
  // * azure
  "packagePoolStorage": {
    // Local Pool
    "type": "local",
    // Local Pool Path
    // empty path defaults to `rootDir`/pool
    "path": ""

    // // Azure Azure Blob Storage Pool
    // "type": "azure",
    // "container": "pool1",

    // // Prefix (optional)
    // // Publishing under specified prefix in the container, defaults to no prefix (container root)
    // "prefix": "",

    // // Credentials
    // // Azure storage account access key to access blob storage
    // "accountName": "",
    // "accountKey": "",

    // // Endpoint URL
    // // See: Azure documentation https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string
    // // defaults to "https://<accountName>.blob.core.windows.net"
    // "endpoint": ""
  }

// End of config
}
