zeal安装dash的docset方法
2022-02-27 • 预计阅读时间 1 分钟
2022-02-27 • 预计阅读时间 1 分钟
由于zeal
支持的docset
太少了.虽然兼容Dash for macOS,但是这个需要自己稍微折腾下.在zeal issues#170作者给出了方法.但是zeal
一直没有纳入官方支持.
为了方便自己以后找离线文档,所以写了这么一段脚本,直接从Dash
的社区找对应的文档资料.由于zeal是用scoop
安装的.所以里面的docsets
的路径用的是scoop
目录下的.如果不是这个的话,需要自行调整了.
有如下的几个依赖:
其中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_contributed
的index.json
每天只会下载一次.