Public/Add-DashDocsetIndexEntry.ps1

function Add-DashDocsetIndexEntry
{
    param
    (
        [Parameter(Mandatory, Position = 0)]
        [ValidateScript( { Test-Path -Path $_ })]
        [string]$DocsetPath,

        [Parameter(Mandatory, Position = 1)]
        [string]$Name,

        [Parameter(Mandatory, Position = 2)]
        [ValidateSet('Annotation', 'Attribute', 'Binding', 'Builtin', 'Callback', 'Category', 'Class', 'Command', 'Component', 'Constant', 'Constructor', 'Define', 'Delegate', 'Diagram', 'Directive', 'Element', 'Entry', 'Enum', 'Environment', 'Error', 'Event', 'Exception', 'Extension', 'Field', 'File', 'Filter', 'Framework', 'Function', 'Global', 'Guide', 'Hook', 'Instance', 'Instruction', 'Interface', 'Keyword', 'Library', 'Literal', 'Macro', 'Method', 'Mixin', 'Modifier', 'Module', 'Namespace', 'Notation', 'Object', 'Operator', 'Option', 'Package', 'Parameter', 'Plugin', 'Procedure', 'Property', 'Protocol', 'Provider', 'Provisioner', 'Query', 'Record', 'Resource', 'Sample', 'Section', 'Service', 'Setting', 'Shortcut', 'Statement', 'Struct', 'Style', 'Subroutine', 'Tag', 'Test', 'Trait', 'Type', 'Union', 'Value', 'Variable', 'Word')]
        [string]$Type,

        [Parameter(Mandatory, Position = 3)]
        [string]$Path
    )

    $DatabasePath = Join-Path -Path $DocsetPath -ChildPath Contents -AdditionalChildPath Resources, docSet.dsidx

    sqlite3 $DatabasePath "INSERT OR IGNORE INTO searchIndex(name, type, path) VALUES ('$Name', '$Type', '$Path');"
}