zeal安装dash的docset方法

2022-02-27 • 预计阅读时间 1 分钟

由于zeal支持的docset太少了.虽然兼容Dash for macOS,但是这个需要自己稍微折腾下.在zeal issues#170作者给出了方法.但是zeal一直没有纳入官方支持.

为了方便自己以后找离线文档,所以写了这么一段脚本,直接从Dash的社区找对应的文档资料.由于zeal是用scoop安装的.所以里面的docsets的路径用的是scoop目录下的.如果不是这个的话,需要自行调整了. 有如下的几个依赖:

  • fzf
  • tar

其中tar如果使用较新的windows 10或者11的话,是自带的.

function search-zeal($doc){
    <#
.SYNOPSIS
    install zeal docset
.DESCRIPTION
    下载dash对应的docset
.PARAMETER doc
    如果指定了的话,不在选择,如果不指定则会通过fzf选择
.EXAMPLE
PS C:\> search-zeal mori
.EXAMPLE
search-zeal
.INPUTS
    none
.OUTPUTS
    zeal docsets
.NOTES

.LINK
    zeal
#>
    $zealPath = "$env:USERPROFILE\scoop\persist\zeal\docsets"
    try{
        $zealCache = "$env:USERPROFILE\.cache\zeal"
        $zealIndex = "$env:USERPROFILE\.cache\zeal\zeal.json"
        if (!(test-path $zealCache)) {
            mkdir $zealCache
        }
        $needDownload =$false
        if (test-path $zealIndex) {
            $f = Get-Item -path $zealIndex
            if ($f.LastWriteTime.Date -ne (Get-Date).Date) {
                $needDownload = $True
            }
        }else{
            $needDownload = $True
        }
        if ($needDownload) {
            (invoke-WebRequest http://sanfrancisco.kapeli.com/feeds/zzz/user_contributed/build/index.json ).content >  $zealIndex
        }
        $dashIndex = (Get-Content $zealIndex|ConvertFrom-json)
        $target
        if ($doc) {
            $target = ($dashIndex.docsets.PSObject.Properties.Where({$_.name -like $doc})).name
        }else{
            $target  = $dashIndex.docsets.PSObject.Properties|%{$_.name}|fzf
        }
        if (!$target) {
            return
        }
     
        $dwnUrl = "https://kapeli.com/feeds/zzz/user_contributed/build/$target/$($($dashIndex.docsets.$target).archive)"
        invoke-WebRequest $dwnUrl -OutFile "$zealPath\$($($dashIndex.docsets.$target).archive)" 
        tar -zxf "$zealPath\$($($dashIndex.docsets.$target).archive)" -C $zealPath 
        Write-Output "job done~!"
         
    }
    Catch {
        Write-Warning "o͝ops~!"
    }
}

user_contributedindex.json每天只会下载一次.

devPowerShellTips

wentao

写点代码,解决点问题。

推荐一些小工具

Windows下安装OpenSSH并启用Sftp