Files
MonkeyCode/backend/pkg/vsix/vsix.go
2025-07-22 19:21:04 +08:00

73 lines
1.2 KiB
Go

package vsix
import (
"archive/zip"
"html/template"
"io"
)
func ValidateVsix(filename string) error {
f, err := zip.OpenReader(filename)
if err != nil {
return err
}
defer f.Close()
return nil
}
func ChangeVsixEndpoint(vsixFile, target, endpoint string, w io.Writer) error {
reader, err := zip.OpenReader(vsixFile)
if err != nil {
return err
}
defer reader.Close()
newWriter := zip.NewWriter(w)
defer newWriter.Close()
for _, file := range reader.File {
rc, err := file.Open()
if err != nil {
return err
}
defer rc.Close()
if file.Name == target {
writer, err := newWriter.Create(file.Name)
if err != nil {
return err
}
content, err := io.ReadAll(rc)
if err != nil {
return err
}
tmpl, err := template.New("package.json").Parse(string(content))
if err != nil {
return err
}
if err := tmpl.Execute(writer, map[string]any{
"defaultEndpoint": endpoint,
}); err != nil {
return err
}
} else {
writer, err := newWriter.Create(file.Name)
if err != nil {
return err
}
_, err = io.Copy(writer, rc)
if err != nil {
return err
}
}
}
err = newWriter.Close()
if err != nil {
return err
}
return nil
}