mirror of
https://github.com/cooperspencer/gickup
synced 2025-02-22 08:51:08 +01:00
1107 lines
50 KiB
JSON
1107 lines
50 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
"id": "gickup_spec.json",
|
|
"type": "object",
|
|
"title": "Gickup configuration spec",
|
|
"description": "The Gickup configuration spec",
|
|
"properties": {
|
|
"cron": {
|
|
"type": "string",
|
|
"description": "The cron expression to run the backup, You can create and test the expression on https://crontab.guru/"
|
|
},
|
|
"log": {
|
|
"$ref": "#/definitions/log"
|
|
},
|
|
"metrics": {
|
|
"$ref": "#/definitions/metrics"
|
|
},
|
|
"source": {
|
|
"type": "object",
|
|
"description": "Configuration for all git hoster source endpoints",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"github": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"wiki": {
|
|
"$ref": "#/definitions/source/properties/wiki"
|
|
},
|
|
"starred": {
|
|
"$ref": "#/definitions/source/properties/starred"
|
|
},
|
|
"issues": {
|
|
"$ref": "#/definitions/source/properties/issues"
|
|
},
|
|
"gists": {
|
|
"$ref": "#/definitions/source/properties/gists"
|
|
},
|
|
"filter": {
|
|
"$ref": "#/definitions/filter"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"gitlab": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"wiki": {
|
|
"$ref": "#/definitions/source/properties/wiki"
|
|
},
|
|
"starred": {
|
|
"$ref": "#/definitions/source/properties/starred"
|
|
},
|
|
"issues": {
|
|
"$ref": "#/definitions/source/properties/issues"
|
|
},
|
|
"filter": {
|
|
"$ref": "#/definitions/filter"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"gitea": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"wiki": {
|
|
"$ref": "#/definitions/source/properties/wiki"
|
|
},
|
|
"starred": {
|
|
"$ref": "#/definitions/source/properties/starred"
|
|
},
|
|
"issues": {
|
|
"$ref": "#/definitions/source/properties/issues"
|
|
},
|
|
"filter": {
|
|
"$ref": "#/definitions/filter"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"gogs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"wiki": {
|
|
"$ref": "#/definitions/source/properties/wiki"
|
|
},
|
|
"starred": {
|
|
"$ref": "#/definitions/source/properties/starred"
|
|
},
|
|
"issues": {
|
|
"$ref": "#/definitions/source/properties/issues"
|
|
},
|
|
"filter": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lastactivity": {
|
|
"$ref": "#/definitions/filter/properties/lastactivity"
|
|
},
|
|
"stars": {
|
|
"$ref": "#/definitions/filter/properties/stars"
|
|
},
|
|
"excludeforks": {
|
|
"$ref": "#/definitions/filter/properties/excludeforks"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"onedev": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"issues": {
|
|
"$ref": "#/definitions/source/properties/issues"
|
|
},
|
|
"filter": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lastactivity": {
|
|
"$ref": "#/definitions/filter/properties/lastactivity"
|
|
},
|
|
"excludeforks": {
|
|
"$ref": "#/definitions/filter/properties/excludeforks"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"sourcehut": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"wiki": {
|
|
"$ref": "#/definitions/source/properties/wiki"
|
|
},
|
|
"filter": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lastactivity": {
|
|
"$ref": "#/definitions/filter/properties/lastactivity"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"bitbucket": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
},
|
|
"exclude": {
|
|
"$ref": "#/definitions/source/properties/exclude"
|
|
},
|
|
"include": {
|
|
"$ref": "#/definitions/source/properties/include"
|
|
},
|
|
"excludeorgs": {
|
|
"$ref": "#/definitions/source/properties/excludeorgs"
|
|
},
|
|
"includeorgs": {
|
|
"$ref": "#/definitions/source/properties/includeorgs"
|
|
},
|
|
"filter": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lastactivity": {
|
|
"$ref": "#/definitions/filter/properties/lastactivity"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"any": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/source/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/source/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/source/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/source/properties/user"
|
|
},
|
|
"username": {
|
|
"$ref": "#/definitions/source/properties/username"
|
|
},
|
|
"password": {
|
|
"$ref": "#/definitions/source/properties/password"
|
|
},
|
|
"ssh": {
|
|
"$ref": "#/definitions/source/properties/ssh"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/source/properties/sshkey"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"required": [
|
|
"url"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"destination": {
|
|
"type": "object",
|
|
"description": "Configuration for all git hoster destination endpoints",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"local": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "path to store your backup"
|
|
},
|
|
"structured": {
|
|
"type": "boolean",
|
|
"description": "if set to `true`, it checks out the repos in a more structured way, like `hoster/user|organization/repository`"
|
|
},
|
|
"zip": {
|
|
"type": "boolean",
|
|
"description": "zips the repository"
|
|
},
|
|
"keep": {
|
|
"type": "integer",
|
|
"description": "keeps x latest backups"
|
|
},
|
|
"bare": {
|
|
"type": "boolean",
|
|
"description": "clone the repository as a bare repository"
|
|
},
|
|
"lfs": {
|
|
"type": "boolean",
|
|
"description": "uses lfs to clone repositories"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"s3": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"endpoint": {
|
|
"type": "string",
|
|
"description": "The endpoint of the S3 server"
|
|
},
|
|
"structured": {
|
|
"type": "boolean",
|
|
"description": "if set to `true`, it checks out the repos in a more structured way, like `hoster/user|organization/repository`"
|
|
},
|
|
"bucket": {
|
|
"type": "string",
|
|
"description": "The bucket to store the backups in"
|
|
},
|
|
"accesskey": {
|
|
"type": "string",
|
|
"description": "The access key to authenticate against the S3 server"
|
|
},
|
|
"secretkey": {
|
|
"type": "string",
|
|
"description": "The secret key to authenticate against the S3 server"
|
|
},
|
|
"usessl": {
|
|
"type": "boolean",
|
|
"description": "Use SSL to connect to the S3 server"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"github": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/destination/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/destination/properties/token_file"
|
|
},
|
|
"organization": {
|
|
"$ref": "#/definitions/destination/properties/organization"
|
|
},
|
|
"force": {
|
|
"$ref": "#/definitions/destination/properties/force"
|
|
},
|
|
"visibility": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repositories": {
|
|
"$ref": "#/definitions/visibility/properties/repositories"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"gitlab": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/destination/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/destination/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/destination/properties/url"
|
|
},
|
|
"force": {
|
|
"$ref": "#/definitions/destination/properties/force"
|
|
},
|
|
"mirror": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"$ref": "#/definitions/mirror/properties/enabled"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"gitea": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/destination/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/destination/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/destination/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/destination/properties/user"
|
|
},
|
|
"createorg": {
|
|
"$ref": "#/definitions/destination/properties/createorg"
|
|
},
|
|
"lfs": {
|
|
"$ref": "#/definitions/destination/properties/lfs"
|
|
},
|
|
"force": {
|
|
"$ref": "#/definitions/destination/properties/force"
|
|
},
|
|
"mirror": {
|
|
"$ref": "#/definitions/mirror"
|
|
},
|
|
"visibility": {
|
|
"$ref": "#/definitions/visibility"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"gogs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/destination/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/destination/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/destination/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/destination/properties/user"
|
|
},
|
|
"createorg": {
|
|
"$ref": "#/definitions/destination/properties/createorg"
|
|
},
|
|
"force": {
|
|
"$ref": "#/definitions/destination/properties/force"
|
|
},
|
|
"mirror": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"$ref": "#/definitions/mirror/properties/enabled"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"visibility": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repositories": {
|
|
"$ref": "#/definitions/visibility/properties/repositories"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"onedev": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/destination/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/destination/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/destination/properties/url"
|
|
},
|
|
"organization": {
|
|
"$ref": "#/definitions/destination/properties/organization"
|
|
},
|
|
"force": {
|
|
"$ref": "#/definitions/destination/properties/force"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"sourcehut": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/definitions/destination/properties/token"
|
|
},
|
|
"token_file": {
|
|
"$ref": "#/definitions/destination/properties/token_file"
|
|
},
|
|
"url": {
|
|
"$ref": "#/definitions/destination/properties/url"
|
|
},
|
|
"user": {
|
|
"$ref": "#/definitions/destination/properties/user"
|
|
},
|
|
"sshkey": {
|
|
"$ref": "#/definitions/destination/properties/sshkey"
|
|
},
|
|
"force": {
|
|
"$ref": "#/definitions/destination/properties/force"
|
|
},
|
|
"visibility": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repositories": {
|
|
"$ref": "#/definitions/visibility/properties/repositories"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"source": {
|
|
"$id": "#/definitions/source",
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$id": "#/definitions/source/properties/token",
|
|
"type": "string",
|
|
"description": "The token to authenticate against the source"
|
|
},
|
|
"token_file": {
|
|
"$id": "#/definitions/source/properties/token_file",
|
|
"type": "string",
|
|
"description": "Alternatively, specify the token in a file, relative to current working directory when executed"
|
|
},
|
|
"url": {
|
|
"$id": "#/definitions/source/properties/url",
|
|
"type": "string",
|
|
"description": "The url to the source repository"
|
|
},
|
|
"user": {
|
|
"$id": "#/definitions/source/properties/user",
|
|
"type": "string",
|
|
"description": "The user you want to clone the repositories from. If you want to get everything from your user, leave out the user parameter and just use the token."
|
|
},
|
|
"organization": {
|
|
"$id": "#/definitions/source/properties/organization",
|
|
"type": "string",
|
|
"description": "The organization to clone the repositories from"
|
|
},
|
|
"username": {
|
|
"$id": "#/definitions/source/properties/username",
|
|
"type": "string",
|
|
"description": "The username to authenticate against the source"
|
|
},
|
|
"password": {
|
|
"$id": "#/definitions/source/properties/password",
|
|
"type": "string",
|
|
"description": "The password to authenticate against the source"
|
|
},
|
|
"ssh": {
|
|
"$id": "#/definitions/source/properties/ssh",
|
|
"type": "boolean",
|
|
"description": "Use ssh instead of https to clone the repositories"
|
|
},
|
|
"sshkey": {
|
|
"$id": "#/definitions/source/properties/sshkey",
|
|
"type": "string",
|
|
"description": "The path to the ssh key to use for cloning the repositories"
|
|
},
|
|
"exclude": {
|
|
"$id": "#/definitions/source/properties/exclude",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "A list of repositories to exclude from the backup"
|
|
},
|
|
"include": {
|
|
"$id": "#/definitions/source/properties/include",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "A list of repositories to include in the backup"
|
|
},
|
|
"excludeorgs": {
|
|
"$id": "#/definitions/source/properties/excludeorgs",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "A list of organizations to exclude from the backup"
|
|
},
|
|
"includeorgs": {
|
|
"$id": "#/definitions/source/properties/includeorgs",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "A list of organizations to include in the backup"
|
|
},
|
|
"wiki": {
|
|
"$id": "#/definitions/source/properties/wiki",
|
|
"type": "boolean",
|
|
"description": "Include the wiki in the backup"
|
|
},
|
|
"starred": {
|
|
"$id": "#/definitions/source/properties/starred",
|
|
"type": "boolean",
|
|
"description": "Include the starred repositories in the backup"
|
|
},
|
|
"issues": {
|
|
"$id": "#/definitions/source/properties/issues",
|
|
"type": "boolean",
|
|
"description": "Include the issues in the backup, only available for `local` destination"
|
|
},
|
|
"gists": {
|
|
"$id": "#/definitions/source/properties/gists",
|
|
"type": "boolean",
|
|
"description": "Include the gists in the backup"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"destination": {
|
|
"$id": "#/definitions/destination",
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"$id": "#/definitions/destination/properties/token",
|
|
"type": "string",
|
|
"description": "The token to authenticate against the destination"
|
|
},
|
|
"token_file": {
|
|
"$id": "#/definitions/destination/properties/token_file",
|
|
"type": "string",
|
|
"description": "Alternatively, specify the token in a file, relative to current working directory when executed"
|
|
},
|
|
"url": {
|
|
"$id": "#/definitions/destination/properties/url",
|
|
"type": "string",
|
|
"description": "The url to the destination repository"
|
|
},
|
|
"user": {
|
|
"$id": "#/definitions/destination/properties/user",
|
|
"type": "string",
|
|
"description": "The user/org you want to backup the repositories to"
|
|
},
|
|
"organization": {
|
|
"$id": "#/definitions/destination/properties/organization",
|
|
"type": "string",
|
|
"description": "The organization to backup the repositories to"
|
|
},
|
|
"sshkey": {
|
|
"$id": "#/definitions/destination/properties/sshkey",
|
|
"type": "string",
|
|
"description": "The path to the ssh key to use for pushing the repositories"
|
|
},
|
|
"createorg": {
|
|
"$id": "#/definitions/destination/properties/createorg",
|
|
"type": "boolean",
|
|
"description": "Create the organization if it does not exist"
|
|
},
|
|
"lfs": {
|
|
"$id": "#/definitions/destination/properties/lfs",
|
|
"type": "boolean",
|
|
"description": "Use lfs to push the repositories"
|
|
},
|
|
"force": {
|
|
"$id": "#/definitions/destination/properties/force",
|
|
"type": "boolean",
|
|
"description": "Force push the repositories"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"filter": {
|
|
"$id": "#/definitions/filter",
|
|
"type": "object",
|
|
"properties": {
|
|
"lastactivity": {
|
|
"$id": "#/definitions/filter/properties/lastactivity",
|
|
"type": "string",
|
|
"description": "Only clone repositories that have been active in the last x days. The value is a string that can be parsed by the time.ParseDuration function from the go standard library."
|
|
},
|
|
"stars": {
|
|
"$id": "#/definitions/filter/properties/stars",
|
|
"type": "integer",
|
|
"description": "Only clone repositories that have more than x stars"
|
|
},
|
|
"excludearchived": {
|
|
"$id": "#/definitions/filter/properties/excludearchived",
|
|
"type": "boolean",
|
|
"description": "Exclude archived repositories"
|
|
},
|
|
"excludeforks": {
|
|
"$id": "#/definitions/filter/properties/excludeforks",
|
|
"type": "boolean",
|
|
"description": "Exclude forked repositories"
|
|
},
|
|
"languages": {
|
|
"$id": "#/definitions/filter/properties/languages",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Only clone repositories that are written in one of the specified languages"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"visibility": {
|
|
"$id": "#/definitions/visibility",
|
|
"type": "object",
|
|
"properties": {
|
|
"repositories": {
|
|
"$id": "#/definitions/visibility/properties/repositories",
|
|
"type": "string",
|
|
"enum": [
|
|
"public",
|
|
"private"
|
|
],
|
|
"description": "The visibility of the repositories to clone"
|
|
},
|
|
"organizations": {
|
|
"$id": "#/definitions/visibility/properties/organizations",
|
|
"type": "string",
|
|
"enum": [
|
|
"public",
|
|
"private",
|
|
"limited"
|
|
],
|
|
"description": "The visibility of the organizations to clone"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"mirror": {
|
|
"$id": "#/definitions/mirror",
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"$id": "#/definitions/mirror/properties/enabled",
|
|
"type": "boolean",
|
|
"description": "Enable mirroring of the repositories"
|
|
},
|
|
"mirrorinterval": {
|
|
"$id": "#/definitions/mirror/properties/mirrorinterval",
|
|
"type": "string",
|
|
"description": "The interval to mirror the repositories. The value is a string that can be parsed by the time.ParseDuration function from the go standard library."
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"log": {
|
|
"$id": "#/definitions/log",
|
|
"type": "object",
|
|
"description": "Configure logging related settings (optional)",
|
|
"properties": {
|
|
"timeformat": {
|
|
"type": "string",
|
|
"description": "The time format to use in the logs, The basics for time formats can be found at https://yourbasic.org/golang/format-parse-string-time-date-example."
|
|
},
|
|
"file-logging": {
|
|
"type": "object",
|
|
"description": "Configure file logging (optional)",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"description": "The directory to store the logs in"
|
|
},
|
|
"file": {
|
|
"type": "string",
|
|
"description": "The file to store the logs in"
|
|
},
|
|
"maxage": {
|
|
"type": "integer",
|
|
"description": "The maximum age of the log file in days"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"metrics": {
|
|
"$id": "#/definitions/metrics",
|
|
"type": "object",
|
|
"description": "Configure metrics related settings (optional)",
|
|
"properties": {
|
|
"prometheus": {
|
|
"type": "object",
|
|
"description": "Configure prometheus metrics (optional)",
|
|
"properties": {
|
|
"endpoint": {
|
|
"type": "string",
|
|
"description": "The endpoint to expose the metrics on"
|
|
},
|
|
"listen_addr": {
|
|
"type": "string",
|
|
"description": "The address to listen on"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"heartbeat": {
|
|
"type": "object",
|
|
"description": "Configure heartbeat for services like https://healthchecks.io/ or https://deadmanssnitch.com/ (optional)",
|
|
"properties": {
|
|
"urls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A list of urls to check for heartbeat"
|
|
}
|
|
}
|
|
},
|
|
"push": {
|
|
"type": "object",
|
|
"description": "Configure pushgateways to get notifications on your phone or browser (optional)",
|
|
"properties": {
|
|
"ntfy": {
|
|
"type": "array",
|
|
"description": "Send notifications to ntfy.sh (optional)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The url to your nty server"
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"description": "The token to authenticate against the nty server"
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"description": "The user to authenticate against the nty server"
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"description": "The password to authenticate against the nty server"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"gotify": {
|
|
"type": "array",
|
|
"description": "Send notifications to gotify.net (optional)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The url to your gotify server"
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"description": "The token to authenticate against the gotify server"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|