{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "scipm child -*- coding: utf-8 -*-",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "version": {
            "enum": [
                "1"
            ],
            "description": "scipm child package"
        },
        "scipmDependencies": {
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
                "^[a-zA-Z0-9](.*)$": {
                    "type": [
                        "null"
                    ]
                }
            }
        },
        "luaRequire": {
            "type": "array",
            "description": "example : IF ``mime`` THEN scipm build add code ``mime = require \"mime\";`` at top of SciTEStartup.lua (once)",
            "minItems": 0,
            "items": {
                "type": "string",
                "pattern": "^(.*)$",
                "minLength": 1
            }
        },
        "SciTEStartup": {
            "type": "object",
            "description": "exec lua command in SciTEStartup.lua",
            "additionalProperties": false,
            "properties": {
                "_use": {
                    "enum": [
                        "no",
                        "raw",
                        "dofile",
                        "filePath"
                    ],
                    "description": "exec lua in node raw or in node filePath. or dofile (else no)"
                },
                "raw": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "description": "raw lua code",
                    "minLength": 1
                },
                "filePath": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "description": "lua file to include",
                    "minLength": 1
                },
                "dofile": {
                    "type": [
                        "array"
                    ],
                    "description": "dofile path (items join by scipm scipm.data.path.sep)",
                    "minItems": 0,
                    "items": {
                        "type": "string",
                        "pattern": "^(.*)$",
                        "minLength": 1
                    }
                },
                "luaReportExtend": {
                    "type": [
                        "null",
                        "string"
                    ],
                    "description": "lua to add in package ``scipmHiddenDoString=`` report line",
                    "minLength": 1
                },
                "infoLuaFunctions": {
                    "type": "array",
                    "description": "list functions allowed by this package",
                    "items": {
                        "type": "object",
                        "description": "function info",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "function name",
                                "minLength": 1
                            }
                        },
                        "required": [
                            "name"
                        ]
                    }
                },
                "infoProps": {
                    "type": "array",
                    "description": "list props allowed by this package",
                    "items": {
                        "type": "object",
                        "description": "props info",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "props name",
                                "minLength": 1
                            },
                            "value": {
                                "type": "string",
                                "description": "props value allowed",
                                "minLength": 1
                            },
                            "default": {
                                "type": "string",
                                "description": "props default value",
                                "minLength": 1
                            },
                            "description": {
                                "type": "string",
                                "description": "props description",
                                "minLength": 1
                            }
                        },
                        "required": [
                            "name",
                            "value",
                            "default",
                            "description"
                        ]
                    }
                },
                "infoFiles": {
                    "type": "array",
                    "description": "list files by this package",
                    "items": {
                        "type": "object",
                        "description": "function info",
                        "additionalProperties": false,
                        "properties": {
                            "path": {
                                "type": "array",
                                "description": "items join by scipm scipm.data.path.sep",
                                "minItems": 1,
                                "items": {
                                    "type": "string",
                                    "pattern": "^(.*)$",
                                    "minLength": 1
                                }
                            }
                        },
                        "required": [
                            "path"
                        ]
                    }
                }
            },
            "required": [
                "_use",
                "raw",
                "filePath",
                "luaReportExtend",
                "infoLuaFunctions",
                "infoFiles",
                "infoProps"
            ]
        },
        "actions": {
            "type": "object",
            "description": "action to add in menu/context menu...",
            "additionalProperties": false,
            "patternProperties": {
                "^[a-zA-Z0-9](.*)$": {
                    "type": "object",
                    "additionalProperties": true,
                    "properties": {
                        "title": {
                            "type": "string",
                            "description": "default title in tool and context menu",
                            "minLength": 1
                        },
                        "description": {
                            "type": "string",
                            "description": "default description",
                            "minLength": 1
                        },
                        "pattern": {
                            "type": "array",
                            "minItems": 1,
                            "items": {
                                "type": "string",
                                "pattern": "^(.*)$",
                                "minLength": 1
                            }
                        },
                        "addToolsMenu": {
                            "type": "object",
                            "description": "add action in scite tool menu (switch pattern)",
                            "additionalProperties": false,
                            "properties": {
                                "allow": {
                                    "type": "boolean",
                                    "default": true
                                },
                                "addContextMenu": {
                                    "type": "boolean",
                                    "description": "action in context menu depend of action in tool menu (need command number)",
                                    "default": false
                                },
                                "command": {
                                    "type": "object",
                                    "description": "SciTE command subsystem",
                                    "additionalProperties": false,
                                    "properties": {
                                        "subsystem": {
                                            "type": "string",
                                            "enum": [
                                                "console",
                                                "windows",
                                                "shellexec",
                                                "luadirector",
                                                "htmlhelp",
                                                "winhelp",
                                                "immediate"
                                            ],
                                            "description": "see http://www.scintilla.org/SciTEDoc.html :: Command subsystem",
                                            "default": "console"
                                        },
                                        "shortcuts": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "description": "default shortcut. Null = no shortcut",
                                            "minLength": 1
                                        },
                                        "isFilter": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "enum": [
                                                null,
                                                "0",
                                                "1"
                                            ],
                                            "description": "The optional command.is.filter property states that the command modifies the current file so it may need to be read in after performing the command if load.on.activate is set.",
                                            "default": "null"
                                        },
                                        "saveBefore": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "enum": [
                                                null,
                                                "1",
                                                "2"
                                            ],
                                            "description": "If command.save.before is set to 1, SciTE automatically saves the file before execution. If it is set to 2, SciTE will not save the file, otherwise SciTE asks you",
                                            "default": "null"
                                        },
                                        "input": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "description": "On Windows, the optional command.input property specifies text that will be piped to the command. This may reference other properties; for example, command.input.0.*.cc=$(CurrentSelection) would pipe the current selection to the command processes. The command.input property is only supported for subsystem 0 (command line programs).",
                                            "default": "null"
                                        },
                                        "mode": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "description": "The command.mode property is a comma-separated list of flags / settings. Each mode setting can have an argument, separated from the setting name by a colon. For most of these, the argument portion is optional; if the setting name appears without an argument, this works the same as \"setting:yes\". If a setting is included in the command.mode but also appears as a separate command property, the mode property will be overridden. Similarly, if a single setting appears more than once with different arguments, the last valid argument takes priority. The supported command.mode settings are: filter - accepts keyword arguments yes and no, quiet - accepts keyword arguments yes and no, replaceselection - accepts yes, no, and auto, savebefore - accepts yes, no, and prompt, subsystem - console, windows, shellexec, lua, director, winhelp, htmlhelp, immediate, groupundo - yes or no, Currently, all of these except groupundo are based on individual properties with similar names, and so are not described separately here. The groupundo setting works with subsystem 3 (lua / director), and indicates that SciTE should treat any changes made by the command as a single undo action. A command that uses the groupundo setting should not change which buffer is active in the editor.",
                                            "default": "null"
                                        },
                                        "quiet": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "enum": [
                                                null,
                                                "1"
                                            ],
                                            "description": "A final command property that is currently supported only on windows is command.quiet. A value of 1 indicates that the command I/O should not be echoed to the output pane. This may be useful in combination with command.input and command.replace.selection.",
                                            "default": "null"
                                        },
                                        "replaceSelection": {
                                            "type": [
                                                "null",
                                                "string"
                                            ],
                                            "enum": [
                                                null,
                                                "0",
                                                "1",
                                                "2"
                                            ],
                                            "description": "The optional command.replace.selection can be used to specify that the command output should replace the current selection (or be inserted at the cursor location, if there is no selection)",
                                            "default": "null"
                                        },
                                        "cmd": {
                                            "type": [
                                                "string"
                                            ],
                                            "description": "command to exec (switch selected subsystems).",
                                            "minLength": 1
                                        }
                                    },
                                    "required": [
                                        "subsystem",
                                        "cmd",
                                        "shortcuts",
                                        "isFilter",
                                        "saveBefore",
                                        "input",
                                        "replaceSelection",
                                        "quiet",
                                        "mode"
                                    ]
                                }
                            },
                            "required": [
                                "allow",
                                "addContextMenu",
                                "command"
                            ]
                        }
                    },
                    "required": [
                        "pattern",
                        "addToolsMenu",
                        "title",
                        "description"
                    ]
                }
            }
        }
    },
    "required": [
        "version",
        "scipmDependencies",
        "luaRequire",
        "SciTEStartup",
        "actions"
    ]
}