mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-15 21:04:46 +01:00
fix (patch): bundle issue on plugin patch
This commit is contained in:
parent
299ff86b54
commit
542ead9c25
1 changed files with 57 additions and 43 deletions
|
|
@ -340,46 +340,13 @@ func ServeFile(chroot string) func(*App, http.ResponseWriter, *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// case: patch must be apply because of a "StaticPatch" plugin
|
// case: patch must be apply because of a "StaticPatch" plugin
|
||||||
for _, patch := range Hooks.Get.StaticPatch() {
|
if f := applyPatch(filePath); f != nil {
|
||||||
patchFile, err := patch.Open(strings.TrimPrefix(filePath, "/"))
|
|
||||||
if err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
defer patchFile.Close()
|
|
||||||
patchFiles, _, err := gitdiff.Parse(patchFile)
|
|
||||||
if err != nil {
|
|
||||||
Log.Debug("ctrl::static cannot parse patch file - %s", err.Error())
|
|
||||||
break
|
|
||||||
} else if len(patchFiles) != 1 {
|
|
||||||
Log.Debug("ctrl::static unepected patch file size - must be 1, got %d", len(patchFiles))
|
|
||||||
break
|
|
||||||
}
|
|
||||||
origFile, err := WWWPublic.Open(filePath)
|
|
||||||
if err != nil {
|
|
||||||
Log.Debug("ctrl::static cannot open public file - %+v", err.Error())
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
originalBuffer, err := io.ReadAll(origFile)
|
|
||||||
if err != nil {
|
|
||||||
Log.Debug("ctrl::static cannot read public file - %+v", err.Error())
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var output bytes.Buffer
|
|
||||||
origFile.Close()
|
|
||||||
if err := gitdiff.Apply(
|
|
||||||
&output,
|
|
||||||
bytes.NewReader(originalBuffer),
|
|
||||||
patchFiles[0],
|
|
||||||
); err != nil {
|
|
||||||
Log.Debug("ctrl::static cannot apply patch - %s", err.Error())
|
|
||||||
break
|
|
||||||
}
|
|
||||||
head.Set("Content-Type", GetMimeType(filepath.Ext(filePath)))
|
head.Set("Content-Type", GetMimeType(filepath.Ext(filePath)))
|
||||||
head.Set("Cache-Control", "no-cache")
|
head.Set("Cache-Control", "no-cache")
|
||||||
head.Set("Pragma", "no-cache")
|
head.Set("Pragma", "no-cache")
|
||||||
head.Set("Expires", "0")
|
head.Set("Expires", "0")
|
||||||
res.WriteHeader(http.StatusOK)
|
res.WriteHeader(http.StatusOK)
|
||||||
res.Write(output.Bytes())
|
res.Write(f.Bytes())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -465,7 +432,13 @@ func ServeBundle(ctx *App, res http.ResponseWriter, req *http.Request) {
|
||||||
urls := req.URL.Query()["url"]
|
urls := req.URL.Query()["url"]
|
||||||
for i := 0; i < len(urls); i++ {
|
for i := 0; i < len(urls); i++ {
|
||||||
curPath := "assets" + strings.TrimPrefix(urls[i], "/assets/"+BUILD_REF)
|
curPath := "assets" + strings.TrimPrefix(urls[i], "/assets/"+BUILD_REF)
|
||||||
file, err := WWWPublic.Open(curPath + ".gz")
|
var file io.ReadCloser
|
||||||
|
var err error
|
||||||
|
if f := applyPatch(curPath); f != nil {
|
||||||
|
file = io.NopCloser(f)
|
||||||
|
fmt.Fprintf(res, "event: %s\n", "static::raw")
|
||||||
|
} else {
|
||||||
|
file, err = WWWPublic.Open(curPath + ".gz")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
file, err = WWWPublic.Open(curPath)
|
file, err = WWWPublic.Open(curPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -476,6 +449,7 @@ func ServeBundle(ctx *App, res http.ResponseWriter, req *http.Request) {
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(res, "event: %s\n", "static::gzip")
|
fmt.Fprintf(res, "event: %s\n", "static::gzip")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
fmt.Fprintf(res, "id: %s\n", urls[i])
|
fmt.Fprintf(res, "id: %s\n", urls[i])
|
||||||
fmt.Fprintf(res, "data: ")
|
fmt.Fprintf(res, "data: ")
|
||||||
b, _ := io.ReadAll(file)
|
b, _ := io.ReadAll(file)
|
||||||
|
|
@ -488,6 +462,46 @@ func ServeBundle(ctx *App, res http.ResponseWriter, req *http.Request) {
|
||||||
res.(http.Flusher).Flush()
|
res.(http.Flusher).Flush()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func applyPatch(filePath string) (file *bytes.Buffer) {
|
||||||
|
for _, patch := range Hooks.Get.StaticPatch() {
|
||||||
|
patchFile, err := patch.Open(strings.TrimPrefix(filePath, "/"))
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
defer patchFile.Close()
|
||||||
|
patchFiles, _, err := gitdiff.Parse(patchFile)
|
||||||
|
if err != nil {
|
||||||
|
Log.Debug("ctrl::static cannot parse patch file - %s", err.Error())
|
||||||
|
break
|
||||||
|
} else if len(patchFiles) != 1 {
|
||||||
|
Log.Debug("ctrl::static unepected patch file size - must be 1, got %d", len(patchFiles))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
origFile, err := WWWPublic.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
Log.Debug("ctrl::static cannot open public file - %+v", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
originalBuffer, err := io.ReadAll(origFile)
|
||||||
|
if err != nil {
|
||||||
|
Log.Debug("ctrl::static cannot read public file - %+v", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var output bytes.Buffer
|
||||||
|
origFile.Close()
|
||||||
|
if err := gitdiff.Apply(
|
||||||
|
&output,
|
||||||
|
bytes.NewReader(originalBuffer),
|
||||||
|
patchFiles[0],
|
||||||
|
); err != nil {
|
||||||
|
Log.Debug("ctrl::static cannot apply patch - %s", err.Error())
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return &output
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func InitPluginList(code []byte) {
|
func InitPluginList(code []byte) {
|
||||||
listOfPackages := regexp.MustCompile(`\t_?\s*\"(github.com/[^\"]+)`).FindAllStringSubmatch(string(code), -1)
|
listOfPackages := regexp.MustCompile(`\t_?\s*\"(github.com/[^\"]+)`).FindAllStringSubmatch(string(code), -1)
|
||||||
for _, packageNameMatch := range listOfPackages {
|
for _, packageNameMatch := range listOfPackages {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue