nvim/scripts/download-vim-syntax/main.go
Hoang Nguyen 880e199f43
Remove gohtmltmpl Vim syntax
gotmpl and helm have dedicated tree-sitter queries now.
2024-03-04 00:00:00 +07:00

72 lines
1.8 KiB
Go

package main
import (
"net/http"
"os"
"path/filepath"
"sync"
"github.com/neovim/go-client/nvim"
"github.com/sirupsen/logrus"
)
var nvim_config_dir string
var syntaxes = map[string]string{
"djot.vim": "https://github.com/jgm/djot/raw/main/editors/vim/syntax/djot.vim",
"jinja.vim": "https://gitlab.com/HiPhish/jinja.vim/-/raw/master/syntax/jinja.vim",
"kcl.vim": "https://github.com/kcl-lang/kcl.nvim/raw/main/syntax/kcl.vim",
"nftables.vim": "https://github.com/nfnty/vim-nftables/raw/master/syntax/nftables.vim",
"rescript.vim": "https://github.com/rescript-lang/vim-rescript/raw/master/syntax/rescript.vim",
"vifm.vim": "https://github.com/vifm/vifm.vim/raw/master/syntax/vifm.vim",
}
func main() {
logrus.SetFormatter(&logrus.TextFormatter{
DisableTimestamp: true,
DisableQuote: true,
})
logrus.SetOutput(os.Stderr)
logrus.SetLevel(logrus.InfoLevel)
// Intentionally don't handle any errors from this point (only log them to stderr).
// They're not really important in this small program.
vim, err := nvim.NewChildProcess(nvim.ChildProcessArgs("--embed"))
if err != nil {
logrus.Fatal(err)
}
if err := vim.ExecLua("return vim.fn.stdpath(...)", &nvim_config_dir, "config"); err != nil {
logrus.Fatal(err)
}
vim.Close()
var wg sync.WaitGroup
for name, url := range syntaxes {
wg.Add(1)
go func(name, url string) {
defer wg.Done()
resp, err := http.Get(url)
if err != nil {
logrus.Error(err)
return
}
defer resp.Body.Close()
out, err := os.OpenFile(filepath.Join(nvim_config_dir, "after", "syntax", name), os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0o644)
if err != nil {
logrus.Error(err)
return
}
defer out.Close()
_, err = out.ReadFrom(resp.Body)
if err != nil {
logrus.Error(err)
}
}(name, url)
}
wg.Wait()
}