From 74b0727b64c09d95fb4e539f781b029f50e6a59c Mon Sep 17 00:00:00 2001 From: Kelvin Schoofs Date: Tue, 25 Sep 2018 18:34:23 +0200 Subject: [PATCH] Embed JSON schema settings for contributions.configurations into package.json --- package.json | 274 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 272 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c5af7a7..411a42e 100644 --- a/package.json +++ b/package.json @@ -136,8 +136,278 @@ "title": "SSH FS Configuration", "properties": { "sshfs.configs": { + "definitions": { + "fields": { + "name": { + "type": "string", + "description": "The unique name for this configuration" + }, + "label": { + "type": "string", + "description": "A display name used in some user interface places" + }, + "root": { + "type": "string", + "description": "The remote folder to act as root folder", + "default": "/" + }, + "host": { + "type": "string", + "description": "Hostname or IP address of the server" + }, + "port": { + "type": "number", + "description": "Port number of the server", + "default": 22 + }, + "username": { + "type": "string", + "description": "Username for authentication" + }, + "password": { + "type": [ + "string", + "boolean" + ], + "description": "Password for password-based user authentication" + }, + "privateKey": { + "type": "string", + "description": "String that contains a private key for either key-based or hostbased user authentication (OpenSSH format)" + }, + "privateKeyPath": { + "type": "string", + "description": "String that contains the path to a private key for either key-based or hostbased user authentication (OpenSSH format)" + }, + "passphrase": { + "type": [ + "string", + "boolean" + ], + "description": "For an encrypted private key, this is the passphrase used to decrypt it" + }, + "agent": { + "type": "string", + "description": "Path to ssh-agent's UNIX socket for ssh-agent-based user authentication (or 'pageant' when using Pagent on Windows)" + }, + "putty": { + "type": [ + "string", + "boolean" + ], + "description": "(Windows only) Use the settings from the given PuTTY session (set this to true to find one using the other settings)" + }, + "hop": { + "type": "string", + "description": "Use another SSH configuration as intermediate proxy (connection hopping)" + }, + "proxy": { + "type": "object", + "description": "Define a SOCKS 4 or SOCKS 5 proxy to connect through", + "required": [ + "host", + "port", + "type" + ], + "properties": { + "host": { + "type": "string", + "description": "The hostname of the proxy" + }, + "port": { + "type": "number", + "description": "The port of the proxy" + }, + "type": { + "description": "The type of the proxy (socks4/socks5)", + "enum": [ + "socks4", + "socks5" + ] + } + } + } + }, + "basic": { + "type": "object", + "properties": { + "label": { + "$ref": "#/properties/sshfs.configs/definitions/fields/label" + }, + "root": { + "$ref": "#/properties/sshfs.configs/definitions/fields/root" + }, + "hop": { + "$ref": "#/properties/sshfs.configs/definitions/fields/hop" + }, + "proxy": { + "$ref": "#/properties/sshfs.configs/definitions/fields/proxy" + } + } + }, + "authentication": { + "anyOf": [ + { + "$ref": "#/properties/sshfs.configs/definitions/authentication-types/password" + }, + { + "$ref": "#/properties/sshfs.configs/definitions/authentication-types/agent" + }, + { + "oneOf": [ + { + "$ref": "#/properties/sshfs.configs/definitions/authentication-types/key" + }, + { + "$ref": "#/properties/sshfs.configs/definitions/authentication-types/key-path" + } + ] + } + ] + }, + "authentication-types": { + "password": { + "type": "object", + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "$ref": "#/properties/sshfs.configs/definitions/fields/username" + }, + "password": { + "$ref": "#/properties/sshfs.configs/definitions/fields/password" + } + } + }, + "key": { + "type": "object", + "required": [ + "username", + "privateKey" + ], + "properties": { + "username": { + "$ref": "#/properties/sshfs.configs/definitions/fields/username" + }, + "privateKey": { + "$ref": "#/properties/sshfs.configs/definitions/fields/privateKey" + }, + "passphrase": { + "$ref": "#/properties/sshfs.configs/definitions/fields/passphrase" + } + } + }, + "key-path": { + "type": "object", + "required": [ + "username", + "privateKeyPath" + ], + "properties": { + "username": { + "$ref": "#/properties/sshfs.configs/definitions/fields/username" + }, + "privateKeyPath": { + "$ref": "#/properties/sshfs.configs/definitions/fields/privateKeyPath" + }, + "passphrase": { + "$ref": "#/properties/sshfs.configs/definitions/fields/passphrase" + } + } + }, + "agent": { + "type": "object", + "required": [ + "username", + "agent" + ], + "properties": { + "username": { + "$ref": "#/properties/sshfs.configs/definitions/fields/username" + }, + "agent": { + "$ref": "#/properties/sshfs.configs/definitions/fields/agent" + } + } + } + }, + "server-identification": { + "hostname": { + "required": [ + "host" + ], + "properties": { + "host": { + "$ref": "#/properties/sshfs.configs/definitions/fields/host" + }, + "port": { + "$ref": "#/properties/sshfs.configs/definitions/fields/port" + } + } + }, + "putty": { + "required": [ + "putty" + ], + "properties": { + "putty": { + "$ref": "#/properties/sshfs.configs/definitions/fields/putty" + } + } + } + } + }, "$schema": "http://json-schema.org/draft-06/schema#", - "$ref": "https://raw.githubusercontent.com/SchoofsKelvin/vscode-sshfs/27dec3277d9a50869c3d2a11db21da6e07a3223a/settingsschema.json", + "title": "A list of SSH FS configurations", + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/properties/sshfs.configs/definitions/basic" + }, + { + "oneOf": [ + { + "allOf": [ + { + "$ref": "#/properties/sshfs.configs/definitions/server-identification/hostname" + }, + { + "$ref": "#/properties/sshfs.configs/definitions/authentication" + } + ] + }, + { + "allOf": [ + { + "$ref": "#/properties/sshfs.configs/definitions/server-identification/putty" + }, + { + "anyOf": [ + { + "$ref": "#/properties/sshfs.configs/definitions/authentication" + }, + {} + ] + } + ] + } + ] + }, + { + "required": [ + "name" + ], + "properties": { + "name": { + "$ref": "#/properties/sshfs.configs/definitions/fields/name" + } + } + } + ] + }, "default": [ { "root": "/tmp", @@ -176,4 +446,4 @@ "ssh2": "^0.6.0", "winreg": "^1.2.4" } -} +} \ No newline at end of file